#448 ストアドプロシージャの呼び出し例(編集系、パラメータなし) VBA

Accessプロジェクト(.ADP)などにおいて、VBAを使ってストアドプロシージャを呼び出す例です。

ここでは、UPDATEやINSERT、DELETEなどのレコード編集系の処理を行うもので、レコードを返さないストアドプロシージャ、かつパラメータを持たないストアドプロシージャの呼び出しパターンのひとつを紹介します(他にもいろいろなオブジェクトを使ったコーディング方法があり、あくまでもその中の1つです)。


Dim cnn As ADODB.Connection
Dim intAffected As Integer

Set cnn = CurrentProject.Connection
cnn.Execute "ストアドプロシージャ名", intAffectedadExecuteNoRecords

MsgBox intAffected & "件が処理されました!"


  • intAffectedの部分の変数には、更新や削除されたレコード数が返されます。その情報が必要でないときは引数への指定を省略できます。
  • ストアドプロシージャ名の部分にはUPDATEやINSERT、DELETEなどを含むSQL文の文字列を指定することもできます。
  • レコードセットが不要なので、定数adExecuteNoRecordsを指定すると処理が高速化されます。


【参考】
パラメータを持った編集系ストアドプロシージャのコーディング例と共通的な書き方として、次のような記述もできます。この場合、intAffectedの部分の定数は省略しないとエラーとなることがあります。

Dim cnn As ADODB.Connection
Dim cmd As ADODB.Command

Set cnn = CurrentProject.Connection
Set cmd = New ADODB.Command
With cmd
  .ActiveConnection = cnn
  .CommandText = "ストアドプロシージャ名"
  .CommandType = adCmdStoredProc
  .Execute , , adExecuteNoRecords
End With
Set cmd = Nothing

| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved