Microsoft Access Club >SQL入門講座 >このページ >次頁 < 前項  サイト内検索
 

パラメータクエリの実行方法 : SQL入門講座



今回はパラメータクエリの実行方法についてご紹介します。パラメータクエリ は選択クエリに属しますので、RunSQLオブジェクトで実行することはできません。よって、DAOのOpenRecordsetsメソッドやADOのCreateParameterメソッドでSQLのパラメータクエリを実行します。但し、ADOを用いてパラメータクエリを実行する場合は、PARAMETERS宣言は不要ですからここではDAOを利用します。

Parametersコレクションにパラメータを追加する

宣言したパラメータは、QueryDefオブジェクトにあるParametersコレクションに追加されます。大別すると、以下の流れになります。

  1. SQLステートメントを用いてQueryDefオブジェクトを作成します。
  2. パラメータを設定します。
  3. OpenRecordsetsメソッドでSQLを実行します。
留意事項
  • SQLで作成したパラメータクエリは入力を促すダイアログボックスが表示されませんので、InputBox関数を用います。この点が、Accessのクエリと大きく異なる点です。

サンプルテーブル

サンプルテーブル(社員管理)を下記のように作成します。

ID 売上日 社員名 性別 売上額 職種
1 2004/07/29 草薙 良子 女性 120310 医師
2 2004/08/10 田中 幸恵 女性 7986620 一般職
3 2004/09/30 中村 幸三 男性 477123 技能職
4 2004/04/30 田中 邦子 女性 785100 一般職
5 2004/02/04 柴田 喜一 男性 654100 技能職
6 2004/01/23 橘 修平 男性 52100 一般職
7 2004/02/04 柴田 喜一 男性 7892510 技能職
8 2004/03/25 正道 良一 男性 4875210 薬剤師
9 2004/04/30 田中 邦子 女性 4789210 一般職
10 2004/09/10 内田 信二 男性 478622 一般職

SubプロシージャParaSQLの作成

SubプロシージャParaSQLを作成します。このプロシージャを実行すると、性別の入力を求めるInputBoxダイアログボックスが開きます。性別を入力すると、抽出されたレコードがメッセージボックスに表示されます。

Public Sub ParaSQL()

    Dim db As DAO.Database
    Dim qdef As DAO.QueryDef
    Dim rs As DAO.Recordset
    Dim mySQL As String
    Dim strmsg As String
    Dim strpara As String
    Dim strback As String
    
    strpara = "抽出する性別を入力します" '--- A
    mySQL = "PARAMETERS " & strpara & _
            " TEXT; SELECT * FROM 社員管理 WHERE 性別 = " & strpara ' --- B

    strback = InputBox(strpara) ' --- C
    Set db = CurrentDb
    Set qdef = db.CreateQueryDef("", mySQL) ' --- D
    qdef.Parameters(strpara) = strback ' --- E
    Set rs = qdef.OpenRecordset
    
    Do Until rs.EOF ' --- F
        strmsg = strmsg & vbNewLine & rs!ID & " : " & _
                                      rs!社員名 & " : " & rs!性別
        rs.MoveNext
    Loop

    MsgBox strmsg ' --- G

End Sub
解説
  1. パラメータ名を変数strparaに代入します。
  2. パラメータを宣言しSQLステートメントを記述します。
    留意点として、パラメータ宣言の最後にはセミコロン(;)を必ず記述します。
  3. 性別の入力を求めるInputBoxダイアログボックスを立ち上げます。
  4. CreateQueryDefの引数に長さ0の文字列("")を記述すると、一時的なQueryDefオブジェクトを作成します。このオブジェクトはプロシージャの終了と共に破棄されます。
  5. QueryDefオブジェクトのParametersコレクションにInputBox関数の値を代入します。
    パラメータは以下のように記述します。
    qdef.Parameters(strpara) または qdef.Parameters!strpara
    今回は変数にパラメータ名を格納しているので、前者の方法を採用しました。
  6. Do Until〜Loopを用いて、先頭のレコードから最後のレコードまでパラメータの条件値でレコードを抽出します。

動作確認

  1. SubプロシージャParaSQLをイミディエイトウィンドウで実行します。
  2. InputBoxダイアログボックスが表示されます。
  3. 女性を入力します。

  1. 以下のメッセージボックスが表示されます。

2005/07/25

ページの先頭へ 前ページへ戻る

 


パラメータクエリの実行方法 : SQL入門講座


-Microsoft Access Club-

cPanel と PLESKをインストールした専用・共有レンタルサーバーを銀行振込でご提供中。契約書は一切不要です。
cPanel や PLESKをインストールした専用・共有レンタルサーバー
まずは1ヶ月から...。
日本国内の銀行振込がOK、契約書は不要です。