Nachdem Sie im ersten Teil dieser Artikelreihe gelernt haben, wie Sie die Reihenfolge der auftretenden Ereignisse beim öffnen und Schließen von Formularen samt Unterformular ermitteln, schauen wir uns in diesem Teil genauer an, was beim öffnen eines Formulars geschieht und welche Aktionen Sie in den verschiedenen Ereignisprozeduren unterbringen können.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 1205_EreignisseInFormularen_2.mdb.
Ereignisse beim öffnen eines Formulars
Schauen wir uns nun im Detail an, was beim öffnen eines Formulars geschieht und was Sie mit den ausgelösten Prozeduren anfangen können.
Das Ereignis Beim öffnen
Dieses Ereignis wird beim öffnen eines Formulars als Erstes ausgelöst. Damit dies geschieht, stellen Sie den Wert der Ereigniseigenschaft Beim öffnen auf den Wert [Ereignisprozedur] ein und klicken auf die Schaltfläche mit den drei Punkten, um die durch das Ereignis ausgelöste Ereignisprozedur anzulegen. Diese sieht zunächst so aus:
Private Sub Form_Open(Cancel As Integer) End Sub
Es bietet einen Parameter namens Cancel, mit dem sich das öffnen abbrechen lässt, und das ist einer der wesentlichen Unterschiede zum Ereignis Form_Load, das wir gleich vorstellen.
Das Ereignis Beim Laden
Dieses Ereignis wird nach dem Ereignis Form_Open ausgelöst. Der wesentliche Unterschied zwischen beiden Ereignissen ist, dass Sie das öffnen des Formulars im Ereignis Beim öffnen abbrechen können. Außerdem bietet das Form_Load-Ereignis die Möglichkeit, die angezeigten Daten bereits beim Laden per VBA-Code anzupassen.
öffnungsvorgang abbrechen
Wenn Sie den Parameter Cancel auf den Wert True einstellen, wird das Formular gar nicht erst geöffnet – probieren Sie es aus:
Private Sub Form_Open(Cancel As Integer) Cancel = True End Sub
Natürlich macht es keinen Sinn, ein Formular mit einer Prozedur auszustatten, die dieses sofort wieder schließt. Dafür sollte es schon eine entsprechende Bedingung geben – zum Beispiel, dass das Formular keine Daten enthält. Dies lässt sich wie folgt realisieren:
Private Sub Form_Open(Cancel As Integer) If Me.Recordset.EOF Then MsgBox "Das Formular enthält keine Daten." Cancel = True End If End Sub
Das Recordset-Objekt ermöglicht den Zugriff auf die Daten des Formulars. Wenn die Eigenschaft EOF wahr ist, bedeutet dies, dass der Datensatzzeiger sich hinter dem letzten Datensatz befindet, was gleichbedeutend mit einer leeren Datenherkunft ist. In diesem Fall soll eine Meldung erscheinen und der Parameter Cancel auf den Wert True eingestellt werden, damit das Formular nach der Anzeige der Meldung gar nicht erst geöffnet wird.
Wie können Sie dies ausprobieren Indem Sie das Formular mit der DoCmd.OpenForm-Methode öffnen und dabei eine WhereCondition übergeben, die garantiert für keinen Datensatz der Datenherkunft gilt. Ein passender Kandidat für eine solche Bedingung lautet 1=2. Setzen Sie die folgende Anweisung im Direktbereich des VBA-Editors ab:
DoCmd.OpenForm "frmOhneDaten", WhereCondition:="1=2"
Die Meldung erscheint wie erwartet, aber leider zieht der Aufruf auch noch einen Fehler nach sich (siehe Bild 1). Um diesen Fehler zu verhindern, müssen Sie die DoCmd.OpenForm-Methode in eine kleine Fehlerbehandlung integrieren. Diese sorgt dafür, dass im Falle des Fehlers 2501 keine Meldung angezeigt wird, sondern nur bei anderen Fehlercodes:
Bild 1: Fehler beim Abbruch des öffnungsvorgangs
Public Sub FormularOeffnenAbbrechen() On Error Resume Next DoCmd.OpenForm "frmOhneDaten", WhereCondition:="1=2" Select Case Err.Number Case 0, 2501 Case Else MsgBox "Fehler" End Select On Error GoTo 0 End Sub
Datenherkunft einstellen
Meistens ist die Tabelle oder Abfrage, welche die Daten für ein Formular liefert, bereits vor dem öffnen bekannt und wird für die Eigenschaft Datenherkunft des Formulars eingestellt. Gegebenfalls geben Sie beim öffnen mit Docmd.OpenForm noch eine WhereCondition oder einen Filter mit, um die Daten einzuschränken.
Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein: