●概要●
構文 expression. CreateQueryDef(name, sqltext)
設定項目 内容
expression Databaseオブジェクト[省略不可]
name クエリの名前を文字列で指定[省略可能]
sqltext SQLステートメントを指定[省略可能]
DatabaseオブジェクトのCreateQueryDefメソッドを使用して新しくQueryDefオブジェクトを作成します。引数に長さ0の文字列を指定すると、名前をつけずに一般的な名前のQueryDefオブジェクトを作成することができます。作成したQueryDefオブジェクトのOpenRecordsetメソッドを呼び出してRecordsetオブジェクトを作成します。
サンプルでは、SQLステートメントで「社員テーブル」のすべてのフィールドを選択します。すべてのフィールドを選択する場合は、1つ1つフィールドを指定するかわりに「*」(アスタリスク)を使用することができます。
●サンプル●
'クエリを作成して選択クエリを実行する
Public Sub Sample()
Dim myDB As Database
Dim myRS As DAO.Recordset
Dim myQuery As QueryDef
Dim mySQL As String
'SQLステートメントを定義する
mySQL = "SELECT * FROM 社員テーブル;"
'カレントデータベースを変数に代入する
Set myDB = CurrentDb
'クエリを作成する
Set myQuery = myDB.CreateQueryDef("", mySQL)
'クエリを実行してレコードセットを開く
Set myRS = myQuery.OpenRecordset(dbOpenDynaset)
'レコードセットの内容を表示する
Do Until myRS.EOF
Debug.Print myRS!社員コード & " " & myRS!部署コード & " " _
& myRS!名前 & " " & myRS!入社年月日 & " " & myRS!職種
myRS.MoveNext
Loop
'レコードセットを閉じる
myRS.Close
End Sub
●補足●
選択結果は[イミディエイト]ウィンドウに表示されます。
Access VBAのSQLステートメントでは、文末の「;」はつけてもつけなくてもかまいません。