Unterdatenblätter in Formularen

Unterdatenblätter in Tabellen oder Abfragen kennen Sie sicherlich bereits. Das sind die Bereiche einer Datenblattansicht, die aufklappen, wenn Sie das Plus-Zeichen vor einem Datensatz anklicken. Wenn Sie eine Tabelle, für die eine solche Unterdatenblatt-Funktion eingerichtet ist, jedoch in der Datenblattansicht in einem Formular oder Unterformular anzeigen wollen, verschwinden die praktischen Plus-Zeichen und Sie schauen in die Röhre. Doch das ist nicht das Ende der Fahnenstange: Access sieht durchaus den Einsatz von Unterdatenblättern in Formularen vor – und damit lässt sich eine Menge anstellen!

Als Beispiel verwenden wir die beiden Tabellen tblTabellen und tblFelder der Lösung aus dem Beitrag Daten anonymisieren (www.access-im-unternehmen.de/1112). Dabei handelt es sich um zwei Tabellen, von denen die erste alle Tabellennamen einer Datenbank speichern soll und die zweite alle in den Tabellen enthaltenen Felder. Dabei enthält die zweite Tabelle tblFelder ein Fremdschlüsselfeld, mit dem ein Datensatz der Tabelle tblTabellen ausgewählt werden kann, um die Zugehörigkeit des Feldes zu einer Tabelle zu definieren.

Wenn Sie die dortige Tabelle tblTabellen mit einigen Beispieldaten wie hier aus der Südsturm-Datenbank öffnen, erscheinen direkt die Plus-Zeichen, mit denen sich die untergeordneten Datensätze der verknüpften Tabelle tblFelder einblenden lassen (s. Bild 1).

Tabelle mit Unterdatenblatt

Bild 1: Tabelle mit Unterdatenblatt

Warum benötigen wir diese Ansicht In diesem Fall wollen wir es uns ersparen, ein TreeView-Steuerelement für die Anzeige der hierarchisch verknüpften Daten der beiden Tabellen tblTabellen und tblFelder hinzuzuziehen. Stattdessen wollen wir einmal das oft verschmähte Feature Unterdatenblatt nutzen. In der Lösung, die diese Ansicht nutzen soll, wollen wir die Möglichkeit haben, sowohl Einträge der übergeordneten Tabelle als auch die der untergeordneten Tabelle auszuwählen und abzuwählen. Wie die Abbildung zeigt, könnte man damit schon recht komfortabel die Daten mit den dazu eingerichteten Ja/Nein-Feldern zugreifen. Allerdings wollen wir dort noch einen Schritt weiter gehen: Wenn der Benutzer das Ja/Nein-Feld einer Tabelle selektiert, sollen automatisch alle Einträge der untergeordneten Tabelle mit den Feldern ausgewählt werden. Andersherum soll das Ja/Nein-Feld für eine Tabelle abgewählt werden, wenn der Benutzer nur eines der untergeordneten Felder abwählt. Und wenn der Benutzer das Ja/Nein-Feld für eine Tabelle abwählt, sollen auch alle zu der Tabelle gehörenden Felder abgewählt werden.

Unterdatenblatt im Formular

Wie aber bekommen wir diese Ansicht in das Unterformular eines Formulars Der erste und einfachere Ansatz ist der folgende: Sie fügen dem Formular ein Unterformular-Steuerelement hinzu. Dann stellen Sie für die Eigenschaft Herkunftsobjekt des Unterformular-Steuerelements den Wert Tabelle.tblTabellen ein (s. Bild 2).

Einrichten eines Unterformulars mit Tabelle plus Unterdatenblatt

Bild 2: Einrichten eines Unterformulars mit Tabelle plus Unterdatenblatt

Wechseln Sie nun in die Formularansicht des Formulars, erhalten Sie die Ansicht aus Bild 3. Das ist ja schon fast genau das, was wir wollen! Aber Moment: Vielleicht bekommen wir noch irgendwie das Feld TabelleID der übergeordneten Tabelle und die Felder FeldID und Felddatentyp der untergeordneten Tabelle weg

Unterformular mit Tabelle plus Unterdatenblatt

Bild 3: Unterformular mit Tabelle plus Unterdatenblatt

Auch das gelingt uns, indem wir einfach mit der rechten Maustaste auf die Spaltenköpfe der zu entfernenden Felder klicken und diese mit dem Befehl Felder ausblenden des Kontextmenüs verschwinden lassen. Das Ergebnis sehen sie in Bild 4. Nun müssen wir nur noch ein paar Ereignisprozeduren für die Ja/Nein-Felder namens Anonymisieren der Tabellen tblTabellen und tblFelder hinterlegen, mit denen wir die gewünschten und oben erwähnten Funktionen hinterlegen können. Und hier verlässt uns diese einfache Variante dann doch: Da wir als Herkunftsobjekt des Unterformulars eine Tabelle angegeben haben, können wir dafür keine Ereignisse hinterlegen. Dies funktioniert nur, wenn Sie ein Formular mit den entsprechenden Steuerelementen anlegen. Ist unser Plan, die Daten über die Unterdatenblätter anzuzeigen, gescheitert Nein, wir haben noch eine Alternative!

Unterdatenblatt mit ausgeblendeten Feldern

Bild 4: Unterdatenblatt mit ausgeblendeten Feldern

Unterdatenblatt per Unterformular

Wir können die Daten nämlich auch als echtes Unterformular abbilden. Dazu erstellen Sie als Erstes ein Unterformular namens sfmTabellen. Diesem weisen Sie als Datenherkunft die Tabelle tblTabellen zu. Ziehen Sie dann alle benötigten Felder in den Formularentwurf. Wir wollen nur die beiden Felder Anonymisieren (das Ja/Nein-Feld) und das Feld Tabellenname verwenden. Wir ziehen zuerst das Ja/Nein-Feld in den Entwurf, da dieses in der ersten Spalte angezeigt werden soll (s. Bild 5).

Erstellen des Unterformulars mit den Daten der Tabelle tblTabellen

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access im Unternehmen:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 1.000 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar