Detailformulare aufrufen

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).

Unterformular mit der Liste der Artikel

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.

Haupt- und Unterformular in der Entwurfsansicht

Bild 2: Haupt- und Unterformular in der Entwurfsansicht

Haupt- und Unterformular in der Formularansicht

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).

Entwurf des Detailformulars

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).

Aufruf des Detailformulars für den aktuellen Eintrag im Unterformular

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:

Schreibe einen Kommentar