Datenbankobjekte auflisten per MSysObjects

Die Tabelle MSysObjects, die wir im Artikel Die Tabelle MSysObjects vorgestellt haben, enthält Einträge für die verschiedenen Datenbankobjekte und mehr. Dieser Artikel soll zeigen, wie Sie die Datenbankobjekte eines bestimmten Typs per Abfrage ermitteln und in den Steuerelementen eines Formulars anzeigen können.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 2002_DatenbankobjekteAuflisten.accdb.

Abfragen auf Basis von MSysObjects

Wenn Sie über den Navigationsbereich auf die Einträge der Tabelle MSysObjects zugreifen wollen, müssen Sie zunächst die Systemtabellen sichtbar machen. Wie das geht, erfahren Sie im Artikel Die Tabelle MSysObjects.

Wir wollen hier per Abfragen auf die Daten dieser Tabelle zugreifen. Um die Tabelle über den Dialog Tabelle anzeigen zum Entwurf einer Abfrage hinzuzufügen, müssen Sie die Systemtabellen ebenfalls zuvor einblenden (siehe Bild 1).

Auswahl der Tabelle MSysObjects

Bild 1: Auswahl der Tabelle MSysObjects

Sie können allerdings auch einen kleinen Trick anwenden, um das Einblenden der Systemtabelle zu umgehen: Dazu schließen Sie zunächst den Dialog Tabelle anzeigen, ohne eine Tabelle zur Abfrage hinzuzufügen.

Dann wechseln Sie über den Ribbon-Eintrag Ent-wurf|Er-geb-nisse|An-sicht|SQL-Ansicht zur SQL-Ansicht der Abfrage. Hier geben Sie dann den folgenden Ausdruck ein:

SELECT * FROM MSysObjects

Wechseln Sie danach in die Datenblattansicht, erhalten Sie das Ergebnis aus Bild 2.

Eine Abfrage auf Basis der Tabelle MSysObjects

Bild 2: Eine Abfrage auf Basis der Tabelle MSysObjects

Aber wie sieht die Abfrage nun in der Entwurfsansicht aus Die Tabelle MSysObjects wird dort wie eine ganz normale, eingeblendete Tabelle angezeigt. Wir können uns nun also an den enthaltenen Feldern bedienen und diese in das Entwurfsraster ziehen (siehe Bild 3).

Abfrage mit der nicht eingeblendeten Tabelle MSysObjects

Bild 3: Abfrage mit der nicht eingeblendeten Tabelle MSysObjects

Alle Tabellen ausgeben

Als Erstes wollen wir eine Abfrage erstellen, die alle Tabellen mit Namen auflistet. Wollen wir hier direkt unterscheiden zwischen verschiedenen Tabellentypen Es gibt ja die Werte 1 (lokale Tabelle), 4 (ODBC-Tabelle) und 6 (eingebundene Tabelle) für das Feld Type. Sie können anhand des Anwendungsfalls selbst entscheiden, welche Tabellen Sie mit der Abfrage ermitteln wollen. Wir gehen zunächst davon aus, dass Sie alle Tabellen der verschiedenen Typen ausgeben wollen. Dazu ziehen wir die beiden Felder Name und Type aus der Tabelle MSysObjects in das Entwurfsraster. Anschließend stellen wir für das Feld Name eine aufsteigende Sortierung ein und legen für das Feld Type ein Filterkriterium mit dem Vergleichswert In (1;4;6) fest (siehe Bild 4). Dieses Feld blenden wir auch direkt aus, indem wir das Kontrollkästchen in der Zeile Anzeigen deaktivieren.

Abfrage aller Tabellentypen

Bild 4: Abfrage aller Tabellentypen

Haben wir damit das gewünschte Ergebnis Wir wechseln in die Datenblattansicht und stellen fest: Die Abfrage liefert nicht nur die wenigen Tabellen der Datenbank als Datensätze zurück, sondern sie zeigt auch alle Felder der Tabelle MSysObjects an – obwohl wir nur zwei Felder ausgewählt haben, von denen auch noch eines nicht angezeigt werden soll Das liegt an der Art, wie wir weiter oben die Abfrage angelegt haben. Wenn im Entwurf keine Felder der Tabelle für die Ausgabe gewählt werden, aber als SQL-Ausdruck SELECT * … angegeben ist, dann stellt Access automatisch die Eigenschaft Alle Felder ausgeben der Abfrage auf den Wert Ja ein (siehe Bild 5). Den Wert dieser Eigenschaft legen wir daher nun auf Nein fest.

Einstellen der Eigenschaft Alle Felder ausgeben

Bild 5: Einstellen der Eigenschaft Alle Felder ausgeben

Systemtabellen ausschließen

Danach schauen wir uns an, warum die Abfrage uns so viele Tabellen anzeigt, obwohl wir ja nur wenige Tabellen in der Datenbank angelegt haben. Nachdem wir die Anzeige aller Felder deaktiviert haben und in die Datenblattansicht gewechselt sind, erwartet uns die Tabellenliste aus Bild 6.

Ausgabe aller Tabellen der Datenbank

Bild 6: Ausgabe aller Tabellen der Datenbank

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