ストアドの戻り値を受け取る

SQLServer2k + フロントエンドAcc2kでちょっとしたdbアプリ(adp)作った時、
ストアドの戻り値を受け取るのに手間取ったのでメモっておく。

Dim cmd        As New ADODB.Command
Dim fm         As Form
Dim lngRtnCode As Long

Set fm = Form_hoge

With cmd

    Set .ActiveConnection = Conn   'Connectionオブジェクトを代入
    .CommandType = adCmdStoredProc 'コマンドタイプはストアドを選択
    .CommandText = "usp_hogehoge"  'ストアド名

    '作成(Creaet)したParameterを追加(Append)
    'CreateParameterメソッドの引数について
    '第1引数 … VBA側のパラメータ名。VBA側で識別できればOKな為、ぶっちゃけ何でもいいw
    '第2引数 … 引数のデータ型。
    '第3引数 … 引数のタイプ。
    '第4引数 … 引数のサイズ。intやbigintは指定してやる必要無いが、char系はフィールド長をセット。
    '第5引数 … 引数の値。
    .Parameters.Append .CreateParameter("P1", adInteger, adParamInput, , fm.hoge1.Value)
    .Parameters.Append .CreateParameter("P2", adInteger, adParamInput, , fm.hoge2.Value)
    .Parameters.Append .CreateParameter("P3", adVarChar, adParamInput, 50, fm.hoge3.Value)
    .Parameters.Append .CreateParameter("RP1", adInteger, adParamReturnValue)

    'Command実行
    .Execute

    'ストアドの返し値取得
    lngRtnCode = .Parameters.Item("RP1").Value

End With

msdn
CreateParameterメソッド