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

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



ADOからパラメータクエリを呼び出し実行するにはCreateParameterメソッドを利用し、AppendメソッドでADODB.Commandオブジェクトに追加する方法 以外に、今回はRefreshメソッドを用いてパラメータ情報を取得する方法をご紹介します。

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

  2. Refreshメソッドは、CommandTextプロパティに設定されているSQL構造を元に、自動的にParameterコレクションを作成します。

  3. データベースに対する複雑な問い合わせが発生することで、CreateParameterメソッドを比較し処理スピードが遅くなります。

Refreshメソッド

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

collection.Refresh
項目 意味
collection 省略不可です。各collectionを指定します。
留意点
  1. Refresh メソッドを呼び出す前に、Command オブジェクトの ActiveConnection プロパティを有効な Connection オブジェクトに、CommandText プロパティを有効なコマンドに、および CommandType プロパティを 正しく設定する必要があります。

サンプルテーブルの作成

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

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

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

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

Sub MyRefresh()

    Dim cnn As New ADODB.Connection
    Dim cmd As New ADODB.Command
    Dim rs As New ADODB.Recordset
    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 cnn = CurrentProject.Connection
    ' コマンドを実行する接続先を指定します。
    cmd.ActiveConnection = cnn
    
    With cmd
        .CommandText = mySQL
        .CommandType = adCmdText
        .Prepared = True
    End With
    
    cmd.Parameters.Refresh     ' パラメータをリフレッシュします。
    
    strback = InputBox(Trim(strmsg)) ' InputBoxの戻り値を求めます。
    cmd.Parameters(0).Value = strback ' パラメータの値を指定します。
    
    strback = InputBox(Trim(strmsg2)) ' InputBoxの戻り値を求めます。
    cmd.Parameters(1).Value = strback ' パラメータの値を指定します。
    
    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
    cnn.Close: Set cnn = Nothing

End Sub
解説

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

  1. .ADODB.Commandオブジェクトのインスタンスを作成します。
  2. ADODB.Connectionオブジェクト使ってDBに接続します。
  3. ADODB.CommandオブジェクトのActiveConnectionプロパティに、ADODB.Connectionオブジェクトを結びつけます。
  4. ADODB.Commandオブジェクトがデータベースと接続済みとなります。
  5. CommandTextプロパティにSQLを指定します。
  6. ParametersコレクションからRefreshメソッドを呼び出します。
  7. Parameters コレクションの引数に定数を記述する場合は、0から始まります。
    cmd.Parameters(0).Valueは、cmd.Parameters("性別").Valueに置き換えが可能です。
    cmd.Parameters(1).Valueは、cmd.Parameters("職種").Valueに置き換えが可能です。
  8. ADODB.CommandオブジェクトのExecuteメソッドを用いて実行します。
実行結果
  1. プロシージャを実行します。
  2. InputBoxダイアログボックスが開きますので、男性と入力します。

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

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

2005/07/28

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


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


 

-Microsoft Access Club-

注目のモンスター専用サーバーからお買い得プランまで幅広くそろえています。cPanel、PLESK、WEBMINまでお任せ下さい。
注目のモンスター専用サーバーからお買い得プランまで幅広い。
cPanel、PLESK、WEBMINまでお任せ下さい。