DAOでデータベースに接続し、作成した一時的なクエリをRecordsetに格納して利用 CreateQueryDefメソッドを使ってQueryDefオブジェクトを作成 Dim QDef As DAO.QueryDef ・ステートメント QueryDefオブジェクトにテーブル「飲料リスト」の中の「AA01」「AA02」「AA04」のレコードを参照する一時的なクエリを作成し 以下の記事を参照、この書き方がとてもシンプルで素敵 ▼QueryDefs.Deleteの記述▼
今回の記述に関する前情報
何を行うか
一時的なクエリを作成しそれをRecordsetに格納
QueryDefオブジェクトを作成してRecordsetにクエリを格納する書式
Dim RST As DAO.Recordset
Set QDef = Databaseオブジェクト変数.CreateQueryDef("",SQL)
Set RST = QDef.OpenRecordset()
記述例における利用パーツ
→SQL / DoLoop
・メソッド
→CurrentDb / CreateQueryDef / MoveNext
【実践】クエリを新規作成する記述例
カレントプロジェクトのデータベースに接続する場合の記述
それをRecordsetに格納し、格納した内容をイミディエイトに表示する
▼参照テーブル▼
▼記述例▼
Sub createquery4()
Dim DAOdb As DAO.Database
Dim QDef As DAO.QueryDef
Dim RST As DAO.Recordset
Dim SQL As String
Set DAOdb = CurrentDb
SQL = "SELECT * FROM 飲料リスト WHERE 通し番号 In('AA01','AA02','AA06');"
Set QDef = DAOdb.CreateQueryDef("", SQL) 'QueryDefオブジェクトに一時的なクエリを作成
Set RST = QDef.OpenRecordset() 'RecordsetにSQLを格納
Do Until RST.EOF
Debug.Print RST.Fields("通し番号"), RST.Fields("品目")
RST.MoveNext
Loop
Set RST = Nothing: Set QDef = Nothing: Set RST = Nothing
End Sub
▼実行結果▼
作成したテーブルを削除する記述
AccessObjectを宣言して、Docmd.DeleteObject acQueryか、CurrentDb.QueryDefs.Deleteで削除
AccessVBAでクエリ(SQL)を作成・削除する | VBA・GAS・Pythonで仕事を楽しく効率化