2012-05-01 7 views
7

Ich habe eine DB in Access mit einer unglaublichen Anzahl von Tabellen. Unglücklicherweise verwendete der Ersteller sehr nicht-beschreibende Namen, so dass es im Grunde unmöglich ist, selbst zu erraten, wofür eine Tabelle steht, nur indem man ihren Namen anschaut. Ich muss dringend eine Tabelle finden, die bestimmte Daten enthält, und ich bin ziemlich sicher, dass ich den Namen einiger ihrer Spalten oder zumindest der Wörter in den Namen der Spalten kenne. Was ich brauche, ist eine Art 'Suche nach Spaltenname in jeder Tabelle in der gesamten Datenbank', die alle Tabellen anzeigt, die bestimmte Spaltennamen enthalten.Suchen Sie eine Tabelle, wenn Sie den Namen einer Spalte kennen?

Gibt es eine Möglichkeit, dies zu erreichen, bevor ich mich wie ein Affe eins zu eins beginne?

Antwort

7

Diese Prozedur listet den Tabellennamen und den Spaltennamen für alle Spalten auf, deren Namen den von Ihnen angegebenen Text enthalten. Die Ergebnisse in dem Direkt-Fenster gedruckt werden (gehen dort mit Ctrl +g)

Public Sub ListTablesWithColumnNamesContaining(ByVal pText As String) 
Dim db As DAO.Database 
Dim tdf As DAO.TableDef 
Dim fld As DAO.Field 
Set db = CurrentDb 
For Each tdf In db.TableDefs 
    For Each fld In tdf.Fields 
     If InStr(1, fld.Name, pText, vbTextCompare) > 0 Then 
      Debug.Print tdf.Name & ":", fld.Name 
     End If 
    Next fld 
Next tdf 
Set fld = Nothing 
Set tdf = Nothing 
Set db = Nothing 
End Sub 
+0

Arbeitete wie ein Charme, danke! – Antrim

2

Es gibt eine Möglichkeit, alle Tabellen mit einem bestimmten Spaltennamen zu finden, aber es erfordert etwas Code (anstatt nur eine Abfrage auszuführen).

Zuerst müssen Sie die Systemtabellen in der Datenbank "sichtbar" machen. Sie erwähnen nicht, welche Version von MS Access verwendet wird, aber der Option-Dialog sollte etwas erlauben along these lines.

Dadurch wird die Tabelle MSysObjects verfügbar, die alle Benutzertabellennamen enthält.

Sie würden vermutlich alle Benutzertabellen durchlaufen und Namen in einen Code übergeben, der die Tabellen als DAO.TableDef Objekte öffnet und die Attribute der entsprechenden Fields Sammlung untersucht.

Allen Browne hat some VBA code that displays these attributes. Sie können dies an Ihre Bedürfnisse anpassen.

Verwandte Themen