Ein Unterformular kann einige Daten anzeigen, aber oft ist die Breite des Unterformulars begrenzt und der Benutzer muss scrollen, um die nicht sichtbaren Spalten zu lesen. Das ist nicht unbedingt komfortabel. Manchmal soll dann doch ein Detailformular die Daten zu einem Datensatz in übersichtlicher Form anzeigen. Wie aber öffnen wir das Detailformular zu einem Datensatz vom Unterformular aus Und wie aktualisieren wir das Unterformular, wenn wir den geöffneten Datensatz im Detailformular geändert haben All dies zeigt der vorliegende Artikel.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 1803_OeffnenAusUnterformular.accdb.
Haupt- und Unterformular erstellen
Das Unterformular soll den Namen sfmArtikel erhalten und alle Datensätze der Tabelle tblArtikel anzeigen. Dazu stellen Sie die Eigenschaft Datenherkunft des Unterformulars auf die Tabelle tblArtikel ein. Wechseln Sie dann zur Anzeige der Feldliste und ziehen Sie alle Einträge dieser Liste in den Detailbereich der Entwurfsansicht des Formulars (siehe Bild 1). Die Anordnung spielt in diesem Fall kenie besondere Rolle, da wir durch Einstellen der Eigenschaft Standardansicht auf den Wert Datenblatt ohnehin dafür sorgen, dass die Datensätze im Unterformular in der Datenblatt-Ansicht erscheinen.
Bild 1: Formular-Entwurf des Unterformulars sfmArtikel
Schließen Sie dann das Formular und öffnen Sie ein neues, leeres Formular in der Entwurfsansicht. Dieses speichern wir unter dem Namen frmArtikel. Fügen Sie dann das Unterformular hinzu, in dem Sie dieses aus dem Navigationsbereich in den Detailbereich des Formularentwurfs ziehen (siehe Bild 2).
Bild 2: Hinzufügen des Unterformulars zum Hauptformular
Damit das Unterformular beim Vergrößern des Hauptformulars mitwächst, stellen wir seine beiden Eigenschaften Horizontaler Anker und Vertikaler Anker auf Beide ein.
Detailformular erstellen
Das Detailformular erstellen Sie ebenfalls als neues, leeres Formular, das Sie unter dem Namen frmArtikeldetails speichern. Fügen Sie der Datenherkunft ebenfalls die Tabelle tblArtikel hinzu und ziehen Sie alle Felder der Datenquelle aus der Feldliste in den Formularentwurf. Außerdem legen wir im Detailformular noch eine OK-Schaltfläche namens frmOK an (siehe Bild 3).
Bild 3: Entwurf des Detailformulars
Details per Schaltfläche anzeigen
Schließen Sie das Detailformular und öffnen Sie erneut das Formular mit dem Unterformular. über dem Formular fügen wir nun eine Schaltfläche zum Anzeigen der Details des jeweils markierten Datensatzes im Unterformular ein. Sie erhält den Text Details anzeigen und den Namen cmdDetailsAnzeigen.
Außerdem stellen Sie den Wert der Eigenschaft Beim Klicken auf [Ereignisprozedur] ein und legen durch einen Klick auf die Schaltfläche mit den drei Punkten (…) rechts von der Eigenschaft die Ereignisprozedur cmdDetailsAnzeigen_Click an. Um einfach nur das Detailformular mit dem aktuell im Unterformular markierten Datensatz zu öffnen, ergänzen Sie die Prozedur wie folgt:
Private Sub cmdDetailsAnzeigen_Click() Dim lngArtikelID As Long lngArtikelID = Me!sfmArtikel.Form!ArtikelID DoCmd.OpenForm "frmArtikeldetails", WhereCondition:="ArtikelID = " & lngArtikelID End Sub
Die Prozedur ermittelt den Wert des Primärschlüsselfeldes des aktuell im Unterformular ausgewählten Datensatzes. Das Unterformular-Steuerelement referenzieren wir mit Me!sfmArtikel, das darin enthaltene Unterformular mit Me!sfmArtikel.Form und das Feld schließlich mit Me!sfmArtikel.Form!ArtikelID. Diesen Wert speichern wir in der Variablen lngArtikel. Diese nutzen wir in der folgenden DoCmd.OpenForm-Anweisung als Teil des Kriteriums “ArtikelID = ” & lngArtikelID. Damit öffnen wir per Mausklick das Detailformular mit dem aktuellen Datensatz, was wie in Bild 4 aussieht.
Bild 4: Aufruf des Detailformulars
Ein Problem kann hier auftreten, nämlich dann, wenn der Benutzer die Schaltfläche betätigt, wenn sich der Datensatzzeiger gerade auf einem neuen, leeren Datensatz befindet. Dann erscheint nämlich die Fehlermeldung aus Bild 5. Der Fehler resultiert daraus, dass das Feld ArtikelID für den neuen, leeren Datensatz noch den Wert Null enthält. Wenn wir dies einer Variable des Typs Long zuweisen, erhalten wir den hier vorliegenden Fehler.
Bild 5: Fehler beim Aufruf eines leeren Datensatzes
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: