すべてのテーブル(ナビゲーションウィンドウに表示されているもの)を検索し、該当するデータがどのテーブルのどのフィールドに保存されているかをピックアップするプログラム例です(いわゆる全文検索的なものです)。
ユーザーインタフェースにおける処理ではなく、開発中のデータ内容による不具合を調査するために作ったもので、テーブルの検索機能やクエリの抽出処理では特定のテーブルや特定のフィールドしか対象にできないので、このようなプログラムを作ってみました。実際には「"検索キーワード"」と記述されている部分を適宜書き換えて使ってください。
Dim dbs As Database
Dim tdf As TableDef
Dim fld As Field
Dim rst As Recordset
Dim fvalue As Variant
Set dbs = CurrentDb
'すべてのテーブルのループ
For Each tdf In dbs.TableDefs
With tdf
If ((.Attributes And dbSystemObject) Or _
(.Attributes And dbHiddenObject)) = 0 Then
'現在のテーブルを開く
Set rst = dbs.OpenRecordset(.Name)
'開いたテーブルの全レコードのループ
Do Until rst.EOF
'開いたテーブルの全フィールドのループ
For Each fld In .Fields
'カレントレコード・フィールドの値を取得
fvalue = rst(fld.Name).Value
If InStr(fvalue, "検索キーワード") Then
'フィールド値に指定ワードを含んでいるとき
Debug.Print .Name, fld.Name, fvalue
End If
Next fld
rst.MoveNext
Loop
rst.Close
End If
End With
Next tdf
|