# [Access - DAO] Auflisten von vorhandenen Tabellen



## sabine (30. Mai 2006)

Hallio Hallo liebe Tutorials-User.

Beschäftige mich derzeit mit VB und Access ( DAO ). Was ich vorhabe, klingt an für sich sehr einfach... hinbekommen habe ich es bisher leider noch nicht!

Das Aufbauen einer DB-Verbindung, Auslesen, Eintragen et cetera funktioniert bereits.
Nun möchte ich jedoch alle vorhandenen Tabellen aus der selektierten Datenbank darstellen lassen! Bei dem versuch über Show Tables an das gewünschte Ziel zu gelangen, wird mir eine Fehlermeldung angezeigt ( Update , Delete , Select oder Insert erwartet.. )

Hat möglicherweise von euch jemand einen Tipp der weiterhelfen könnte 

Wünsche noch einen schönen Tag.
Gruß Sabine.


----------



## dignsag (30. Mai 2006)

Hi,

du machst das folgendermaßen:


```
Dim NewDb as Database '<- Das ist deine Datenbank
Dim TD as TableDef '<- Steht allgemein für eine Tabelle
Dim Tabellen as String

Set NewDb = CurrentDb 'Das ist in Access die Datenbank in der du dich befindest kann natürlich auch ne andere Externe Datenbank sein Haupsache du speicherst in der Variable deine Datenbank

For Each TD in NewDb.TableDefs   '<- Für jede Tabelle der Datenbank ein Schleifendurchlauf
     Tabellen = TD.Name & ";"         'Den Namen der Tabelle im String speichern, du kannst natürlich auch ne Combobox oder so benutzen.
Next
```

Das Ergebnis des Ganzen ist dann ein String der wie folgt aussehen könnte:

Tabelle1;Tabelle2;Tabelle3; usw.

Das ist natürlich nur ein Ansatz. Ich weiß ja nicht genau was du machen willst.

Greifst du von Access auf Externe Datenbanken zu?
Oder Greifst du aus einem Externen Programm auf Access zu?

Gruß

Dignsag


----------



## sabine (30. Mai 2006)

Hallo dignsag,

danke für deine schnelle Antwort. Um schnell auf deine Frage einzugehen, der Anwender kann sich eine beliebige Datenbank auswählen, die dann geöffnet werden soll. Nach erfolgreichem Verbindungsaufbau soll dann eine Auflistung aller Tabellen stattfinden ( Listbox ).

Leider hat dein Tipp nicht den gewünschten Erfolg gebracht bzw. einen anderen Fehler verursacht. Anbei ein Stück Quelltext:



```
Public WithEvents sqlConn As Connection

Private Sub Button_Pfadwaehlen_Click()

Set sqlConn = New Connection
Dim TD As TableDef
Dim Tabellen As String
Dim NewDB As Database

Protokoll ("Ausgewhlten Pfad prfen...")
 
 If (Dir$(Box_DBPfad.Text)) <> "" Then
  Protokoll ("Gewhlte Datei ( " & Box_DBPfad.Text & " vorhanden...")
  
  If (InStr(Box_DBPfad.Text, ".mdb")) > 0 Then
  
   Protokoll ("Verbindung zur Datenbank (" & Box_DBPfad.Text & ") wird aufgebaut...")
  
   sqlConn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ= " & Box_DBPfad.Text & ";"

   Protokoll ("Verbindung aufgebaut...")
       
   SetAttribElementVerbinden
   
   Set NewDB = Box_DBPfad.Text ' Fehlermeldung
   
   For Each TD In NewDB.TableDefs 
    Tabellen = TD.name & ";"
   Next
   
   MsgBox (Tabellen)
   
  Else
   Protokoll ("Selektierte Datei (" & Box_DBPfad.Text & ") ist keine *.mdb...")
  End If
 Else
  Protokoll ("Gewhlte Datei (" & Box_DBPfad.Text & ") nicht vorhanden...")
 End If
 

End Sub
```

Noch eine Anmerkung, der Anwender bekommt eine Maske angezeigt.
Über diese Maske wird der Pfad der Datenbank angegeben bzw. ausgewählt


----------



## dignsag (31. Mai 2006)

Hallo Sabine,

hier der Code aus einem meiner Excelprogramme mit dem ich eine externe, frei wählbare Datenbank öffne und für jeden Tabellennamen einen Eintrag in einer Combobox setze:


```
Dim NewDB As Database
    Dim TableList As String
    Dim tbl As TableDef
    
    Set NewDB = DBEngine.OpenDatabase(frmImport.txtPath.Value) ' In die Klammer kommt einfach der Dateipfad der MDB rein
    
    For Each tbl In NewDB.TableDefs
        frmAccess.cbxTable.AddItem CStr(tbl.Name)
    Next
```

Es kann sein das bei meinem Beispiel die DataSource-Eigenschaft der Combobox auf "Wertliste" gestellt werden muss. Ich weiß das wenn du einen Tabellennamenstring mit ";" getrennt erzeugst, also "Tabellenname1;Tabellenname2" Das du dann diese Eigenschaft ganz sicher auf "Wertliste" stellen musst!


----------

