これは非常に時間がかかる可能性があり、システムテーブルも検索するために混乱する結果をもたらす可能性があるため、これは悪い考えだと思います...しかし、次の関数は、検索語を含むすべてのテーブル名の配列を返すか、そうでない場合は何も返しません見つかりません。呼び出し例は次のtheTables = containingTable("hello")
とおりです。ここで、theTablesはバリアントです。制限は、これが複数値のフィールドでは失敗することです。
Function containingTables(term As String)
Dim db As Database
Dim tds As TableDefs
Dim td As TableDef
Set db = CurrentDb
Set tds = db.TableDefs
For Each td In tds
For Each f In td.Fields
On Error Resume Next
If DCount("[" & f.Name & "]", "[" & td.Name & "]", "[" & f.Name & "] LIKE '*" & term & "*'") Then
If Err.Number <> 0 Then
Debug.Print Err.Number, Err.Description
Err.Clear
On Error GoTo 0
Else
containingTables = containingTables & td.Name & ","
Exit For
End If
End If
Next
Next
Set tds = Nothing
Set db = Nothing
'Alternate Version
if Len(containgingTables) then containingTables = Left(containingTables, Len(containingTables) - 1)
'Original Version
'if Len(containgingTables) then containingTables = Split(Left(containingTables, Len(containingTables) - 1), ",")
End Function
別のバージョンで結果を表示するには、次を使用します。検索しているものはMsgbox(containingTables(searchTerm))
どこsearchTerm
にありますか。