Vinzenz Mai: Access SQL

Beitrag lesen

Hallo,

Gibt es ein Pendant zu dem MySQL Befehl "SHOW TABLES;"
im Access SQL?

steht Dir MS-Access zur Verfügung? Wenn ja, aktiviere bitte über

Extras->Optionen->Ansicht

die Anzeige der Systemobjekte.

Du wirst bei den Tabellen ein paar neue Tabellen finden, die allesamt mit MSys beginnen, die Systemtabellen von MS Access. Ein Blick auf die Namen der Tabellen, anschließend auf den Inhalt zeigt Dir, dass MSysObjects die Tabelle ist, die Du befragen möchtest.

Mit der Anweisung

SELECT  
    Name  
FROM  
    MSysObjects  
WHERE Type = 1;

erhältst Du die Namen der Tabellen. Interessieren Dich die Systemtabellen nicht,
so erhältst Du mit

SELECT  
    Name  
FROM  
    MSysObjects  
WHERE (Type = 1)  
  AND (Name NOT LIKE "MSys*");

die Namen der Benutzertabellen.

Eine Alternative wäre der Weg über die ADO-Objekte. Es gibt den Catalog, der unter anderem die Tables-Collection enthält, diese wiederum enthält Informationen über die Table-Objekte.
Im Anschluss etwas Beispielcode in VBA, den Du einfach in ein (neues) Modul einfügen kannst. Vorher solltest Du ein, zwei Tabellen und aus Demo-Gründen ein oder zwei Abfragen erstellen:

' Demoprozedur zur Anzeige der Tables-Collection
Private Sub test()
    ' Benötigte Variablen
    ' Ein Catalog-Objekt
    Dim cat As New ADOX.catalog
    ' Die Schleifenvariable vom Typ Table-Objekt
    Dim tbl As Table

' Wir schauen uns die Tabellen der aktuellen DB an
    Set cat.ActiveConnection = CurrentProject.Connection
    ' Ja ich weiß, hier gehört prinzipiell eine Fehlerbehandlung hin :-)

' Iterieren durch die Auflistung der Table-Objekte
    For Each tbl In cat.Tables
        ' Ausgabe des Objektnamens und des Typs
        ' Beachte bitte, dass die Tables-Collection verschiedene
        ' Objekttypen enthält, z.B.
        ' SYSTEM TABLE (Systemtabellen)
        ' TABLE (Tabellen)
        ' VIEW (Abfragen)
        Debug.Print tbl.Name & " " & tbl.Type
    Next tbl

' Aufräumen
    Set cat = Nothing
End Sub

Dies kann ein Ansatz für den Zugriff unter ASP sein.

Freundliche Grüße

Vinzenz, der etwas irritiert ist, weil er ein paar Postings vermisst.

PS: Und bei Microsoft die Doku dazu nicht gefunden hat.