[Visual Basic] Abfrage der Datenbank im interval

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von June, 4. Oktober 2011 .

  1. 4. Oktober 2011
    Abfrage der Datenbank im interval

    Hallo zusammen,

    Ich habe eine Listbox, welche die "online"-user listet. Mein wunsch ist es die liste aktuell zu halten, d.h. wenn ein user offline geht, soll sich die liste auch ändern und den benutzer entfernen.

    Ich habe mir das in etwa so vorgestellt:

    > DB abruf
    > ListBox mit inhalt füllen
    > 10 Sekunden warten
    > Listbox Clearen
    > Widerholen

    So würde sich wohl die Liste alle 10 sekunden aktualisieren

    Bitte korrigiert mich, wenn es eine einfachere methode gibt dieses Problem zu lösen.
    Ich habe zwar schon gegoogelt, aber nach über ner stunde rumprobieren kam ich nicht wirklich weiter.

    Peace, June
     
  2. 4. Oktober 2011
    AW: Abfrage der Datenbank im interval

    Du machst ein Timer stellst 10 Sekunden ein und aktuellisiert die Listbox mit den Aktuellen Daten aus der Datenbank
     
  3. 4. Oktober 2011
    AW: Abfrage der Datenbank im interval

    ich hab sowas schon ausprobiert, aber egal wie hoch ich den timer mache, die msg boxen poppen direkt nach dem schliessen immer wieder auf 1, 2, 1, 2, 1, 2,...

    Code:
    
     While 1 = 1
    
     Timer1.Interval = 100000
     Timer1.Start()
    
     MsgBox("1")
    
     Timer1.Stop()
    
     MsgBox("2")
     End While
    
    

    Ich bin nicht so der VB pro
     
  4. 4. Oktober 2011
    AW: Abfrage der Datenbank im interval

    Du musst den Code den du alle 10 sekunden Ausführen lassen möchtest, in das Timer Event packen (klick mal doppelt auf das Timer Symbol im Designer und schreib den Code in dieses Event)
     
  5. 4. Oktober 2011
    AW: Abfrage der Datenbank im interval

    Hier mein Quelltext; Leider öffnet nichtmal ein Form oder ne MsgBox. Es passiert quasi nichts

    Code:
    Public Class Form1
     Private Sub Form1_Load(ByVal sender As System.Object _
     , ByVal e As System.EventArgs) _
     Handles MyBase.Load
     While 1 = 1
     Timer1.Interval = 1
     Timer1.Start()
     Timer1.Stop()
     End While
     End Sub
    
     Private Sub Timer1_Tick(ByVal sender As System.Object _
     , ByVal e As System.EventArgs) _
     Handles Timer1.Tick
     MsgBox("1")
     End Sub
    End Class
    
     
  6. 4. Oktober 2011
    AW: Abfrage der Datenbank im interval

    Ok, ich hab jetzt eine Lösung, hat nicht viel gefehlt. Danke für die Hilfestellung

    Hier die Lösung:
    Code:
    
    Public Class Form1
     Private Sub Form1_Load(ByVal sender As System.Object _
     , ByVal e As System.EventArgs) _
     Handles MyBase.Load
     While 1 = 1
     Timer1.Enabled = True
     Timer1.Interval = 10000 ' 1000 = 1 Sekunde | 10000 = 10 Sekunden
     Timer1.Start()
     Application.DoEvents()
     End While
     End Sub
    
     Private Sub Timer1_Tick(ByVal sender As System.Object _
     , ByVal e As System.EventArgs) _
     Handles Timer1.Tick
     MsgBox("bla..")
     End Sub
    End Class
    
    
     
  7. 4. Oktober 2011
    AW: Abfrage der Datenbank im interval

    Funktioniert zwar, jedoch öffnet sich die Form nicht, weil er noch in der schleife hängt, gibts da vielleicht ne andere Möglichkeit informationen alle paar sekunden aus der Datenbank abzugreifen?
     
  8. 4. Oktober 2011
    AW: Abfrage der Datenbank im interval

    Benutze keine while scleifen, sondern stoße den Timer nur 1 mal an und schreib als letzte Anweisung in deine Tick-Methode Timer1.Start()

    Gruß,
    Figger
     
  9. 4. Oktober 2011
    AW: Abfrage der Datenbank im interval

    hab jetzt nur folgendes im Load Event:

    Code:
     
    loop_timer.Interval = 5000
     loop_timer.Start()
     Application.DoEvents()
    
    und im Timer.Tick Event
    Code:
    
    MsgBox("1")
    
    
    funktioniert problem los, danke für den Tipp. Aber noch ne letzte frage, habe ich das auch richtig gemacht? Nicht das im Hintergrund irgendwas voll läuft.
     
  10. 4. Oktober 2011
    AW: Abfrage der Datenbank im interval

    Wieso die While schleife?
    Code:
    Public Class Form1
     Private Sub Form1_Load(ByVal sender As System.Object _
     , ByVal e As System.EventArgs) _
     Handles MyBase.Load
     Timer1.Enabled = True
     Timer1.Interval = 10000 ' 1000 = 1 Sekunde | 10000 = 10 Sekunden
     Timer1.Start()
     End Sub
    
     Private Sub Timer1_Tick(ByVal sender As System.Object _
     , ByVal e As System.EventArgs) _
     Handles Timer1.Tick
     MsgBox("bla..")
     End Sub
    End Class
    Sollte reichen.
    PS: Bennene deine Objekte (Form1, Timer1 etc...), sonst kommst du ganz schnell durcheinander.
    //Edit: Das kommt davon wenn man mehrere Threads gleichzeitig öffnet und nacheinander abarbeitet -> Zu lahm
     
  11. 4. Oktober 2011
    AW: Abfrage der Datenbank im interval

    hab meine Objekte immer alle benannt, hab ja schließlich über 1500 Zeilen code mittlerweile

    Thread kann geschlossen werden, ich brauchte ja netmal ne schleife
     
  12. 7. Oktober 2011
    AW: Abfrage der Datenbank im interval

    Das beste ist du packst das ganze noch in einen "Backgroundworker-Prozess". Dann arbeitet die Form und dein Script.

    Also schaust du Links bei den Controls wirst du auch Backgroundworker finden.
    Die while kannst du dir sparen, weil ein Timer immer unendlich oft läuft und jeden "Tick" dein Code ausführt.

    Also einfach:
     
  13. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.