#620 | 全テーブル/全フィールドからデータを検索する方法の例 | VBA | |
すべてのテーブル(ナビゲーションウィンドウに表示されているもの)を検索し、該当するデータがどのテーブルのどのフィールドに保存されているかをピックアップするプログラム例です(いわゆる全文検索的なものです)。 ユーザーインタフェースにおける処理ではなく、開発中のデータ内容による不具合を調査するために作ったもので、テーブルの検索機能やクエリの抽出処理では特定のテーブルや特定のフィールドしか対象にできないので、このようなプログラムを作ってみました。実際には「"検索キーワード"」と記述されている部分を適宜書き換えて使ってください。 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 ※【注】「添付ファイル型」や、「複数の値の許可」が設定されているなど、一部の特殊なフィールドについては上記のような簡便な方法ではフィールド値を取得できないため、”InStr”関数の行でエラーが発生します。適宜エラートラップなどの対応が必要となります。 |
|||
|
Copyright © T'sWare All rights reserved |