access Tabellenamen auslesen
-
Hallo
ich lese ueber DAO mit der KlasseCDaoTableDefInfodie Tabllenamen einer access Datenabank aus. Ich bekomme allerdings bei allen bisherig ausgelesenen Tabellen noch weitere Tabellennamen, die sich ueberhaupt nicht in der Datenbank befinden. Es handelt sich in allen Faellen immer um folgende Taballennamen:
MSysAccessObjects
MSysACEs
MSysIMEXColumns
MSysIMEXSpecs
MSysModules
MSysModules2
MSysObjects
MSysQueries
MSysRelationshipsUebrigens ich lese die Tabellenamen mit der Funktion
GetTableDefInfoaus.
Wer kann mir erklaeren warum zusaetzlich diese beschriebenen Tabellennamen ausgegeben werden und was es damit auf sich hat????
Wie kann ich deren Ausgabe verhindern?
vielen Dank schon mal fuer eure Hilfe!
-
Hallo,
jedes DBMS muß irgendwo die Verwaltungsinformationen einer Datenbank speichern. ACCESS macht das in Tabellen, die immer mit MSys beginnen. Diese Tabellen kann man sich über das Ändern einer Option auch in der ACCESS-Oberfläche selbst anzeigen lassen, standardmäßig sind sie immer ausgeblendet, weil man mit ihnen normalerweise nichts zu tun hat. Dein Problem läßt sich sehr einfach lösen, denn die CDaoTableDefInfo-Struktur enthält eine Komponente m_lAttributes, die die Eigenschaften der Tabelle beschreibt. Ist in m_lAttributes das Flag dbSystemObject gesetzt, dann handelt es sich um eine solche MSys..Tabelle. Jetzt berücksichtigst du einfach diese Tabellen mit diesem Merkmal nicht, und das war's...
Diese Information findest du übrigens auch in der MSDN-Lib hier:
MfG
-
@Probenutzer Vielen Dank!
