HOME > 即効テクニック > AccessVBA > クエリ・SQL > VBAでクエリを作成する (DAO)

即効テクニック

クエリ・SQL

VBAでクエリを作成する (DAO)

(Access 97)

●概要●
Access97での標準データアクセス方法であるDAOを使用した、VBAによるクエリ作成方法を説明します。

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

(2) 新規標準モジュールに以下のプロシージャを記述して下さい。
●サンプルコード●
Private Sub MakeQueryDAO()
    Dim Qdf    As DAO.QueryDef
    Dim strSQL As String

    strSQL = "Select * From テーブル1"

    'CreateQueryDefメソッドによるクエリ作成
    Set Qdf = CurrentDb.CreateQueryDef("新規クエリ_DAO1", strSQL)
    CurrentDb.QueryDefs.Refresh

    'Appendメソッドによるクエリ作成
    Set Qdf = New QueryDef
    Qdf.Name = "新規クエリ_DAO2"
    Qdf.SQL = strSQL
    CurrentDb.QueryDefs.Append Qdf
    CurrentDb.QueryDefs.Refresh

    '終了処理
    Set Qdf = Nothing
End Sub
●動作確認●
上記プロシージャ、MakeQueryDAOを実行して下さい。

●詳細●
Access(DAO)では、各クエリはQueryDefsコレクションの中のQueryDefオブジェクトとして管理されています。
サンプルでは、DatabaseオブジェクトのCreateQueryDefメソッド、QueryDefsコレクションのAppendメソッドを使用して新規のクエリを作成しています。クエリ作成後にはRefreshメソッドを使い、コレクションの状態を更新しています。

両者とも同じようにクエリ名、SQL文を使用して新規クエリを作成しますが、コレクション−オブジェクトというAccessの基本的なオブジェクト構造に忠実なQueryDefs.Appendメソッドのほうが、若干分かり易いかも知れません。
作成されるクエリにはまったく違いがありませんので、後は好みの問題です。

●備考●
Access2000の場合、デフォルトではDAOに参照設定されていません。
Visual Basic Editor(VBE)を開き、メニューの[ツール]−[参照設定]から、Microsoft DAO 3.6 Object Libraryにチェックを入れて下さい。
その際にMicrosoft ActiveX Data Object 2.1 Libraryよりも上に、DAOのチェックを持ってきて下さい。