non ho capito il![]()
non ho capito il![]()
ahahah
gesto scaramantico affinchè si trovi una soluzione al mio problema!
Heeeelp!
nell'evento metti
rs.Find = "orario<=" & tempo.del.timer
il tuo url sarà quindi
url=rs("url")
Un paio di consigli:Originariamente inviato da Veronica80
nn ci riesco proprio...xD
Sembra facile ma quando mi metto a farlo mi ingarbuglio...
io uso questo codice per collegare la mia dataGrid al db:
(ovviamente ho messo i riferimenti nel progetto e dichiarato le variabili cn e rs)codice:Cn.CursorLocation = adUseClient Cn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & App.Path & "\database\barmocci.mdb" Rs.Open "Select * from scaletta ORDER by orario", Cn, adOpenStatic, adLockOptimistic Set DataGrid1.DataSource = Rs
Quindi il recordset lo ho già...vedo i dati nella DataGrid...con tutta la scaletta, ma riesco a gestirli per i miei scopi....lo so....son tarata!codice:Dim Cn As New ADODB.Connection Dim Rs As New ADODB.Recordset![]()
1)
Non usare il driver di Access, ma il JET 4.0 con l'MDAC 2.5
soprattutto se distribuisci la tua applicazione il primo non è detto che sia installato, e poi il JET è sicuramente migliore e, come l'MDA 2.5 è già pre-installato su tutte le macchine da Windows 98 in poi.
2)
Non si deve più usare la 'vecchia' modalità di dichiarazione (che si usava con DAO), ma quella più moderna di ADO, facendo distinzione tra il momento in cui dichiari un oggetto ed il momento in cui lo devi usare, cioè lo istanzi. In pratica:
Prima si dichiarano gli oggetti:
Quando si deve usarli si crea l'istanza:codice:Dim CN as ADODB.Connection Dim RS as ADODB.Recordset
Nell'uso degli oggetti di ADO vi sono delle differenze sostanziali nelle due diverse modalità di dichiarazione.codice:Set CN = New ADODB.Connection Set RS = New ADODB.Recordset
3)
Nell'evento timer devi andarti a cercare se esiste un record che corrisponda all'ora del timer.
Scrivo la volo, quindi occhio ad eventuali errori:
codice:Private Sub Timer1_Timer() Dim orario as Date orario = Format(Time,"HH:NN") '<-!!! Verifica che il formato restituito sia corretto!!! Rem Se vuoi usare Find: rs.Find "orario=" & orario Rem Se invece vuoi usare Filter: rs.Filter = "orario=" & orario Rem Se esiste almeno un record apro la pagina corrispondente If not rs.EOF then WebBrowser1.Navigate rs.Fields("URL").Value End If End Sub![]()
grazie provo il tutto subito!
Sul fatto del driver è che io di solito uso ADO via codice ecc questo volta per comodità ho deciso di usare la dataGrid che nn ho MAI usato e nn so proprio come si usi!
anzi se mi passi anche il codice per usare il driver JET nella datagrid ti faccio il monumento![]()
per fare quelo che devi fare, a occhio direi che la datagrid non serve...
eh? Perchè no?
Cmq il codice di sopra funziona benissimo!
Ora ho l'ultimo dubbio...
ve lo spiego con un esempio che è sicuramente + chiaro!
Mettiamo che io imposti 12.30 e url http://www.html.it
se apro il form con la webBrowser alle 12.31 nn mi apre il sito...alchè dovrei usare una condizione tipo
if oraAttuale=> oraImpostata then...
ma così facendo mi crea conflitti se ci son altri orari dopo....
tipo se ho:
12.30
13.30
la condizione detta sopra è soddisfatta in entrambe i casi...
nn so se mi son spiegata...è un po complesso da dire....
se tu leggessi quello che ti si scrive...![]()
cosa pensi che faccia
rs.Find = "orario<=" & tempo.del.timer
????
...ed è corretto così, se vuoi aprire il sito ad un'orario prestabilito .Originariamente inviato da Veronica80
Cmq il codice di sopra funziona benissimo!
Ora ho l'ultimo dubbio...
Mettiamo che io imposti 12.30 e url http://www.html.it
se apro il form con la webBrowser alle 12.31 nn mi apre il sito...
Appunto. Bisogna gestire le due situazioni diverse utilizzando un flag affinché possa visualizzare il sito dell'orario precedente ma SOLO UNA VOLTA, altrimenti va a finire che il Timer ti continua ad aprire nel browser sempre l'ultimo sito, anche se è già aperto).Originariamente inviato da Veronica80
alchè dovrei usare una condizione tipo
if oraAttuale=> oraImpostata then...
ma così facendo mi crea conflitti se ci son altri orari dopo....
In pratica dovrai prendere l'ultimo orario (come dice Optime) ma SOLO all'avvio del programma, invece dopo deve procedere normalmente.
Attenzione: in tal caso devi ordinare il recordset sul campo orario altrimenti quando cerchi l'ultimo non è detto che sia quello che corrisponde esattamente all'ultimo come orario.
Puoi fare così:
1. Crei una variabile bool a livello di modulo, esempio:
Dim m_bIsStart As Boolean
che all'avvio del programma (Form_Load) la imposti sempre a True.
3. Nella routine Timer1_Timer() modifichi il codice, aggiungendo la parte in grassetto, in modo da testare questa variabile:
codice:Dim orario as Date orario = Format(Time,"HH:NN") Rem Sarà eseguita solo 1 volta all'avvio del programma If m_bIsStart Then Rem Prendi l'ultimo URL prima dell'orario corrente rs.Find = "orario<=" & orario m_bIsStart = False ' è l'avvio del programma: azzero il flag End If Rem il resto del codice rimane invariato.
![]()
gibra, così cerca i siti UNA sola volta, invece li deve cercare continuamente e caricarli solo se diversi dall'ultimo aperto
codice:... Rem Prendi l'ultimo URL prima dell'orario corrente rs.Find = "orario<=" & orario URL=rs("URL") If URL<>LastURL Then ' ... qui apri il sito LastURL=URL End If ...