パラメータクエリやパラメータを持つストアドプロシージャを実行する

パラメータクエリやパラメータを持つストアドプロシージャを実行する

Sub パラメータクエリを実行()
Dim myCon As New ADODB.Connection, myCmd As New ADODB.Command
Dim myPmt As ADODB.Parameter, mySrc As String

'対象となるデータベース
mySrc = ThisWorkbook.Path & "\mdb\4-sampleDB.mdb"

'接続
With myCon
  .Provider = "Microsoft.Jet.OLEDB.4.0;"
  .Open mySrc
End With

With myCmd
  .ActiveConnection = myCon
  .CommandText = "PQ_手当更新"
  '新規パラメーターオブジェクトを作成
  Set myPmt = .CreateParameter("手当金額", adInteger, adParamInput)
  'パラメータとして渡す値を指定
  myPmt.Value = 10000
  '設定したParameterオブジェクトを追加
  .Parameters.Append myPmt
  'パラメータクエリを実行
  .Execute
End With

Set myPmt = Nothing
Set myCmd = Nothing
myCon.Close: Set myCon = Nothing

End Sub

CreateParameterメソッドで新規パラメータを作成
Set parameter = Commandオブジェクト.CreateParameter (Name, Type, Direction, Size, Value)

Appendメソッドを使ってParameteオブジェクトをParametersコレクションに追加
Commandオブジェクト.Parametersコレクション.Append Parameteオブジェクト

Parameteオブジェクトはそのままでは Command オブジェクト実行時に反映されないので、 Append メソッドを使って Paramete オブジェクトを Parameters コレクションに追加する。
複数のパラメータを指定する場合は、必要なだけパラメータを追加する。

CreateParameterメソッドの引数
引数 説明
Name 任意の名前を指定
Type パラメータのデータ型をDataTypeEnum列挙型で指定
Direction パラメータの種類ををParameterDirectionEnum列挙型で指定
Size パラメータ値の最大長を指定
Value パラメータとして渡す値を指定

ParameterDirectionEnum列挙型
定数 説明
adParamInput 1 入力パラメータ、既定値
adParamInputOutput 3 入出力パラメータ
adParamOutput 2 出力パラメータ
adParamReturnValue 4 戻り値
adParamUnknown 0 使用方法が不明な状態

実行するパラメータクエリ

実行前の「アルバイト」テーブル

実行結果