Access Systemobjekte
Haben Sie sich auch schon mal gefragt wo Access die ganzen Informationen über die vorhandenen Objekte, also Tabellen, Formulare, Abfragen, Beziehungen, Module etc., speichert? Access legt zu diesem Zweck bereits zum Zeitpunkt, wo eine neue Datenbankdatei erstellt wird, mehrere Systemtabellen an, die aber ausgeblendet sind. Darin werden die verschiedensten Access Internas gespeichert, wie die Systemobjekte, Abfragen, Makros oder Informationen über die referentielle Integrität. Diese Angaben sind nicht dokumentiert und top secret. Microsoft will sich da nicht in die Karten schauen lassen, da dies einiges an verstecktem Know How darstellt. In diesem Bericht kratzen wir auch nur wenig an der Oberfläche.
Um die Systemtabellen sichtbar zu machen, gehen Sie im Menü Extras auf Optionen und dann auf das Registerblatt Allgemein. In der Gruppe Anzeigen können Sie dann die Option „Systemobjekte“ auswählen und mit OK bestätigen.
Unter Access 2007 findet man diese Option wie folgt:
Klick auf Office-Button, dann unter:
Access-Optionen => Aktuelle Datenbank => Bereich Navigation => Navigationsoptionen
Dort die Anzeigeoption „Systemobjekte anzeigen“ markieren und 2x mit OK bestätigen.
Jetzt werden mehrere Systemtabellen angezeigt. Man erkennt diese daran dass alle mit „MSys“ beginnen. Interessant für den Access Entwickler ist z.B. die Tabelle MSysObjects, in der sämtliche Systemobjekte aufgelistet sind.
Die Tabelle MSysObjects besitzt folgende Felder:
Feldname | Felddatentyp |
Connect | Memo |
Database | Memo |
DateCreate | Datum/Uhrzeit |
DateUpdate | Datum/Uhrzeit |
Flags | Zahl |
ForeignName | Text |
Id | Zahl |
Lv | OLE-Objekt |
LvExtra | OLE-Objekt |
LvModule | OLE-Objekt |
LvProp | OLE-Objekt |
Name | Text |
Owner | Binär |
ParentID | Zahl |
RmtInfoLong | OLE-Objekt |
RmtInfoShort | Binär |
Type | Zahl |
Erklärung interessanter Datenfelder:
Connect: Hat man z.B. per ODBC eingelinkte Datenbanktabellen, so wird in diesem Feld der Connectstring angezeigt. Z.B. beim Microsoft SQL Server 2008:
DSN=Servername;Description=Serverbeschreibung;APP=Microsoft Office XP;WSID=ID;DATABASE=DatenbanknameTrusted_Connection=Yes
DateCreate und DateUpdate: Datum/Zeit wo das Datenbankobjekt erstellt bzw. zuletzt geändert wurde.
ForeignName: ist der Name von eingelinkten Datenbanken.
Name: ist der Dame des Datenbankobjektes
Type: kennzeichnet den Typ des Datenbankobjektes
Auflistung der Datenbankobjekte
Name | Type | Erklärung |
Tabellen | 1 | interne |
unbekannt | 2 | Name: MSysDb |
unbekannt | 3 | Objektarten: Forms, Reports etc. |
Tabellen | 4 | externe |
Abfragen | 5 | |
Tabellen | 6 | eingebundene |
Referenzen | 8 | z.B. Beziehungen zwischen Tabellen |
unbekannt | -32758 | evtl. Benutzer |
Module | -32761 | |
Berichte | -32764 | |
Makros | -32766 | |
Formulare | -32768 |
Nun hätten Sie das notwendige Wissen um z.B. Abfragen auf diese Tabelle anzuwenden. Z.B. um herauszufinden wieviele Tabellen oder Formulare in der Datenbank enthalten sind. Aber dafür gibt es auch andere und bevorzugte Methoden (Collections). Und Sie wissen jetzt vorallem dass man von den Systemtabellen die Finger weg lassen soll, und am besten erst gar nicht sichtbar macht.
AV 2009