refresh problem

cybergnom

Mitglied
Hallo,

ich versuche gerade ien VB-Prog zu schreiben, dass mir alle 10 Minuten den Online-Status von Domains überprüft.

Dazu muss ich einen Timer setzen, der das Form nach 10 Minuten refresht, damit die überprüfung regelmäßig durchgeführt werden kann.

Ich habe es bisher so versucht:


Private Sub Timer1_Timer()
Dim i As Integer
i = 5
i = i - 1
If i <= 0 Then
Me.Refresh
i = 10
End If

End Sub


Die 5 Sekunden habe ich nur zum testen gewählt.

Warum läd er mit mein Form jetzt nicht neu?

Wie schaff ich es, dass mein Form sich ständig selbst aktualisiert?

MfG
cyber
 
Hi !

Auf welches Intervall hast du den Timer gestellt?
Private Sub Timer1_Timer()
Dim i As Integer
i = 5 <-------------------------- !?
i = i - 1
If i <= 0 Then
Me.Refresh
i = 10
End If

End Sub

Sonst hast Du ein kleines Problem mit deinem Timer-Code. Dieser wird immer wieder ausgeführt (bei jedem Intervall) und du setzt jedes mal am Anfang i auf 5 und dann wieder einen runter... aber i wird so nie <= 0 werden.. daher wird auch nie die IF-Bedingun erfüllt und folglich nie "refreshed".

Eigentlich reicht es wenn du im Timer-Intervall die Aktualisierungszeit einstellst. Dann einfach nur Me.Refresh in den Timer schreibst. Es ist wichtig das der Timer auch eingeschaltet ist.. ich glaube standartmäßig ist der ausgeschaltet.

Hoffe das hilft die weiter :)
Gruß,
André :)
 
Hallo,

mein kompletter Code sieht nun so aus:


Dim i As Integer

Private Sub Form_Load()

Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
Set conn = New ADODB.Connection
conn.Open "Provider=MSDASQL.1;Persist Security Info=False;Data Source=domain_check"

Dim ergebnis As String
Dim htmlcode As String
i = 5

'Abfrage ausführen und Daten in das Objekt laden:
rs.Open "SELECT * FROM domains", conn, adOpenStatic, adLockPessimistic
'Prüfen, ob Daten im Recordset enthalten sind:

If rs.RecordCount > 0 Then
'An den Anfang springen:
rs.MoveFirst
'Jede Zeile mit einer Schleife durchgehen:
Do While Not rs.EOF
'Feldinhalt aus dem aktuellen Datensatz ausgeben:
List1.AddItem (CStr(rs.Fields("domain")))

htmlcode = Inet1.OpenURL("http://www." & CStr(rs.Fields("domain")))

If htmlcode <> "" Then
ergebnis = "ONLINE"
Else
ergebnis = "OFFLINE"
End If
List1.AddItem (ergebnis)
'In die nächste Zeile springen:
rs.MoveNext
Loop
End If

rs.Close
Set rs = Nothing
End Sub


Private Sub Timer1_Timer()
If i <= 0 Then
me.Refresh
End If
i = i - 1
End Sub


Beim Timer steht "enabled" auf "true" also müsste er eigentlich eingeschlatet sein.
Das Intervall habe ich auf 1000 (ist doch dann eine Sekunde, oder?) gesetzt.

Aber es passiert nix... Wenn ich in der Datenbank was ändere, sollen die Änderungen (z.B. anderer domain-Name, neuer Eintrag, usw.) nach einem Refresh auch in dem Form angezeigt werden. Werden sie aber nicht...
Mache ich vielleicht etwas anderes falsch?

MfG
cyber
 
Hallo!

Also der Code sieht eigentlich okay aus... mir fällt zumindest nichts falsches auf. Aber muss nich hinter das Me.Refresh Klammern? Also me.Refresh() Dazu muss das auch genau so heißen wie die Form.

Teste mal ob es dann vielleicht läuft!

Gruß,
André :)
 
Hallo André,

ich hab das ganze jetz ziemlich unkonventionell gelöst...

Hab einfach den Code aus dem form_load() in den timer reinkopiert... funktioniert wunderbar :)

MfG
Bastian
 

Neue Beiträge

Zurück