Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Formular automatisch aktualisieren

Viele Anwendungen erfordern die automatische Aktualisierung von in Formularen angezeigten Daten. Ein Beispiel ist eine Lagerverwaltung mit mehreren Arbeitspltzen, bei denen der Mitarbeiter in der Auftragsannahme immer ber den aktuellen Bestand informiert ist, weil die Mitarbeiter im Lager Bestandsnderungen immer sofort eingeben. Ein einfacheres Beispiel ist eine Liste von Terminen, die neue Termine sofort anzeigt und Termine, die in der Vergangenheit liegen, einfach ausblendet.

Beispieldatenbank

Die Beispieldatenbank enthlt eine Tabelle namens tblTermine mit rudimentren Termindaten sowie ein Formular namens frmTermine zur Anzeige der Termine.

Aktuelle Terminanzeige

Das Formular frmTermine (siehe Abbildung 1) soll immer alle Termine anzeigen, die nicht bereits in der Vergangenheit liegen.

Abbildung 1: Formular zur Anzeige von Terminen

Das setzt eine Abfrage als Datenherkunft voraus, die alle Termine aussortiert, deren Datum und Zeit in der Vergangenheit liegen:

SELECT TerminID, Termin, Datum, Startzeit, Endzeit, Erstellungsdatum

FROM tblTermine

WHERE Datum>Date() OR (Datum=Date() AND Startzeit>=Time())

Damit das Formular immer die aktuellen Datenstze anzeigt, also regelmig solche Datenstze aussortiert, deren Startdatum in die Vergangenheit rutscht, whrend die Termine angezeigt werden, verwenden Sie einfach die Eigenschaft Zeitgeberintervall sowie die Ereigniseigenschaft Bei Zeitgeber.

Fr die Eigenschaft Zeitgeberintervall tragen Sie das Zeitintervall ein, nach dem das Ereignis Bei Zeitgeber ausgelst werden soll. Datei entspricht ein Wert von 1000 einem Zeitintervall von einer Sekunde. Fr ein Intervall von einer Minute tragen Sie hier also einen Wert von 60.000 ein.

Fr die Ereigniseigenschaft Bei Zeitgeber hinterlegen Sie die folgende Prozedur:

Private Sub Form_Timer()

    Me.Requery

End Sub

Durch diese Prozedur wird das Formular nach Ablauf eines jeden Zeitintervalls aktualisiert.

Sie knnen die Prozedur natrlich noch verfeinern, indem Sie dafr sorgen, dass nach der Aktualisierung noch der vorher aktivierte Datensatz angezeigt wird:

Private Sub Form_Timer()

    Dim AktuellerDatensatz As Long

    AktuellerDatensatz = Me!TerminID

    Me.Requery

    Me.RecordsetClone.FindFirst "TerminID = " & AktuellerDatensatz

    Me.Bookmark = Me.RecordsetClone.Bookmark

End Sub

Achtung: Die Lsung macht natrlich nur dann Sinn, wenn die Benutzer nicht mit den angezeigten Daten arbeiten, da dies bei der stndigen Aktualisierung etwas nervig werden knnte. Zur Sicherheit knnen Sie auch ein Listenfeld zur Anzeige der Termine verwenden.

© 2003-2015 André Minhorst Alle Rechte vorbehalten.