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

パラメータクエリをADOから実行する-CreateParameterメソッド : ADO入門講座



DAOからパラメータクエリを呼び出し実行するには、SQLのPARAMETER宣言を利用したSQLを実行しました。今回は、PARAMETER宣言を用いず、ADOのCreateParameterメソッドを利用 する方法をご紹介します。

留意点
  1. DAOと同じくADOでもパラメータクエリを実行する場合、入力を促すダイアログボックスが表示されません。よって、InputBox関数で代用する必要があります。

CreateParameterメソッド

CreateParameterメソッドの構文は、以下のような組み合わせになります。Parameter オブジェクトを返します。

Set parameter = command.CreateParameter (Name, Type, Direction, Size, Value)
項目 意味
Name 省略可能です。Parameter オブジェクト名を含む文字列型 (String) の値を指定します。
Type 省略可能です。Parameter オブジェクトのデータ型を指定します。
Direction 省略可能です。Parameter オブジェクトのデータ型を 以下のリスト値から指定します。
定数 説明
adParamInput 1 既定値です。パラメータが入力パラメータであることを表します。
adParamInputOutput 3 パラメータが入出力パラメータであることを表します。
adParamOutput 2 パラメータが出力パラメータであることを表します。
adParamReturnValue 4 パラメータが戻り値であることを表します。
adParamUnknown 0 パラメータの使用方法が不明であることを表します。
Size 省略可能です。パラメータ値の最大長を文字数またはバイト数で指定する長整数型 (Long) の値を指定します。
Value 省略可能です。Parameter オブジェクトの値を指定するバリアント型 (Variant) の値を指定します。
留意点
  1. CreateParameterメソッドを実行するだけでは、戻り値であるParameterオブジェクトは、Command オブジェクトの Parameters コレクションに追加されませんので、Appendメソッドを用いて追加する必要があります。

サンプルテーブルの作成

サンプルテーブルを以下のように作成します。テーブル名は、社員管理です。

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 医師

CreateParameterメソッドを用いたパラメータクエリの実行

SubプロシージャMyCreateParaを作成します。このプロシージャでは、性別フィールド、職種フィールドにパラメータを設定します。

Sub MyCreatePara()

    Dim cn As ADODB.Connection
    Dim cmd As New ADODB.Command
    Dim rs As New ADODB.Recordset
    Dim param As ADODB.Parameter
    Dim mySQL As String
    Dim strmsg As String
    Dim strmsg2 As String
    Dim strback As String

    strmsg = "抽出する性別を入力します。"
    strmsg2 = "抽出する職種を入力します。"
    mySQL = "SELECT * FROM 社員管理 WHERE 性別=" & strmsg & _
							" AND 職種=" & strmsg2

    Set cn = CurrentProject.Connection
    Set cmd.ActiveConnection = cn

    With cmd
        .CommandText = mySQL
        .CommandType = adCmdText
        .Prepared = True
    End With
    
    Set param = New ADODB.Parameter

    '---------パラメータ1個ごとに必要-----------------
    Set param = cmd.CreateParameter("性別", adVarChar, adParamInput, 10)
    cmd.Parameters.Append param
    strback = InputBox(Trim(strmsg))
    cmd.Parameters("性別") = strback
    '-----------------ここまで------------------------
    
    '---------パラメータ1個ごとに必要-----------------
    Set param = cmd.CreateParameter("職種", adVarChar, adParamInput, 10)
    cmd.Parameters.Append param
    strback = InputBox(Trim(strmsg2))
    cmd.Parameters("職種") = strback
    '-----------------ここまで------------------------
    
    Set rs = New ADODB.Recordset
    Set rs = cmd.Execute

    Do Until rs.EOF
      Debug.Print rs!ID, rs!社員名, rs!性別, rs!売上額 & "円"
      rs.MoveNext
    Loop
    
    Set cmd = Nothing
    rs.Close: Set rs = Nothing
    cn.Close: Set cn = Nothing

End Sub
解説

CreateParameterメソッドを用いたプロシージャの流れは以下のようになっています。

  1. .ADODB.Commandオブジェクトのインスタンスを作成します。
  2. ADODB.Connectionオブジェクト使ってDBに接続します。
  3. ADODB.CommandオブジェクトのActiveConnectionプロパティに、ADODB.Connectionオブジェクトを結びつけます。
  4. ADODB.Commandオブジェクトがデータベースと接続済みとなります。
  5. CommandTextプロパティにSQLを指定します。
  6. ADODB.CommandオブジェクトのCreateParameterメソッドを用いて引数を作成します。
  7. CreateParameterオブジェクトをAppendメソッドでADODB.Commandオブジェクトに追加します。
  8. ADODB.CommandオブジェクトのExecuteメソッドを用いて実行します。
実行結果
  1. プロシージャを実行します。
  2. InputBoxダイアログボックスが開きますので、男性と入力します。

  1. 再度、InputBoxダイアログボックスが開きますので、医師と入力します。

  1. イミディエイトウィンドウに以下の結果が表示されます。

2005/07/27

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


パラメータクエリをADOから実行する-CreateParameterメソッド : ADO入門講座


 

-Microsoft Access Club-

アダルト・ゲーム配信可能なPLESKパネル付属の専用・共有レンタルサーバーを提供しています。
アダルトやゲーム配信が可能です。
全専用/共有レンタルサーバーにPLESKパネルをインストール済み。