# [MS Access] Alle Tabellennamen auslesen



## d-Stench (23. August 2005)

Hallo!

kann mir jamand ein Beispiel schreiben, wie ich die vorhandenen Tabellen (nur Namen) in der DB auslesen kann

Danke


----------



## Thomas Darimont (23. August 2005)

Hallo!

 ich denke, dass geht nur per VB(A):

```
Dim cat As New ADOX.Catalog
 Set cat.ActiveConnection = CurrentProject.Connection
 For Each tbl In cat.Tables
 	Debug.Print tbl.Name
 Next tbl
 Set cat = Nothing
```
 
 Verweis:
 Microsoft ADO Ext. 2.7 for DDL and Security hinzufügen.

 Gruß Tom

 Gruß Tom


----------



## d-Stench (23. August 2005)

kann man das nicht in C# realisieren?


----------



## Thomas Darimont (23. August 2005)

Hallo!

  Na klar:

```
using System;
  using System.Data;
  using System.Data.OleDb;
  
  namespace DatabaseSchemaExplorerExample
  {
  	/// <summary>
  	/// Zusammendfassende Beschreibung für DatabaseSchemaExplorer
  	/// </summary>
  	class DatabaseSchemaExplorer
  	{
  		/// <summary>
  		/// Der Haupteinstiegspunkt für die Anwendung.
  		/// </summary>
  		[STAThread]
  		static void Main(string[] args)
  		{
  			OleDbConnection oleDbConnection = null;
  			try
  			{
			    oleDbConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/Programme/Microsoft Office/Office/Samples/Nordwind.mdb;User Id=;Password=;");
  				oleDbConnection.Open();
			    DataTable dbSchemaTable = oleDbConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[]{null,null,null,"TABLE"});
			    foreach (DataRow row in dbSchemaTable.Rows)
  				{
			    			    Console.WriteLine(row["TABLE_NAME"]);
  				}
  			}
  			finally
  			{
				if(oleDbConnection != null)
  				{
			    			    oleDbConnection.Close();
  				}
  			}
  		}
  	}
  }
```
 
  Gruß tom


----------



## d-Stench (23. August 2005)

Danke, gleich ausprobieren


----------



## d-Stench (24. August 2005)

Hat geklappt

Super


----------



## andi_g69 (24. August 2005)

Du kannst aber auch in die Tabelle systables (oder so ähnlich) gucken. Da stehen auch alle Tabellennamen drin...


----------



## Thomas Darimont (24. August 2005)

Hallo!

 ich denke nicht, dass man da über eine "normale Abfrage" -> Abfrageassistent da heran kommt. Was auf jeden Fall geht ist die Abfrage des Datenbank-Katalogs per VBA.

 Gruß Tom


----------



## d-Stench (24. August 2005)

Dank deinem Beispiel, hab ich die Namen der Tabellen in C# auslesen können...


----------



## d-Stench (27. August 2005)

Kann man diesen Abschnitt:


```
foreach (DataRow row in dbSchemaTable.Rows)
  	{
		Console.WriteLine(row["TABLE_NAME"]);
  	}
```

mit einer WHILE-Schleife realisieren?


----------



## 300bar (25. Juli 2009)

Hallo zusammen,

ich habe BEispiel auf vb.net umgestellt. Allerdings bekomme ich hier nicht das gwünschte Ergebniss. 
Genauer gesagt:  For each "findet" zwar einen Eintrag. 
Allerdings ist das ein Ergebniss leer.

Die angegebene Datebank enthält im Beispiel eine Tabelle.

Dim conn As OleDbConnection = New OleDbConnection( _
          "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" _
          & DbPath)
      conn.Open()

      Dim dbtable As DataTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, _
                                New Object() {Nothing, Nothing, Nothing, "TABLES"})
      Dim row As DataRow = dbtable.Rows.Add

      For Each row In dbtable.Rows
        MessageBox.Show(row("TABLE_NAME").ToString)
      Next
      conn.Close()

Hat jemand eine Idee?
Gruß 
Reinhard


----------



## werbung_hierhin (26. April 2011)

Ich habe den Fehler eindeckt:
Für Alle, die den Tipp noch lesen

in der Zeile 
"New Object() {Nothing, Nothing, Nothing, "TABLES"})"
muss es heißen
New Object() {Nothing, Nothing, Nothing, "TABLE"})

Gruß
Micha


----------

