#596 | Docmdでストアドプロシージャを実行する方法 | VBA | |
通常、AccessでSQL Server上のストアドプロシージャを実行する場合、ADOのいくつかのオブジェクトやメソッド等を組み合わせて実行することが多いと思います。一方、Accessプロジェクト(.adp)においては、そのAccessデータベースファイル内のひとつのクエリオブジェクトとしてSQL Server上のストアドプロシージャが存在しているかのようなイメージになりますので、DoCmdオブジェクトのメソッドによってそのストアドプロシージャを開くことができます。 それには、DoCmdオブジェクトの「OpenStoredProcedure」メソッドを使います。 ストアドプロシージャがSELECT文を使ってレコードを返すような内容の場合には、「DoCmd.OpenQuery」といった命令と同様に、データシート形式でその内容が表示(”開く”)されますが、Accessで言うところのいわゆる”アクションクエリ”のような処理内容であれば、その処理をSQL Server上で”実行”させることができます。 次の例では、「uspProcedureName」という名前のストアドプロシージャを実行しています。 なお、レコードを返さないストアドプロシージャの場合、処理完了後に「ストアドプロシージャは実行されましたが、レコードは返されませんでした。」というエラー(エラー番号:8008)が発生します。そのエラーメッセージ表示を「DoCmd.SetWarnings False」で抑止するとともに、そのエラーは無視して次へ進むようなエラー処理を行っています。 On Error GoTo Err_Handler With DoCmd .SetWarnings False .OpenStoredProcedure "dbo.uspProcedureName" .SetWarnings True End With Exit_Here: Exit Sub Err_Handler: Select Case Err.Number Case 8008 Resume Next Case Else MsgBox Err.Description, vbOKOnly + vbCritical End Select Resume Exit_Here |
|||
|
Copyright © T'sWare All rights reserved |