Access Systemobjekte

By , 16. April 2009

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.

Eines vorab: Verändert man die Systemtabellen kann man in den meisten Fällen die Datenbank hinterher wegschmeißen, also nicht darin rumspielen und bei geöffneter Systemtabelle niemals auf Aufforderung speichern, sondern immer Abbrechen!

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

Leave a Reply

You must be logged in to post a comment.

OfficeFolders theme by Themocracy