Access-Anwendungen enthalten oft übersichtsformulare, die alle Datensätze (oder eine Auswahl davon) in Listenform anzeigen, also beispielsweise in einem Unterformular in der Datenblattansicht oder in einem Listenfeld. Dieses ist dann üblicherweise mit einer Schaltfläche ausgestattet, um die Details zu einem solchen Datensatz in einem entsprechend gestalteten Formular anzuzeigen. Dieser Artikel zeigt, wie Sie das öffnen eines solchen Formulars programmieren.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 1406_DetailformulareAufrufen.mdb.
übersichts- und Detailformular
Bei den folgenden Beispielen gehen wir davon aus, dass Sie ein Formular verwenden, dass die Daten einer Tabelle entweder in einem Unterformular, einem Listenfeld oder auch in der Endlosansicht anzeigt.
Wenn der Benutzer einen der Datensätze auswählt und dann etwa auf eine Schaltfläche mit der Beschriftung Details anzeigen klickt, soll der aktuelle Datensatz in einem Detailformular angezeigt werden.
Das Detailformular besteht aus einem Hauptformular namens frmArtikeluebersicht und dem Unterformular sfmArtikeluebersicht.
Das Unterformular verwendet die Tabelle tblArtikel als Datenherkunft und zeigt seine Daten in der Datenblattansicht an (siehe Bild 1).
Bild 1: Unterformular mit der Liste der Artikel
Das Hauptformular frmArtikeluebersicht nimmt das Unterformular auf und zunächst eine Schaltfläche namens cmdDetailsAnzeigen (siehe Bild 2). Wenn Sie die Eigenschaften Navigationsschaltflächen, Datensatzmarkierer und Bildlaufleisten des Hauptformulars auf Nein und Automatisch zentrieren auf Ja einstellen, erscheint das Formular in der Formularansicht wie in Bild 3.
Bild 2: Haupt- und Unterformular in der Entwurfsansicht
Bild 3: Haupt- und Unterformular in der Formularansicht
Das Formular zur Anzeige der Artikeldetails heißt frmArtikeldetails und verwendet die Tabelle tblArtikel als Datenherkunft – genau wie das Unterformular sfmArtikeluebersicht. Es enthält alle Felder der Tabelle tblArtikel sowie eine Schaltfläche namens cmdOK, um das Formular wieder zu schließen (siehe Bild 4).
Bild 4: Entwurf des Detailformulars
Datensatz-ID per WhereCondition
Eine Art, eine Information von einem Formular zum nächsten zu übergeben, ist die übergabe einer Bedingung per WhereCondition. Wenn Sie einen Datensatz im Unterformular des Formulars frmArtikeluebersicht markieren und dann auf die Schaltfläche mit dem Text Details anzeigen klicken, soll dies die Prozedur Listing 1 auslösen.
Private Sub cmdDetailsAnzeigen_Click() Dim lngArtikelID As Long lngArtikelID = Nz(Me!sfmArtikeluebersicht.Form!ArtikelID) If Not lngArtikelID = 0 Then DoCmd.OpenForm "frmArtikeldetails", WhereCondition:="ArtikelID = " & lngArtikelID Else MsgBox "Markieren Sie zunächst einen Artikel." End If End Sub
Listing 1: Aufrufen des Detailformular mit entsprechendem Filter
Diese Prozedur speichert zunächst den Primärschlüsselwert des aktuell im Unterformular markierten Datensatzes in der Variablen lngArtikelID. Diesen ermittelt sie über den Ausdruck Me!sfmArtikeluebersicht.Form!ArtikelID. Me referenziert das aktuelle Formular, sfmArtikeluebersicht das Unterformular-Steuerelement, die Eigenschaft Form das darin enthaltene Unterformular (das ebenfalls sfmArtikeluebersicht heißt) und ArtikelID das Feld mit dem betreffenden Wert.
Befindet der Datensatzzeiger sich aktuell auf einem leeren, neuen Datensatz, liefert dieser Ausdruck den Wert Null. Wenn wir versuchen, diesen Wert in einer Long-Variablen wie lngArtikelID zu speichern, löst dies einen Fehler aus.
Also wandeln wir den Ausdruck zuvor vorsichtshalber mit der Funktion Nz in den Zahlenwert 0 um. Dies geschieht nur in dem Fall, dass der als erster Parameter der Funktion angegebene Ausdruck den Wert Null enthält – andernfalls liefert Nz den Wert aus dem ersten Ausdruck.
Die folgende If…Then-Bedingung prüft, ob lngArtikelID den Wert 0 enthält. Falls nicht, ruft sie das Formular frmArtikeldetails mit dem Wert “ArtikelID = ” & lngArtikelID für den Parameter WhereCondition auf (siehe Bild 5).
Bild 5: Aufruf des Detailformulars für den aktuellen Eintrag im Unterformular
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: