Unterformulare für die Datenblattansicht nutzen wir normalerweise, wenn wir die Daten einer festen Datenquelle passend zu den Daten im Hauptformular anzeigen wollen – zum Beispiel für Kunden im Hauptformular und ihre Bestellungen im Unterformulare. Manchmal möchte man aber auch einfach mal schnell Daten aus beliebigen Tabellen einsehen. Warum dann nicht einfach die Tabelle oder Abfrage in der Datenblattansicht anzeigen? Weil wir dann im Gegensatz zum Haupt-/Unterformular viel weniger Möglichkeiten haben, was den zum Beispiel den Einsatz von VBA angeht. Wenn wir uns etwa die Lösung aus dem Beitrag Markierte Datensätze aus dem Datenblatt einlesen (www.access-im-unternehmen.de/1548) anschauen, können wir dort per VBA die aktuell markierten Datensätze auslesen. Das ist bei Tabellen oder Abfragen, die wir alleinstehend öffnen, nicht möglich. Deshalb zeigen wir in diesem Beitrag zunächst, wie wir beliebige Tabellen oder Abfragen komfortabel per über ein Kombinationsfeld auswählen und dann im Unterformular einblenden können. Anschließend bauen wir noch die Lösung aus dem oben genannten Beitrag ein.
Tabellen und Abfragen im Unterformular
In Microsoft Access gibt es schon lange die Möglichkeit, für ein Unterformular über die Eigenschaft Herkunftsobjekt nicht nur Formulare, sondern auch Tabellen oder Abfragen direkt in der Datenblattansicht anzuzeigen.
Für Formulare selbst gibt es diese Eigenschaft nicht, diese wird nur für das Unterformular-Steuerelement bereitgestellt.
Das können wir leicht testen, indem wir einem neuen, leeren Formular ein Unterformular-Steuerelement hinzufügen. Klicken wir dieses an, zeigt das Eigenschaftenblatt im Register Daten die Eigenschaft Herkunftsobjekt an, mit dem wir neben den Formularen auch alle vorhandenen Tabellen und Abfragen auswählen können (siehe Bild 1).
Bild 1: Klassische Auswahl der Tabelle oder Abfrage für ein Unterformular
Um zwischen den verschiedenen Objekttypen unterscheiden zu können, wird diesen noch die Objektbezeichnung vorangestellt, zum Beispiel Formular, Tabelle oder Abfrage. Danach folgt, durch einen Punkt getrennt, der eigentliche Name des Objekts.
Wählen wir hier beispielsweise den Eintrag Tabelle.tblMitarbeiter aus, sehen wir den Namen dieses Eintrags anschließend auch im Unterformular-Steuerelement (siehe Bild 2).
Bild 2: Das gewählte Objekt wird im Unterformular angezeigt.
Im Gegensatz zur Verwendung eines Formulars als Unterformular, das nach dem Schließen und erneutem Öffnen des Formulars in der Entwurfsansicht angezeigt wird, sehen wir bei Verwendung einer Tabelle oder Abfrage nach wie vor nur die Bezeichnung.
Wenn wir jedoch in die Formularansicht wechseln, erscheint die Datenblattansicht der gewählten Tabelle oder Abfrage im Unterformular (siehe Bild 3).
Bild 3: Eine Tabelle im Unterformular
Tabelle oder Abfrage komfortabel auswählen
Wir erstellen nun ein neues Formular, dem wir zusätzlich zu dem Unterformular-Steuerelement namens sfm noch ein Kombinationsfeld namens cboTabellenUndAbfragen hinzufügen (siehe Bild 4).
Bild 4: Aufbau unseres Beispielformulars
Dieses Kombinationsfeld soll alle Tabellen und Abfragen der Datenbank zur Auswahl anbieten, die wir auch im Navigationsbereich von Access sehen können.
Abfrage mit allen Tabellen und Abfragen
Dazu erstellen wir eine Abfrage als Datensatzherkunft des Kombinationsfeldes, welche die Systemtabelle MSysObjekts als Quelle verwendet (siehe Bild 5).
Bild 5: Abfrage, die alle Tabellen und Abfragen liefert
Um diese Tabelle in den Abfrageentwurf ziehen zu können, müssen wir in den Optionen des Navigationsbereichs die Option Systemobjekte anzeigen aktivieren.
Danach fügen wir diese Tabelle zum Abfrageentwurf hinzu und ziehen die beiden Felder Name und Type in das Entwurfsraster.
Das Feld Type verwenden wir, um nur die Tabellen und Abfragen der Datenbank anzuzeigen. Tabellen haben einen der Typen 1, 4 oder 6 (für lokale Tabellen, ODBC-Tabellen oder andere verknüpfte Datenquellen), Abfragen werden dem Typ 5 zugeordnet.
Aber auch die Tabellen und Abfragen müssen wir noch weiter filtern, um nur die relevanten Objekte zu erhalten. Wir möchten zum Beispiel keine Systemtabellen sehen. Außerdem sollen keine temporären Objekte sichtbar sein. Dazu stellen wir in der Zeile Kriterium für das Feld Name den folgenden Ausdruck ein:
Nicht Wie ''~*'' Und Nicht Wie ''MSys*'' Und Nicht Wie ''f_*''
Schließlich sortieren wir das Feld Name noch in aufsteigender Reihenfolge.
Nach dem Wechsel in die Formularansicht zeigt das Kombinationsfeld nun alle gewünschten Elemente der Datenbank an (siehe Bild 6).
Bild 6: Das Kombinationsfeld zeigt nun alle gewünschten Tabellen und Abfragen an.
Inhalt der gewählten Tabelle oder Abfrage im Unterformular anzeigen
Nun wollen wir dafür sorgen, dass nach der Auswahl eines der Einträge die entsprechende Tabelle oder Abfrage im Unterformular angezeigt wird.
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
den kompletten Artikel im PDF-Format mit Beispieldatenbank
diesen und alle anderen Artikel mit dem Jahresabo