QueryDefs の不明オブジェクト Hit Counter

対象バージョン : 97, 2000(MDB), 2002(MDB), 2003(MDB)
最終更新日 : 2005/04/25 (オリジナル作成日:1997/04/18)


概 要 

QueryDefs コレクションの QueryDef オブジェクトを調べて行くと、Name プロパティの頭に "~" が付いた不明なオブジェクトが存在することがあります。これらのオブジェクトを判断する方法です。

 

解 説

QueryDef オブジェクトで、Name の頭に "~" (チルダ)が付いたオブジェクトは、フォームやレポートで使用する Access が内部で作成した一時的なクエリーのようです。

【7.0, 97】
これらを判断する方法として、QueryDef オブジェクトの "Type" プロパティが 3 であれば、これらと判断できるようです。なお、この 3 という値は、DAO 定数として定義されていません。

以下のプロシージャは、これら一時的に作成された QueryDef オブジェクトの名前をデバッグウィンドウへ表示する例です。

Public Sub Sample()
Dim db As Database
Dim qd As QueryDef
Set db = CurrentDb
Debug.Print "これらは一時作成 QueryDef です"
For Each qd In db.QueryDefs
    If qd.Type = 3 Then
        Debug.Print "  "; qd.Name
    End If
Next
End Sub


【2000 以降】
Access が内部で自動的に作成されたクエリーを "Type" プロパティによる判断ができなくなりました。

代わりに、ユーザーが作成したクエリーが何かを知る方法が AccessObject として提供され、AllQueries コレクションを介して参照できるようになりました。

以下のプロシージャは、ユーザーが作成したクエリーの名前をイミディエイトウィンドウへ表示する例です。

Public Sub Sample()
Dim curData As CurrentData
Dim aObj As AccessObject

Set curData = Application.CurrentData
For Each aObj In curData.AllQueries
    Debug.Print aObj.Name
Next
End Sub

詳しくは、ヘルプの "目次" タブ − "プログラミング情報" − "Microsoft Access Visual Basic リファレンス" − "オブエジェクトおよびコレクション" − "A" − "AllQueries コレクション" をご参照ください。

 

改定履歴


目次へ戻る