Hallo wesselo,
... ähm... ich weiß zwar nicht ganz genau, wie du das mit dem "Schließen" einer Datenbank meinst, aber mit folgendem Code könntest du schon mal dein Timeout realisieren (Ich benutze ihn für Zeitaktualisierungen in bestimmten Anwendungen).
Wenn du mit DATE/TIME eine Abfrage einfügst, kannst du dann Funktionen ausführen...
Code: Alles auswählen
Sub runTimer()
Dim nCurrentTime as Long, lSec as Long, lMin as Long, lHour as Long
Dim sSec as String, sMin as String, sHour as String
bTimeRunning = True
nCurrentTime = Timer
Do While bTimeRunning
If nCurrentTime = Timer Then
Wait 100
Else
nCurrentTime = Timer
lSec = nCurrentTime
lMin = Int(lSec/60)
lSec = lSec Mod 60
lHour = Int(lMin/60)
lMin = lMin Mod 60
sSec = trim(Str(lSec))
sMin = trim(Str(lMin))
sHour = trim(Str(lHour))
If Len(sSec) < 2 Then sSec = "0" & sSec
If Len(sMin) < 2 Then sMin = "0" & sMin
If Len(sHour) < 2 Then sHour = "0" & sHour
txt_time.text = "[" & Date & " " & sHour & ":" & sMin & ":" & sSec & "]"
End If
Loop
End Sub
Bemerkung: Wenn man sich die Funktion mal genauer anschaut, sieht man eine Endlosschleife... d.h., man könnte bei "einfachem" Einfügen in einen bestehenden Code, nichts weiteres Ausführen.
Dies zu umgehen ist aber relativ leicht:
Man muß irgendein Objekt erstellen, dass die "setFocus"-Methode unterstützt (z.B. ein Textfeld), verbindet dessen Objekt-Ereignis "bei Fokuserhalt" mit oben genannter Funktion und erstellt eine SUB, die bei Programmstart den Fokus auf dieses Objekt legt... Vóila: Die Funktion startet im Hintergrund und das Programm ist wieder ansprechbar.
Und mit einem EventHandler für die Maus/Keyboard, könnte man dann bei Bewegungen/Tastaturereignissen eine Zeit-Variable für die oben eingefügte Abfrage aktualisieren. (ungetestet, aber müßte gehen)
Zwecks der Datenbank-"Schließung": Falls du mit deinem Dialog/Formular einen Mehrbenutzer-Betrieb vorhast, könntest du dann bei "Timeout" z.B. einfach das angegebene Passwort für die Datenbankverbindungen auf Null setzen/bzw. eine boolesche Variable auf False (und die DB-Kommunikation geht dann ausschließlich, wenn über eine IF > "True" gegeben ist).
Lg, Marci
[Edit]