HOME > 即効テクニック > AccessVBA > クエリ・SQL > 定義済みのクエリを実行する

即効テクニック

クエリ・SQL

定義済みのクエリを実行する

(Access 2000/2002)
●概要●
構文  expression.OpenRecordset(source, type, options, lockedits)

設定項目        内容
expression      Databaseオブジェクト[省略不可]
source          レコードのソースを示す文字列(テーブル名、クエリ名、
                        SQLステートメント)を指定[省略不可]
type            Recordsetの種類を示す定数を指定[省略可能]
options         Recordsetの種類を示す定数を指定[省略可能]
lockedits       Recordsetのロック状態を決定する定数を指定[省略可能]

DatabaseオブジェクトのOpenRecordsetメソッドを使用して、データベース内に既に定義されたクエリを実行します。サンプルでは、社員テーブルから職種がマネージャのレコードを抽出する、定義済みの「マネージャ抽出」クエリを実行します。その結果をデータソースとしてRecordsetオブジェクトを作成し、Do While...Loopステートメントでレコードセットの終わりまでレコードの内容を表示します。
Recordsetオブジェクトの各々のフィールドは次のいずれの構文でも参照することができます。Valueプロパティは既定のプロパティのため、省略することができます。

        ・Recordset![フィールド名].Value
        ・Recordset![フィールド名]
        ・Recordset("フィールド名")
        ・Recordset.Fields("フィールド名")
        ・Recordset.Fields.Item("フィールド名")
        ・Recordset(N) (N:0から始まるフィールドのインデックス番号)
●サンプル●
'定義済みのクエリを実行する
Public Sub Sample()

    Dim myDB As Database
    Dim myRS As DAO.Recordset

    'カレントデータベースを変数に代入する
    Set myDB = CurrentDb
    '定義済みのクエリを実行してレコードセットを開く
    Set myRS = myDB.OpenRecordset("マネージャ抽出", dbOpenDynaset)
    'レコードセットの内容を表示する
    Do While Not myRS.EOF
        Debug.Print myRS!社員コード & " " & myRS!名前 & " " & myRS!職種
        myRS.MoveNext
    Loop
    'レコードセットを閉じる
    myRS.Close

End Sub
●補足●
抽出結果は[イミディエイト]ウィンドウに表示されます。