BEISPIEL
Kapitel 3: Formulare und Steuerelemente
Ereignisroutine (Event-Handler) Ereigniseigenschaft (deutsch)
Dirty(Cancel As Integer) Bei Änderung
Error(DataErr As Integer, Response As Integer) Bei Fehler
Timer() Bei Zeitgeber
Tabelle 3.10 Weitere wichtige Ereignisse des Form-Objekts
Error
Dieses Ereignis tritt dann ein, wenn in Microsoft Access ein Laufzeitfehler erzeugt wird. Das gilt auch für
Fehler der Microsoft Jet Datenbank-Engine, leider aber nicht für Laufzeitfehler im VBA-Code!
Mit einem Error-Event-Handler können Sie eine Microsoft Access-Fehlermeldung abfangen und statt-
dessen eine benutzerdefinierte Meldung anzeigen. Der übermittelte Fehlercode DataErr erlaubt eine kon-
krete Auswertung der Fehlerursache.
Weitergehende Informationen und konkrete Beispiele zu den sehr umfangreichen Möglichkeiten der
Fehlerbehandlung finden Sie in Kapitel 16.
Timer
Timer-Ereignisse treten in gleich bleibenden Intervallen auf, deren Länge mit der Eigenschaft TimerInterval
des Formulars festzulegen ist. TimerInterval gibt das Intervall in Millisekunden an (0 bis 65.535 Millisekun-
den). Ist der Wert null (0), tritt das Timer-Ereignis nicht ein.
Wenn Sie die Eigenschaft:
TimerInterval = 1000
zugewiesen haben (z.B. im
Load
-Event), »nervt« Sie die folgende Ereignisbehandlung mit einem Piepton im
Sekundentakt:
Private Sub Form_Timer()
Beep
End Sub
Methoden
Im Vergleich zur Vielzahl der Eigenschaften und Ereignisse sind die einem Form-Objekt standardmäßig zur
Verfügung stehenden Methoden auf relativ wenige beschränkt:
Methode Erklärung
Move Left [,Top, Width, Height] Verschiebt das Formular und verändert Abmessungen
SetFocus Setzt den Fokus auf das Formular
GoToPage seite [,links,oben] Setzt Fokus auf bestimmte Seite des Formulars
Tabelle 3.11 Wichtige Methoden des Form-Objekts
146
BEISPIEL
HINWEIS
Methode Erklärung
Recalc Aktualisiert alle berechneten Controls
Refresh Aktualisiert Datensätze ohne erneute Abfrage
Repaint Aktualisiert die Bildschirmanzeige
Requery Aktualisiert Datensätze mit erneuter Abfrage
Undo Macht Änderung an Datensatz rückgängig
Tabelle 3.11 Wichtige Methoden des Form-Objekts (Fortsetzung)
GoToPage und SetFocus
Beide Methoden beziehen sich auf die Verlagerung des Fokus innerhalb bzw. zwischen Formularen und
Steuerelementen.
GoToPage setzt den Fokus auf das erste Steuerelement einer bestimmten Seite des aktiven Formulars. Die
Argumente links und oben geben den Abstand (in Twips) vom linken bzw. oberen Fensterrand zum ange-
zeigten Teil der Seite an. Beide Argumente haben eigentlich nur bei den Formularen Bedeutung, deren
Seiten breiter als das Microsoft Access-Anwendungsfenster sind. Einen Seitenumbruch erzeugen Sie in der
Entwurfsansicht mit dem Steuerelement (Control) Seitenumbruch. Die DefaultView-Eigenschaft des
Formulars sollte dazu auf 0 eingestellt sein (Standardansicht = Einzelnes Formular).
Die Anweisung:
Forms!Reisen.GoToPage 3, 1000, 500
setzt den Fokus auf die dritte Seite des Formulars
Reisen
an die Position 1000 (linker Randabstand) und 500
(oberer Randabstand).
Mit SetFocus können Sie den Fokus nur auf ein sichtbares Formular bzw. Steuerelement setzen. Ein Formu-
lar und seine Steuerelemente bleiben so lange unsichtbar, bis das Load-Event des Formulars abgeschlossen
ist. Dies hat zur Folge, dass im Load-Ereignis vor der SetFocus- die Repaint-Methode verwendet werden
muss. Enthält das Formular Steuerelemente, deren Enabled-Property True ist (was in der Regel der Fall sein
dürfte), können Sie den Fokus nicht auf das Formular selbst, sondern nur auf eines der Controls setzen.
Versuchen Sie es trotzdem, so erhält das Steuerelement den Fokus, das ihn zuletzt besaß. Mit SetFocus
können Sie den Fokus auch auf ein Unterformular setzen, welches selbst eine Art Control ist. Sie können
den Fokus auch einem Steuerelement in einem Unterformular zuordnen, indem Sie ihn zunächst auf das
Unterformular und anschließend auf das Control setzen.
Da die Anwendung von SetFocus sich nicht nur auf Formulare, sondern vor allem auf Steuerelemente bezieht,
sind entsprechende Beispiele erst später ( Abschnitt »Steuerelemente«, Seite 163) zu finden.
Recalc, Refresh, Repaint und Requery
Diese Methoden haben mit der Aktualisierungen des Formulars bzw. der angebundenen Datensätze zu tun.
147
Das Form-Objekt
BEISPIEL
BEISPIEL
BEISPIEL
Kapitel 3: Formulare und Steuerelemente
Recalc aktualisiert sofort alle berechneten Steuerelemente eines Formulars (
F9
-Taste). Berechnete Steuer-
elemente unterscheiden sich von den gebundenen (Bound Controls) dadurch, dass sie keine gespeicherten
Daten anzeigen, sondern das Ergebnis einer Berechnung.
Verwendung von
Recalc
Sub Lager_AfterUpdate()
Forms!Rechnungen.Recalc
End Sub
Refresh aktualisiert unmittelbar die Datensätze der RecordSource-Eigenschaft (Datenherkunft) des Formu-
lars. Access aktualisiert Datensätze automatisch. Refresh bezieht sich lediglich auf Änderungen, die an
Datensätzen der aktuellen Gruppe vorgenommen wurden, und fragt die Datenbank nicht erneut ab (dafür
verwenden Sie die Requery-Methode).
Verwendung von
Refresh
Private Sub Form_Activate()
Forms!Personen.Refresh
End Sub
Repaint aktualisiert die Bildschirmanzeige des Formulars (z.B. auch alle erforderlichen Neuberechnungen
der Steuerelemente). Im Unterschied zu Refresh aktualisiert Repaint lediglich dann den Bildschirm, wenn
dessen Aktualisierung dadurch verzögert wurde, dass Microsoft Access zwischenzeitlich andere Aufgaben
ausführen musste. Repaint unterscheidet sich von der Methode Echo des DoCmd-Objekts darin, dass eine
sofortige einzelne Bildschirmaktualisierung erzwungen wird, während Echo die Aktualisierung ein- oder
ausschaltet.
Requery ist ebenso wie für Formulare auch für Steuerelemente von Bedeutung. Diese Methode aktualisiert
die einem Formular/Steuerelement zugrunde liegenden Daten durch erneutes Abfragen der Datensatzquelle
(RecordSource) des Formulars. Folgende Schritte werden dabei ausgeführt:
Erneutes Ausführen der Abfrage.
Anzeigen aller neuen oder geänderten Datensätze oder Entfernen gelöschter Datensätze aus der Tabelle.
Aktualisieren der angezeigten Datensätze, die auf den Änderungen der Filter-Property des Formulars
basieren.
Aktualisieren mit
Requery
Sub requeryListe()
Dim liste As Control
Set liste = Forms!Kunden!Kundenliste
liste.Requery
End Sub
148

Get Microsoft Office Access 2007-Programmierung - Das Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.