access Tabellenamen auslesen



  • Hallo
    ich lese ueber DAO mit der Klasse

    CDaoTableDefInfo
    

    die 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
    MSysRelationships

    Uebrigens ich lese die Tabellenamen mit der Funktion

    GetTableDefInfo
    

    aus.
    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:

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmfc98/html/_mfc_cdaotabledefinfo_structure.asp

    MfG



  • @Probenutzer Vielen Dank! 🙂


Anmelden zum Antworten