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