HOME > 即効テクニック > AccessVBA > クエリ・SQL > クエリを作成して選択クエリを実行する

即効テクニック

クエリ・SQL

クエリを作成して選択クエリを実行する

(Access 2000/2002)
●概要●
構文  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ステートメントでは、文末の「;」はつけてもつけなくてもかまいません。