Sub RunQuery()
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim strSQL As String
Set db = CurrentDb()
strSQL = "SELECT * FROM ユーザー WHERE 年齢 > 30;"
Set qdf = db.CreateQueryDef("", strSQL) ' 一時クエリ(保存しない)
' 結果取得
Dim rs As DAO.Recordset
Set rs = qdf.OpenRecordset()
Do Until rs.EOF
Debug.Print rs("ユーザー名")
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
Set qdf = Nothing
Set db = Nothing
End Sub
🔷 パラメータ付きクエリの例
Sub RunParamQuery()
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim strSQL As String
Set db = CurrentDb()
strSQL = "SELECT * FROM ユーザー WHERE 年齢 > [minAge] AND 性別 = [gender];"
Set qdf = db.CreateQueryDef("", strSQL)
' パラメータの設定
qdf.Parameters("[minAge]") = 25
qdf.Parameters("[gender]") = "男性"
Dim rs As DAO.Recordset
Set rs = qdf.OpenRecordset()
Do Until rs.EOF
Debug.Print rs("ユーザー名")
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
Set qdf = Nothing
Set db = Nothing
End Sub
🔷 保存クエリ(名前付き)の操作
Sub UseSavedQuery()
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Set db = CurrentDb()
Set qdf = db.QueryDefs("年齢検索クエリ") ' Access 上に保存されたクエリ名
qdf.Parameters("[minAge]") = 30
qdf.Parameters("[gender]") = "女性"
Dim rs As DAO.Recordset
Set rs = qdf.OpenRecordset()
Do Until rs.EOF
Debug.Print rs("ユーザー名")
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
Set qdf = Nothing
Set db = Nothing
End Sub