2012-05-01 14 views
7

私は大量のテーブルを使ってAccessにDBを持っています。残念なことに、クリエイターは非常に非記述的な名前を使用していたので、名前を見るだけでテーブルが何であるかを推測することは基本的に不可能です。私は緊急に特定のデータを含むテーブルを見つける必要があります。私は、その列の名前、または少なくとも列の名前に含まれる単語の名前を知っていると確信しています。基本的に、私が必要とするのは、特定の列名を含むすべてのテーブルを表示する「データベース全体のすべてのテーブルで列名で検索」のようなものです。列の名前を知っているテーブルを見つける?

これを達成する方法はありますか?私が猿のように1つ1つ進む前に?

答えて

7

この手順では、指定したテキストが名前に含まれる列のテーブル名と列名が一覧表示されます。結果はイミディエイトウィンドウに印刷されてい

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

魅力のように働いた、おかげで(はCtrl +グラムでそこに行きます)! – Antrim

2

特定の列名を持つすべてのテーブルを見つける方法はありますが、(クエリを実行するだけではなく)いくつかのコードが必要です。

まず、システムテーブルをデータベースで「可視」にする必要があります。どのバージョンのMS Accessが使用されているかは言及していませんが、Optionダイアログでは何かを許可する必要がありますalong these lines

これは、すべてのユーザーテーブル名を含むテーブルMSysObjectsを公開します。

テーブルを開き、テーブルを開き、対応するFieldsオブジェクトの属性を調べるコードに名前を渡して、すべてのユーザーテーブルを繰り返し処理する必要があります。

アレン・ブラウンはsome VBA code that displays these attributesです。これを必要に応じてカスタマイズできます。

関連する問題