7

信じられないほどの量のテーブルを備えた Access の DB があります。残念ながら、作成者は非常にわかりにくい名前を使用しているため、名前を見ただけでそのテーブルが何のためにあるのかを推測することさえ基本的に不可能です。特定のデータを含むテーブルを緊急に見つける必要があり、その列のいくつかの名前、または少なくとも列の名前に含まれる単語を知っていると確信しています。基本的に、必要なのは、特定の列名を含むすべてのテーブルを表示する、ある種の「データベース全体のすべてのテーブルの列名による検索」です。

サルのように 1 つずつ進み始める前に、これを達成する方法はありますか?

4

2 に答える 2

7

この手順では、指定したテキストが名前に含まれている列のテーブル名と列名が一覧表示されます。結果はイミディエイトウィンドウに印刷されます(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
于 2012-05-01T23:36:07.410 に答える
2

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

まず、データベースでシステムテーブルを「表示」する必要があります。使用されているMSAccessのバージョンについては言及していませんが、[オプション]ダイアログではこれらの行に沿って何かを許可する必要があります。

MSysObjectsこれにより、すべてのユーザーテーブル名を含むテーブルが公開されます。

おそらく、すべてのユーザーテーブルを反復処理して、テーブルをオブジェクトとして開き、対応するコレクションDAO.TableDefの属性を調べるコードに名前を渡す必要があります。Fields

Allen Browneには、これらの属性を表示するVBAコードがいくつかあります。これは必要に応じてカスタマイズできます。

于 2012-05-01T22:40:01.400 に答える