{"id":55000874,"date":"2013-04-01T00:00:00","date_gmt":"2021-03-22T16:35:10","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=874"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Die_Tabelle_MSysObjects","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Die_Tabelle_MSysObjects\/","title":{"rendered":"Die Tabelle MSysObjects"},"content":{"rendered":"<p><b>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\u00f6nnen.<\/b><\/p>\n<h2 data-tadv-p=\"keep\">Die Tabelle MSysObjects finden<\/h2>\n<p>Um den vorliegenden Beitrag nachvollziehen zu k\u00f6nnen, m\u00fcssen Sie sich erst einmal Zugriff auf die Tabelle <b>MSysObjects <\/b>verschaffen. Diese zeigt Access n\u00e4mlich standardm\u00e4\u00dfig gar nicht im Datenbankfenster beziehungsweise im Navigationsbereich an.<\/p>\n<p>Unter Access 2007 und neuer aktivieren Sie die Anzeige der Systemtabellen wie folgt:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Klicken Sie mit der rechten Maustaste auf die Titelleiste des Navigationsbereichs.<\/li>\n<li class=\"aufz-hlung\">W\u00e4hlen Sie dort den Eintrag <b>Navigationsoptionen <\/b>aus.<\/li>\n<li class=\"aufz-hlung\">Aktivieren Sie im nun erscheinenden Dialog die Option <b>Systemobjekte anzeigen <\/b>(s. Bild 1).<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2013_02\/MSysObjects-web-images\/pic001.png\" alt=\"pic001.png\" \/><\/p>\n<p><b><span style=\"color: darkgrey;\">Bild 1: Dialog zum Aktivieren der Anzeige der Systemtabellen von Access<\/span><\/b><\/p>\n<p>Anschlie\u00dfend erscheinen die Systemtabellen bereits im Navigationsbereich (s. Bild 2). Wenn Sie im vorherigen Dialog noch die Option <b>Ausgeblendete Objekte anzeigen <\/b>aktivieren, erscheinen noch weitere Tabellen &#8211; f\u00fcr die Anzeige der Tabelle <b>MSysObjects <\/b>reicht jedoch das Aktivieren von <b>Systemobjekte anzeigen<\/b>.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2013_02\/MSysObjects-web-images\/pic002.png\" alt=\"pic002.png\" \/><\/p>\n<p><b><span style=\"color: darkgrey;\">Bild 2: Systemtabellen im Navigationsbereich<\/span><\/b><\/p>\n<h2 data-tadv-p=\"keep\">MSysObjects per VBA \u00f6ffnen<\/h2>\n<p>Wenn die Systemobjekte derzeit ausgeblendet sind und Sie keine Lust haben, diese f\u00fcr einen kurzen Blick in die Tabelle <b>MSysObjects <\/b>\u00fcber die Navigationsoptionen einzublenden, \u00f6ffnen Sie die Tabelle einfach per VBA.<\/p>\n<p>Dazu setzen Sie einfach die folgende Anweisung im Direktbereich des VBA-Editors (<b>Strg + G<\/b>) ab:<\/p>\n<pre>DoCmd.OpenTable \"MSysObjects\"<\/pre>\n<p>Die Tabelle erscheint daraufhin in der Datenblattansicht &#8211; hier mit einigen ausgeblendeten Feldern (s. Bild 3). Insgesamt enth\u00e4lt die Tabelle folgende Felder, einige davon nehmen wir sp\u00e4ter unter die Lupe:<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2013_02\/MSysObjects-web-images\/pic003.png\" alt=\"pic003.png\" \/><\/p>\n<p><b><span style=\"color: darkgrey;\">Bild 3: Einige Eintr\u00e4ge der Systemtabelle MSysObjects<\/span><\/b><\/p>\n<ul>\n<li class=\"aufz-hlung\"><b>Connect <\/b>(<b>Memo<\/b>)<\/li>\n<li class=\"aufz-hlung\"><b>Database <\/b>(<b>Memo<\/b>)<\/li>\n<li class=\"aufz-hlung\"><b>DateCreate <\/b>(<b>Datum<\/b>)<\/li>\n<li class=\"aufz-hlung\"><b>DateUpdate <\/b>(<b>Datum<\/b>)<\/li>\n<li class=\"aufz-hlung\"><b>Flags <\/b>(<b>Long<\/b>)<\/li>\n<li class=\"aufz-hlung\"><b>ForeignName <\/b>(<b>Text<\/b>)<\/li>\n<li class=\"aufz-hlung\"><b>Id <\/b>(<b>Long<\/b>)<\/li>\n<li class=\"aufz-hlung\"><b>Lv <\/b>(<b>OLE-Objekt<\/b>)<\/li>\n<li class=\"aufz-hlung\"><b>LvExtra <\/b>(<b>OLE-Objekt<\/b>)<\/li>\n<li class=\"aufz-hlung\"><b>LvModule <\/b>(<b>OLE-Objekt<\/b>)<\/li>\n<li class=\"aufz-hlung\"><b>LvProp <\/b>(<b>OLE-Objekt<\/b>)<\/li>\n<li class=\"aufz-hlung\"><b>Name <\/b>(<b>Text<\/b>)<\/li>\n<li class=\"aufz-hlung\"><b>Owner <\/b>(<b>Binary<\/b>)<\/li>\n<li class=\"aufz-hlung\"><b>ParentId <\/b>(<b>Long<\/b>)<\/li>\n<li class=\"aufz-hlung\"><b>RmtInfoLong <\/b>(<b>OLE-Objekt<\/b>)<\/li>\n<li class=\"aufz-hlung\"><b>RmtInfoShort <\/b>(<b>Binary<\/b>)<\/li>\n<li class=\"aufz-hlung\"><b>Type <\/b>(<b>Integer<\/b>)<\/li>\n<\/ul>\n<p>In den folgenden Abschnitten beschreiben wir die n\u00fctzlichsten Felder dieser Tabelle.<\/p>\n<p>Felder, die hier nicht aufgef\u00fchrt werden, sind in der Regel schlecht dokumentiert und werden daher hier nicht beschrieben.<\/p>\n<h2 data-tadv-p=\"keep\">Connect<\/h2>\n<p>Das Feld <b>Connect <\/b>enth\u00e4lt die Verbindungszeichenfolge, wenn das Objekt eine per ODBC verkn\u00fcpfte Tabelle ist &#8211; 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\u00f6rter angeben. Beispiel:<\/p>\n<pre>DRIVER={SQL Server};SERVER=MeinServer;\nDATABASE=MeineDatenbank;UID=MeinBenutzername;\nPWD=MeinKennwort;<\/pre>\n<h2 data-tadv-p=\"keep\">Database<\/h2>\n<p>Wird eine Tabelle aus einer anderen Datenbank oder auch aus einer Textdatei oder einer Exceltabelle eingebunden, handelt es sich um eine Jet-Verkn\u00fcpfung.<\/p>\n<p>Eine solche speichert den Dateinamen der Quelldatei, also etwa einer Access-Datenbankdatei, einer Textdatei oder einer Excel-Datei, im Feld <b>Database<\/b>. Beispiel:<\/p>\n<pre>c:DatenbankenBeispiel.mdb<\/pre>\n<h2 data-tadv-p=\"keep\">DateCreate und DateUpdate<\/h2>\n<p>Diese beiden Felder speichern das Datum der Erstellung des Objekts sowie der letzten Aktualisierung.<\/p>\n<h2 data-tadv-p=\"keep\">Flags<\/h2>\n<p>Das Feld <b>Flags<\/b> enth\u00e4lt einen Zahlenwert, der weitere Informationen \u00fcber den Typ des Objekts liefert. Weitere Informationen zu den Werten dieses Feldes finden Sie weiter unten in Zusammenhang mit den verschiedenen Objekttypen.<\/p>\n<h2 data-tadv-p=\"keep\">ForeignName<\/h2>\n<p>Das Feld <b>ForeignName <\/b>findet f\u00fcr verkn\u00fcpfte Tabellen Verwendung. Wenn Sie beispielsweise eine Tabelle namens <b>tblTest <\/b>einer anderen Datenbank mit der aktuellen Datenbank verkn\u00fcpfen und es ist bereits eine Tabelle gleichen Namens vorhanden, erh\u00e4lt die Verkn\u00fcpfung in der aktuellen Tabelle einen anderen Namen im Feld <b>Name<\/b>. <strong>F<\/strong><b>oreignName <\/b>hingegen beh\u00e4lt den Namen der Originaltabelle bei.<\/p>\n<h2 data-tadv-p=\"keep\"><b>Id<\/b><\/h2>\n<p>Das Feld <b>Id <\/b>dient schlicht und einfach als eindeutiger Bezeichner und Prim\u00e4rschl\u00fcsselfeld f\u00fcr ein Objekt. Es ist jedoch nicht als Autowertfeld definiert.<\/p>\n<h2 data-tadv-p=\"keep\">Name<\/h2>\n<p>Das Feld <b>Name <\/b>enth\u00e4lt den Namen des Objekts, wie er auch im Datenbankfenster beziehungsweise Navigationsbereich erscheint.<\/p>\n<h2 data-tadv-p=\"keep\">ParentId<\/h2>\n<p>Das Feld <b>ParentId <\/b>enth\u00e4lt einen <b>Long<\/b>-Wert, der \u00fcber das Feld <b>Id <\/b>auf einen \u00fcbergeordneten Datensatz der Tabelle <b>MSysObjects <\/b>verweist. So enthalten dort beispielsweise alle Objekte des Typs <b>Formular <\/b>den gleichen Wert, den der Datensatz mit dem Wert <b>Forms <\/b>im Feld <b>Name <\/b>im Feld <b>Id <\/b>enth\u00e4lt.<\/p>\n<h2 data-tadv-p=\"keep\">Type<\/h2>\n<p>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 <b>Objekte nach Objekttyp filtern<\/b>.<\/p>\n<h2 data-tadv-p=\"keep\">Abfragen auf Basis der Tabelle MSysObjects<\/h2>\n<p>In den folgenden Abschnitten schauen wir uns einige Abfragen an, mit denen Sie wichtige Informationen aus der Tabelle <b>MSysObjects <\/b>ziehen k\u00f6nnen.<\/p>\n<p><!--30percent--><\/p>\n<p>Interessant ist hier eigentlich nur der Weg, diese Tabelle verf\u00fcgbar zu machen, wenn sie nicht im Datenbankfenster beziehungsweise Navigationsbereich angezeigt wird &#8211; sie erscheint dann n\u00e4mlich auch nicht im Auswahldialog der Tabellen und Abfragen.<\/p>\n<\/p>\n<p>Dazu \u00f6ffnen Sie eine neue Abfrage, schlie\u00dfen den Dialog <b>Tabelle anzeigen<\/b> und wechseln in die <b>SQL-Ansicht<\/b>. Dort tragen Sie einfach die folgende Abfrage ein (s. Bild 4):<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2013_02\/MSysObjects-web-images\/pic004.png\" alt=\"pic004.png\" \/><\/p>\n<p><b><span style=\"color: darkgrey;\">Bild 4: Zugriff auf die Tabelle MSysObjects per Abfrage<\/span><\/b><\/p>\n<pre>SELECT * FROM MSysObjects;<\/pre>\n<p>Wenn Sie nun in die Entwurfsansicht wechseln, finden Sie dort auch die gew\u00fcnschte Tabelle vor (s. Bild 5). Nun f\u00fcgen Sie die ben\u00f6tigten Felder hinzu.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2013_02\/MSysObjects-web-images\/pic005.png\" alt=\"pic005.png\" \/><\/p>\n<p><b><span style=\"color: darkgrey;\">Bild 5: Abfrageentwurf mit der Tabelle MSysObjects<\/span><\/b><\/p>\n<h2 data-tadv-p=\"keep\">Objekte aus MSysObjects nach \u00c4nderungsdatum<\/h2>\n<p>Wenn Sie einmal ermitteln m\u00f6chten, welche Objekte zuletzt ge\u00e4ndert wurden, verwenden Sie die Abfrage <b>qryZuletztGeaendert <\/b>der Beispieldatenbank.\u00a0Diese sieht im Entwurf wie in Bild 6 aus und zeigt die Felder <b>Name<\/b>, <b>Type<\/b>, <b>DateCreate <\/b>und <b>DateUpdate <\/b>an.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2013_02\/MSysObjects-web-images\/pic006.png\" alt=\"pic006.png\" \/><\/p>\n<p><b><span style=\"color: darkgrey;\">Bild 6: Sortieren der Objekte nach dem \u00c4nderungsdatum<\/span><\/b><\/p>\n<p>Die Abfrage sortiert die Datens\u00e4tze in absteigender Reihenfolge nach dem Feld <b>DateUpdate<\/b>.<\/p>\n<h2 data-tadv-p=\"keep\">Objekte aus MSysObjects nach Objekttyp filtern<\/h2>\n<p>Wenn Sie die Objekte nach Ihrem Typ filtern m\u00f6chten, also etwa nach Tabelle, Abfrage, Formular et cetera, verwenden Sie haupts\u00e4chlich das Feld <b>Type<\/b> als Filterkriterium.<\/p>\n<p>Hier k\u00f6nnen wir zun\u00e4chst die folgenden Werte als charakteristisch f\u00fcr die verschiedenen Objekttypen feststellen:<\/p>\n<ul>\n<li class=\"aufz-hlung\"><b>-32.768<\/b>: Formulare<\/li>\n<li class=\"aufz-hlung\"><b>-32.766<\/b>: Makros<\/li>\n<li class=\"aufz-hlung\"><b>-32.764<\/b>: Berichte<\/li>\n<li class=\"aufz-hlung\"><b>-32.761<\/b>: Module (Standard- und Klassenmodule)<\/li>\n<li class=\"aufz-hlung\"><b>1<\/b>: Lokale Tabellen<\/li>\n<li class=\"aufz-hlung\"><b>2<\/b>: MSysDb<\/li>\n<li class=\"aufz-hlung\"><b>3<\/b>: Container f\u00fcr Datenbankobjekte<\/li>\n<li class=\"aufz-hlung\"><b>4<\/b>: Per ODBC verkn\u00fcpfte Tabellen<\/li>\n<li class=\"aufz-hlung\"><b>5<\/b>: Abfragen<\/li>\n<li class=\"aufz-hlung\"><b>6<\/b>: Per Jet verkn\u00fcpfte Tabellen<\/li>\n<li class=\"aufz-hlung\"><b>8<\/b>: Unterdatenbl\u00e4tter (da diese nicht besonders verbreitet sind: Es handelt sich dabei um die in der Datenblattansicht aufklappbaren Untertabellen &#8211; siehe Bild 7)<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2013_02\/MSysObjects-web-images\/pic012.png\" alt=\"pic012.png\" \/><\/p>\n<p><b><span style=\"color: darkgrey;\">Bild 7: Auch Unterdatenbl\u00e4tter erhalten in der Tabelle MSysObjects einen eigenen Eintrag.<\/span><\/b><\/p>\n<h2 data-tadv-p=\"keep\">Nur benutzerdefinierte Tabellen aus MSysObjects ermitteln<\/h2>\n<p>Wie Sie bereits gesehen haben, gibt es drei Werte im Feld <b>Type<\/b>, die auf Tabellen hindeuten &#8211; <b>1 <\/b>f\u00fcr lokale Tabellen, <b>4 <\/b>f\u00fcr ODBC-Tabellen und <b>6 <\/b>f\u00fcr per Jet verkn\u00fcpfte Tabellen.<\/p>\n<p>Bei den lokalen Tabellen d\u00fcrfte es Sie noch interessieren, welche davon benutzerdefiniert sind und bei welchen es sich um Systemtabellen handelt.<\/p>\n<p>Der Unterschied ist leicht zu erkennen: Systemtabellen beginnen mit der Zeichenfolge <b>MSys <\/b>und sind in der Regel schreibgesch\u00fctzt.<\/p>\n<p>Es gibt auch noch Tabellen, die mit <b>USys <\/b>beginnen. Diese sind jedoch benutzerdefiniert und dienen nur speziellen Zwecken.<\/p>\n<p>Die Tabelle <b>USysRegInfo <\/b>etwa finden Sie in Access-Add-In-Datenbanken (<b>.mda <\/b>und <b>.accda<\/b>). Sie enth\u00e4lt Informationen, wie die Datenbank in der Registry registriert und so als Add-In zug\u00e4nglich gemacht werden soll.<\/p>\n<p>Die Tabelle <b>USysRibbons <\/b>wiederum wird ab Access 2007 verwendet, um die in einer Anwendung verf\u00fcgbaren Ribbon-Definitionen im XML-Format abzulegen.<\/p>\n<p>Die meisten Systemtabellen zeichnen sich dadurch aus, dass sie nur durch Access selbst ge\u00e4ndert werden k\u00f6nnen. Anders ist dies bei den Tabellen, die mit <b>MSysNav <\/b>beginnen (ab Access 2007).<\/p>\n<p>Diese enthalten Informationen dar\u00fcber, wie die Objekte im Navigationsbereich angezeigt werden. Sie k\u00f6nnen diese l\u00f6schen, aber Access stellt sie beim n\u00e4chsten \u00d6ffnen der Datenbank wieder her.<\/p>\n<p>Seit Access 2010 gibt es eine Tabelle namens <b>MSysResources<\/b>. Diese enth\u00e4lt Dateien, die f\u00fcr die aktuelle Anwendung ben\u00f6tigt werden &#8211; zum Beispiel Bilddateien, die Schaltfl\u00e4chen oder Bildsteuerelementen zugeordnet wurden oder Dateien mit Design-Informationen. Auch diese Tabelle k\u00f6nnen Sie l\u00f6schen, sie wird jedoch beim Einf\u00fcgen eines Bildes oder einer Datei wiederhergestellt.<\/p>\n<h2 data-tadv-p=\"keep\">Verschiedene Tabellentypen aus MSysObjects ermitteln<\/h2>\n<p>Nun ben\u00f6tigen wir noch eine Abfrage, mit der wir die verschiedenen Tabellentypen ermitteln und ausgeben k\u00f6nnen &#8211; samt lesbaren Informationen statt Zahlenwerten.<\/p>\n<p>Diese Abfrage sieht im Entwurf wie in Bild 8 aus und filtert zun\u00e4chst alle Datens\u00e4tze der Tabelle <b>MSysObjects <\/b>nach dem Inhalt des Feldes <b>Type<\/b>. Dabei liefert die Abfrage nur solche Datens\u00e4tze, deren Wert <b>1<\/b>, <b>4 <\/b>oder <b>6 <\/b>betr\u00e4gt.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2013_02\/MSysObjects-web-images\/pic008.png\" alt=\"pic008.png\" \/><\/p>\n<p><b><span style=\"color: darkgrey;\">Bild 8: Abfrage zum Ermitteln der Tabellen und ihrer Details<\/span><\/b><\/p>\n<p>Damit erhalten Sie bereits alle Tabellen. Nun wollen wir weitere Informationen: Ist die Tabelle per ODBC oder per Jet eingebunden? Woher stammt die Tabelle, wenn es sich um eine verkn\u00fcpfte Tabelle handelt<\/p>\n<p>Diese Informationen lassen sich aus dem Feld <b>Flags <\/b>gewinnen. Das Feld rechts im Abfrageentwurf enth\u00e4lt einen Ausdruck, der die in diesem Feld enthaltenen Informationen mithilfe einer Funktion aufschl\u00fcsselt:<\/p>\n<pre>Tabellentyp: Tabellentyp([Flags])<\/pre>\n<p>Die Funktion <b>Tabellentyp<\/b> erwartet als Parameter den <b>Long<\/b>-Zahlenwert aus dem Feld <b>Flags <\/b>und liefert eine Zeichenkette mit der Beschreibung des Tabellentyps zur\u00fcck (s. <span class=\"verweis-ohneumbruch\"><a href=\"#anker-71-anchor\">Listing 1<\/a><\/span>).<\/p>\n<p class=\"listingueberschrift\">Listing 1: Ermitteln von Detailinformationen zum Tabellentyp<\/p>\n<pre>Public Function Tabellentyp(lngFlags As Long) As String\n    Dim strTemp As String\n    If lngFlags = 0 Then\n        strTemp = strTemp &amp; \"|Access-Tabelle\"\n    Else\n        If (lngFlags And -2147483648#) = -2147483648# Then\n            strTemp = strTemp &amp; \"|Systemtabelle\"\n            lngFlags = lngFlags - (-2147483648#)\n        End If\n        If (lngFlags And 2) = 2 Then\n            strTemp = strTemp &amp; \"|Systemtabelle|Nicht schreibgesch\u00fctzt\"\n            lngFlags = lngFlags - (2)\n        End If\n        If (lngFlags And 8) = 8 Then\n            strTemp = strTemp &amp; \"|Ausgeblendet\"\n            lngFlags = lngFlags - (8)\n        End If\n        If (lngFlags And 11534336) = 11534336 Then\n            strTemp = strTemp &amp; \"|Excel-Tabelle\"\n            lngFlags = lngFlags - (11534336)\n        End If\n        If (lngFlags And 10485760) = 10485760 Then\n            strTemp = strTemp &amp; \"|Textdatei\"\n            lngFlags = lngFlags - (10485760)\n        End If\n        If (lngFlags And 2097152) = 2097152 Then\n            strTemp = strTemp &amp; \"|Verkn\u00fcpfte Accesstabelle\"\n            lngFlags = lngFlags - (2097152)\n        End If\n        If (lngFlags And 1048576) = 1048576 Then\n            strTemp = strTemp &amp; \"|Verkn\u00fcpfte ODBC-Tabelle\"\n            lngFlags = lngFlags - (1048576)\n        End If\n    End If\n    If Len(strTemp) &gt; 0 Then\n        strTemp = Mid(strTemp, 2)\n    End If\n    If lngFlags &gt; 0 Then\n        Debug.Print \"Unbekanntes Tabellenflag: \" &amp; lngFlags\n    End If\n    Tabellentyp = strTemp\nEnd Function<\/pre>\n<p>Dabei pr\u00fcft die Tabelle zun\u00e4chst, ob das Feld <b>Flags <\/b>den Wert <b>0 <\/b>hat &#8211; dies weist auf eine lokale, benutzerdefinierte und sichtbare Access-Tabelle hin. Dann landet der Ausdruck <b>|Access-Tabelle <\/b>in der Variablen <b>strTemp<\/b>.<\/p>\n<h2 data-tadv-p=\"keep\">Weitere Pr\u00fcfungen<\/h2>\n<p>Anderenfalls folgen einige weitere Pr\u00fcfungen, bei denen die Funktion einen Bin\u00e4rvergleich zwischen dem Wert in <b>lngFlags <\/b>und bestimmten charakteristischen Werten durchf\u00fchrt. Wenn <b>lngFlags <\/b>beispielsweise den Wert <b>-2.147.483.648 <\/b>enth\u00e4lt, handelt es sich um eine Systemtabelle und der Ausdruck <b>|Systemtabelle <\/b>wird der Variablen <b>strTemp <\/b>angeh\u00e4ngt.<\/p>\n<p>Auf diese Weise gleicht die Funktion den Wert in <b>lngFlags <\/b>mit den g\u00e4ngigen Werten ab und f\u00fcgt die entsprechenden Hinweistexte an die Variable <b>strTemp <\/b>an. Gegebenenfalls sind dies auch mehrere, deshalb verwendet die Funktion mehrere aufeinanderfolgende <b>If&#8230;Then<\/b>-Statements und nicht etwa eine <b>Select Case<\/b>-Bedingung. Schlie\u00dflich pr\u00fcft die Funktion, ob <b>strTemp <\/b>\u00fcberhaupt einen Wert enth\u00e4lt, und schneidet das erste Pipe-Zeichen (<b>|<\/b>) im Ausdruck ab.<\/p>\n<p>Das Ergebnis gibt die Funktion an die aufrufende Anweisung in der Abfrage zur\u00fcck. F\u00fcr die Tabellen der Beispieldatenbank sieht dies etwa wie in Bild 9 aus.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2013_02\/MSysObjects-web-images\/pic009.png\" alt=\"pic009.png\" \/><\/p>\n<p><b><span style=\"color: darkgrey;\">Bild 9: Tabellen der Beispieldatenbank mit der Beschreibung des Tabellentyps<\/span><\/b><\/p>\n<p>Schlie\u00dflich subtrahiert die Funktion innerhalb jeder <b>If&#8230;Then<\/b>-Bedingung den gefundenen Wert von <b>lngFlags <\/b>ab. Sollte <b>lngFlags <\/b>nach dem Durchlaufen aller <b>If&#8230;Then<\/b>-Bedingungen noch gr\u00f6\u00dfer als <b>0 <\/b>sein, enth\u00e4lt <b>lngFlags <\/b>noch nicht behandelte Eigenschaften. Dann verwenden Sie vielleicht eine Verkn\u00fcpfung zu einer hier nicht ber\u00fccksichtigten Datenherkunft.<\/p>\n<h2 data-tadv-p=\"keep\">Abfragen aus MSysObjects ermitteln<\/h2>\n<p>Wenn Sie alle Abfragen einer Datenbank ermitteln m\u00f6chten, filtern Sie eine <b>SELECT<\/b>-Abfrage auf Basis der Tabelle <b>MSysObjects <\/b>nach dem Wert <b>5 <\/b>im Feld <b>Type<\/b>:<\/p>\n<pre>SELECT Name, Type\nFROM MSysObjects\nWHERE Type=5;<\/pre>\n<p>Auch hier liefert das Feld <b>Flags<\/b> noch weitere Informationen, die wir im folgenden Abschnitt unter die Lupe nehmen.<\/p>\n<h2 data-tadv-p=\"keep\">Abfragetyp aus MSysObjects ermitteln<\/h2>\n<p>Das Feld <b>Flags <\/b>kann beispielsweise die folgenden Werte annehmen:<\/p>\n<ul>\n<li class=\"aufz-hlung\"><b>0<\/b>: Auswahlabfrage<\/li>\n<li class=\"aufz-hlung\"><b>3<\/b>: Auswahlabfrage als Datenherkunft von Formularen oder Berichten oder als Datensatzherkunft von Kombinations- oder Listenfeldern<\/li>\n<li class=\"aufz-hlung\"><b>16<\/b>: Kreuztabellen-Abfrage<\/li>\n<li class=\"aufz-hlung\"><b>32<\/b>: <b>DELETE<\/b>-Abfrage<\/li>\n<li class=\"aufz-hlung\"><b>48<\/b>: <b>UPDATE<\/b>-Abfrage<\/li>\n<li class=\"aufz-hlung\"><b>64<\/b>: <b>INSERT INTO<\/b>-Abfrage<\/li>\n<li class=\"aufz-hlung\"><b>80<\/b>: <b>SELECT INTO<\/b>-Abfrage<\/li>\n<li class=\"aufz-hlung\"><b>96<\/b>: <b>DDL<\/b>-Abfrage<\/li>\n<li class=\"aufz-hlung\"><b>112<\/b>: Pass-Through-Auswahlabfrage<\/li>\n<li class=\"aufz-hlung\"><b>128<\/b>: <b>UNION<\/b>-Abfrage<\/li>\n<li class=\"aufz-hlung\"><b>144<\/b>: Pass-Through-Aktionsabfrage<\/li>\n<\/ul>\n<p>Die Abfrage <b>qryAlleAbfragenMitEigenschaften <\/b>liefert die Namen aller Abfragen samt <b>Flags<\/b>-Feld und einer Beschreibung des Abfragetyps (s. Bild 10).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2013_02\/MSysObjects-web-images\/pic010.png\" alt=\"pic010.png\" \/><\/p>\n<p><b><span style=\"color: darkgrey;\">Bild 10: Abfrage zur Ausgabe von Abfragen mit Abfragetyp<\/span><\/b><\/p>\n<p>Auch diese Abfrage arbeitet wieder mit einer VBA-Funktion zum Ermitteln des Abfragetyps auf Basis des Wertes im Feld <b>Flags<\/b>.<\/p>\n<p>Details dazu finden Sie in der Funktion <b>Abfragetyp <\/b>im Modul <b>mdlTools <\/b>der Beispieldatenbank. Damit erhalten Sie das Ergebnis aus Bild 11.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2013_02\/MSysObjects-web-images\/pic011.png\" alt=\"pic011.png\" \/><\/p>\n<p><b><span style=\"color: darkgrey;\">Bild 11: Alle Abfragen mit Detailinformationen<\/span><\/b><\/p>\n<h2 data-tadv-p=\"keep\">Zusammenfassung und Ausblick<\/h2>\n<p>Wenn Sie wissen, wie Sie Informationen \u00fcber die verschiedenen Datenbankobjekte aus der Tabelle <b>MSysObjects <\/b>auslesen k\u00f6nnen, erhalten Sie ein wichtiges Werkzeug &#8211; gerade wenn Sie etwa von Access-Add-Ins aus auf Tabellen und Abfragen zugreifen m\u00f6chten.<\/p>\n<\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>MSysObjects.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/57A23FB0-938E-4915-8037-154A636D68FF\/aiu_874.zip\">Download<\/a><\/p>\n<h2>Weitere interessante Artikel zu diesem Thema<\/h2>\n<p><a href='https:\/\/www.access-im-unternehmen.de\/1233'>Bilder in MSysResources verwalten<\/a><\/p>\n<p><a href='https:\/\/www.access-im-unternehmen.de\/1224'>Objekte im Ribbon verf&uuml;gbar machen<\/a><\/p>\n<p><!--LinksEnde--><\/p>\n","protected":false},"excerpt":{"rendered":"<p>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&ouml;nnen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[66022013,662013,44000021],"tags":[],"class_list":["post-55000874","post","type-post","status-publish","format-standard","hentry","category-66022013","category-662013","category-Tabellen_und_Datenmodellierung"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>MSysObjects: Diese Tabelle enth\u00e4lt Informationen \u00fcber Access-Objekte<\/title>\n<meta name=\"description\" content=\"Die Systemtabelle MSysObjects stellt Informationen \u00fcber die Objekte einer Access-Datenbank wie Tabellen, Abfragen oder Formulare bereit.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Die_Tabelle_MSysObjects\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Die Tabelle MSysObjects\" \/>\n<meta property=\"og:description\" content=\"Die Systemtabelle MSysObjects stellt Informationen \u00fcber die Objekte einer Access-Datenbank wie Tabellen, Abfragen oder Formulare bereit.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Die_Tabelle_MSysObjects\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2021-03-22T16:35:10+00:00\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"12\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Die_Tabelle_MSysObjects\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Die_Tabelle_MSysObjects\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Die Tabelle MSysObjects\",\"datePublished\":\"2021-03-22T16:35:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Die_Tabelle_MSysObjects\\\/\"},\"wordCount\":1878,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"articleSection\":[\"2\\\/2013\",\"2013\",\"Tabellen und Datenmodellierung\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Die_Tabelle_MSysObjects\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Die_Tabelle_MSysObjects\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Die_Tabelle_MSysObjects\\\/\",\"name\":\"MSysObjects: Diese Tabelle enth\u00e4lt Informationen \u00fcber Access-Objekte\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"datePublished\":\"2021-03-22T16:35:10+00:00\",\"description\":\"Die Systemtabelle MSysObjects stellt Informationen \u00fcber die Objekte einer Access-Datenbank wie Tabellen, Abfragen oder Formulare bereit.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Die_Tabelle_MSysObjects\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Die_Tabelle_MSysObjects\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Die_Tabelle_MSysObjects\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Die Tabelle MSysObjects\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"MSysObjects: Diese Tabelle enth\u00e4lt Informationen \u00fcber Access-Objekte","description":"Die Systemtabelle MSysObjects stellt Informationen \u00fcber die Objekte einer Access-Datenbank wie Tabellen, Abfragen oder Formulare bereit.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Die_Tabelle_MSysObjects\/","og_locale":"de_DE","og_type":"article","og_title":"Die Tabelle MSysObjects","og_description":"Die Systemtabelle MSysObjects stellt Informationen \u00fcber die Objekte einer Access-Datenbank wie Tabellen, Abfragen oder Formulare bereit.","og_url":"https:\/\/access-im-unternehmen.de\/Die_Tabelle_MSysObjects\/","og_site_name":"Access im Unternehmen","article_published_time":"2021-03-22T16:35:10+00:00","author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"12\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Die_Tabelle_MSysObjects\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Die_Tabelle_MSysObjects\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Die Tabelle MSysObjects","datePublished":"2021-03-22T16:35:10+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Die_Tabelle_MSysObjects\/"},"wordCount":1878,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"articleSection":["2\/2013","2013","Tabellen und Datenmodellierung"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Die_Tabelle_MSysObjects\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Die_Tabelle_MSysObjects\/","url":"https:\/\/access-im-unternehmen.de\/Die_Tabelle_MSysObjects\/","name":"MSysObjects: Diese Tabelle enth\u00e4lt Informationen \u00fcber Access-Objekte","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"datePublished":"2021-03-22T16:35:10+00:00","description":"Die Systemtabelle MSysObjects stellt Informationen \u00fcber die Objekte einer Access-Datenbank wie Tabellen, Abfragen oder Formulare bereit.","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Die_Tabelle_MSysObjects\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Die_Tabelle_MSysObjects\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Die_Tabelle_MSysObjects\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Die Tabelle MSysObjects"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000874","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55000874"}],"version-history":[{"count":14,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000874\/revisions"}],"predecessor-version":[{"id":88072492,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000874\/revisions\/88072492"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000874"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000874"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000874"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}