●概要●
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のチェックを持ってきて下さい。