Tabellen einer Access Datenbank auflisten

Die einfachste Variante ist die Abfrage der Systemtabellen der Datenbank. Unter Access muss der
User "Administrator" Lesezugriff auf die Tabelle "MSysObjects" haben. Dies können Sie in Access 2000
unter "Extras -> Sicherheit -> Benutzer- und Gruppenberechtigungen" einstellen.

[listtables.asp]

<%
' --- SQL-String für Access
ListSQL = "SELECT name AS tablename FROM MSysObjects WHERE [type] = 1 AND [flags] = 0"
 
' --- SQL-String für Microsoft SQL Server 7.0
' --- ListSQL = "SELECT name AS tablename FROM SysObjects WHERE [type] = 'U'"
 
' --- SQL-String für Oracle 7.x oder höher (alle Tabellen, auf die der User Zugriff hat)
' --- ListSQL = "SELECT table_name AS tablename FROM all_tables"
 
' --- SQL-String für Oracle 7.x oder höher (alle Tabellen, die dem User gehören)
' --- ListSQL = "SELECT table_name AS tablename FROM user_tables"
 
Set ListRS = Server.CreateObject("ADODB.Recordset")
    ListRS.Open ListSQL, objConn, 3, 3
 
        ' --- Ausgabe der Überschrift
        Response.Write "<b><u>Tabellen in DB</u></b><br>" & vbCrLf
 
        Do While Not ListRS.EOF
 
            ' --- Ausgabe des Tabellennamens
            Response.Write ListRS.Fields("tablename") & "<br>" & vbCrLf
            ListRS.MoveNext
 
        Loop
 
    ListRS.Close
Set ListRS = Nothing
%>

——————————————————————————–
Alternativ kann man auch auf eine relativ unbekannte Methode des Connection-Objekts zurückgreifen.
Die OpenSchema-Methode. Mit Hilfe dieser Methode können Sie sehr viel über Ihre Datenbank erfahren.
So zum Beispiel auch, welche Tabellen in der Datenbank enthalten sind.

[listtables.asp]

<%
' --- Öffnen der Datenbankverbindung
Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open "<DSN>", "<UID>", "<PWD>"
 
' --- Instantiieren des Recordsets für das Auslesen der Tabellen
' --- adSchemaTables = 20 (Konstante definiert in adovbs.inc)
Set objRS = objConn.OpenSchema(adSchemaTables)
 
    Response.Write "<b>Tabellenname</b><br>"
    Do Until objRS.EOF
 
        ' --- Da auch die Systemtabelle (objRS.Fields("TABLE_TYPE") = "SYSTEM_TABLE")
        ' --- zurückgegeben werden, wird eine Eingrenzung auf die Usertabellen implementiert
        If objRS.Fields("TABLE_TYPE") = "TABLE" THEN
            Response.Write objRS.Fields("TABLE_NAME") & "<br>" & vbCrLf
        End if
 
        objRS.MoveNext
 
    Loop
 
' --- Schliessen und terminieren des Recordets
    objRS.Close
Set objRS = Nothing
 
' --- Schliessen und terminieren der Datenbankverbindung
    objConn.Close
Set objConn = Nothing
%>

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert