VBAでクエリを作成する (ADOX)
  Access2000での標準データアクセス方法であるADO(ADOX)を使用した、VBAに
よるクエリ作成方法を説明します。


● 準備 ●

(1) 以下の構成のテーブル[テーブル1]を作成します。
    ----------------------------------------
    フィールド名        データ型
    ID                 長整数型
    ----------------------------------------
    適当なレコードをいくつか作っておくこと。

(2) 新規標準モジュールに以下のプロシージャを記述して下さい。


● サンプル ●

Private Sub MakeQueryADOX()
    '初期設定
    Dim Cat As New ADOX.Catalog     'カタログオブジェクト
    Dim Cmd As New ADODB.Command    'コマンドオブジェクト

    'カタログオブジェクトのコネクションを設定
    Cat.ActiveConnection = CurrentProject.Connection

    'コマンドテキスト設定
    Cmd.CommandText = "Select * FROM テーブル1"

    'Viewsコレクションに新規View(クエリ)を追加
    Cat.Views.Append "新規クエリ_ADO", Cmd

    '終了処理
    Set Cat = Nothing
End Sub

'クエリの存在チェック
Private Sub QueryExistCheck()
    Dim obj As AccessObject

    'Viewsコレクションに作成したクエリが存在するかチェック
    For Each obj In CurrentData.AllQueries
        If obj.Name = "新規クエリ_ADO" Then
            MsgBox obj.Name & " はAllQueriesコレクションに存在します"
            Exit Sub
        End If
    Next
    MsgBox "新規クエリ_ADOは存在しませんでした"

End Sub

'クエリ削除
Private Sub DelQuery()
    Dim Cat As New ADOX.Catalog

    Cat.ActiveConnection = CurrentProject.Connection
    Cat.Views.Delete "新規クエリ_ADO"
    Set Cat = Nothing
End Sub


● 動作確認 ●

  サンプルプロシージャMakeQueryADOを実行して下さい。


● 詳細 ●

  ADOXでは、クエリはCatalogオブジェクト中のViewsコレクションとして管理
されています。サンプルではCurrentProject(=カレントMDB)に接続し、Command
オブジェクトのCommandTextプロパティを使用して、ViewsコレクションのAppend
メソッドで新規クエリを作成しています。

  しかし、ここで注意しなくてはならない大きな問題点があります。ADOXで作
成したクエリは Access のデータベース・ウィンドウには表示されないのです。
表示はされませんが、Viewsコレクションの同一名前空間に存在しています。
(DAOのQueryDefsコレクション中にも存在することが確認できます。)
  それを確認するために、サンプルQueryExistCheckを実行して下さい。存在す
るというメッセージが表示されたはずです。

  そして、このようにして作成したクエリは、Access の UI からは実行できず、
あくまでVBAから参照することしか出来ません。そのままでは問題があるので、
サンプルDelQueryを実行してクエリを削除して下さい。


● 補足説明 ●

  デフォルトではADOX(Microsoft ADO Ext. 2.1 for DDL and Security)
には参照設定がなされていません。Visual Basic Editor(VBE)を開き、メ
ニューの[ツール]−[参照設定]から、Microsoft ADO Ext. 2.1 for DDL and
Securityにチェックを入れて下さい。
  また、ADOXでのクエリの問題についての詳しい技術内容を知りたければ、
Office Developers Edition CD中の、次のファイルを見てください。
[ODETools\Samples\opg\Appendixes\ADOCreateQueries.doc]

Access97/2000



戻る


Excel Word Access VBA! モーグ