In der Tabelle MSysObjects verwaltet Access Informationen zu den in der Datenbank enthaltenen Objekten. Diese Tabelle kann sich als echte Hilfe erweisen: Sie liefert, mit der richtigen Abfrage angesprochen, beispielsweise alle Tabellen der Datenbank oder auch alle Objekte der anderen Objekttypen wie Abfrage, Formulare, Berichte et cetera. Dieser Beitrag zeigt, was Sie alles mit der Tabelle MSysObjects anfangen können.
Die Tabelle MSysObjects finden
Um den vorliegenden Beitrag nachvollziehen zu können, müssen Sie sich erst einmal Zugriff auf die Tabelle MSysObjects verschaffen. Diese zeigt Access nämlich standardmäßig gar nicht im Datenbankfenster beziehungsweise im Navigationsbereich an.
Unter Access 2007 und neuer aktivieren Sie die Anzeige der Systemtabellen wie folgt:
- Klicken Sie mit der rechten Maustaste auf die Titelleiste des Navigationsbereichs.
- Wählen Sie dort den Eintrag Navigationsoptionen aus.
- Aktivieren Sie im nun erscheinenden Dialog die Option Systemobjekte anzeigen (s. Bild 1).
Bild 1: Dialog zum Aktivieren der Anzeige der Systemtabellen von Access
Anschließend erscheinen die Systemtabellen bereits im Navigationsbereich (s. Bild 2). Wenn Sie im vorherigen Dialog noch die Option Ausgeblendete Objekte anzeigen aktivieren, erscheinen noch weitere Tabellen – für die Anzeige der Tabelle MSysObjects reicht jedoch das Aktivieren von Systemobjekte anzeigen.
Bild 2: Systemtabellen im Navigationsbereich
MSysObjects per VBA öffnen
Wenn die Systemobjekte derzeit ausgeblendet sind und Sie keine Lust haben, diese für einen kurzen Blick in die Tabelle MSysObjects über die Navigationsoptionen einzublenden, öffnen Sie die Tabelle einfach per VBA.
Dazu setzen Sie einfach die folgende Anweisung im Direktbereich des VBA-Editors (Strg + G) ab:
DoCmd.OpenTable "MSysObjects"
Die Tabelle erscheint daraufhin in der Datenblattansicht – hier mit einigen ausgeblendeten Feldern (s. Bild 3). Insgesamt enthält die Tabelle folgende Felder, einige davon nehmen wir später unter die Lupe:
Bild 3: Einige Einträge der Systemtabelle MSysObjects
- Connect (Memo)
- Database (Memo)
- DateCreate (Datum)
- DateUpdate (Datum)
- Flags (Long)
- ForeignName (Text)
- Id (Long)
- Lv (OLE-Objekt)
- LvExtra (OLE-Objekt)
- LvModule (OLE-Objekt)
- LvProp (OLE-Objekt)
- Name (Text)
- Owner (Binary)
- ParentId (Long)
- RmtInfoLong (OLE-Objekt)
- RmtInfoShort (Binary)
- Type (Integer)
In den folgenden Abschnitten beschreiben wir die nützlichsten Felder dieser Tabelle.
Felder, die hier nicht aufgeführt werden, sind in der Regel schlecht dokumentiert und werden daher hier nicht beschrieben.
Connect
Das Feld Connect enthält die Verbindungszeichenfolge, wenn das Objekt eine per ODBC verknüpfte Tabelle ist – also beispielsweise eine Tabelle, die auf einem SQL Server oder einem MySQL-Server liegt. Die Verbindungszeichenfolge wird hier im Klartext gespeichert, Sie sollten also tunlichst keine Benutzernamen oder Kennwörter angeben. Beispiel:
DRIVER={SQL Server};SERVER=MeinServer; DATABASE=MeineDatenbank;UID=MeinBenutzername; PWD=MeinKennwort;
Database
Wird eine Tabelle aus einer anderen Datenbank oder auch aus einer Textdatei oder einer Exceltabelle eingebunden, handelt es sich um eine Jet-Verknüpfung.
Eine solche speichert den Dateinamen der Quelldatei, also etwa einer Access-Datenbankdatei, einer Textdatei oder einer Excel-Datei, im Feld Database. Beispiel:
c:DatenbankenBeispiel.mdb
DateCreate und DateUpdate
Diese beiden Felder speichern das Datum der Erstellung des Objekts sowie der letzten Aktualisierung.
Flags
Das Feld Flags enthält einen Zahlenwert, der weitere Informationen über den Typ des Objekts liefert. Weitere Informationen zu den Werten dieses Feldes finden Sie weiter unten in Zusammenhang mit den verschiedenen Objekttypen.
ForeignName
Das Feld ForeignName findet für verknüpfte Tabellen Verwendung. Wenn Sie beispielsweise eine Tabelle namens tblTest einer anderen Datenbank mit der aktuellen Datenbank verknüpfen und es ist bereits eine Tabelle gleichen Namens vorhanden, erhält die Verknüpfung in der aktuellen Tabelle einen anderen Namen im Feld Name. ForeignName hingegen behält den Namen der Originaltabelle bei.
Id
Das Feld Id dient schlicht und einfach als eindeutiger Bezeichner und Primärschlüsselfeld für ein Objekt. Es ist jedoch nicht als Autowertfeld definiert.
Name
Das Feld Name enthält den Namen des Objekts, wie er auch im Datenbankfenster beziehungsweise Navigationsbereich erscheint.
ParentId
Das Feld ParentId enthält einen Long-Wert, der über das Feld Id auf einen übergeordneten Datensatz der Tabelle MSysObjects verweist. So enthalten dort beispielsweise alle Objekte des Typs Formular den gleichen Wert, den der Datensatz mit dem Wert Forms im Feld Name im Feld Id enthält.
Type
Dieses Feld speichert einen Zahlenwert, der dem Objekttyp entspricht. Auf diese Weise lassen sich beispielsweise Tabellen, Abfragen oder Formulare identifizieren. Mehr dazu weiter unten unter Objekte nach Objekttyp filtern.
Abfragen auf Basis der Tabelle MSysObjects
In den folgenden Abschnitten schauen wir uns einige Abfragen an, mit denen Sie wichtige Informationen aus der Tabelle MSysObjects ziehen können.
Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...
Oder bist Du bereits Abonnent? Dann logge Dich gleich hier ein. Die Zugangsdaten findest Du entweder in der aktuellen Print-Ausgabe auf Seite U2 oder beim Online-Abo in der E-Mail, die Du als Abonnent regelmäßig erhältst: