Unterdatenblätter in Formularen

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

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

Bild 5: Erstellen des Unterformulars mit den Daten der Tabelle tblTabellen

Außerdem stellen wir die Eigenschaft Standardansicht auf den Wert Datenblatt ein. Ein Wechsel in die Entwurfsansicht liefert allerdings nicht das erwartete Ergebnis – es erscheinen zwar die Daten der Tabelle tblTabellen, aber keine Plus-Zeichen zum Aufklappen der Unterdatenblätter (s. Bild 6).

Kein Unterdatenblatt in Sicht!

Bild 6: Kein Unterdatenblatt in Sicht!

Kein Wunder: Wir haben bisher auch den entscheidenden Schritt ausgelassen. Wir müssen nämlich auch noch für die Tabelle tblFelder ein Unterformular anlegen und dieses dann als Unterformular zur Datenblattansicht des Unterformulars mit den Tabellen hinzufügen! Speichern wir also zunächst das soeben erstellte Formular unter dem Namen sfmTabellen.

Danach erstellen Sie ein weiteres Unterformular, welches diesmal die Tabelle tblFelder als Datenherkunft verwendet. Davon ziehen Sie die beiden Felder Anonymisieren und Feldname in den Detailbereich der Entwurfsansicht (s. Bild 7).

Unterformular für das Unterdatenblatt

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar