6

ストアド プロシージャの非同期実行の完了をキャッチしようとすると問題が発生します。

私のコードVBAの下(clsAsyncという名前のクラスモジュール内):

Option Explicit

Private WithEvents cnn As ADODB.Connection


Private Sub cnn_ExecuteComplete(ByVal RecordsAffected As Long, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pCommand As ADODB.Command, ByVal pRecordset As ADODB.Recordset, ByVal pConnection As ADODB.Connection)
    MsgBox "Execution completed"
End Sub

Sub execSPAsync()
    Set cnn = New ADODB.Connection
    Set rst = New ADODB.Recordset
    cnn.ConnectionString = "connection to my database SQLSEREVER"
    cnn.Open
    cnn.Execute "kp.sp_WaitFor", adExecuteNoRecords, adAsyncExecute
End Sub

このクラスは PublicNotCreatable です。

モジュールからサブ execSPAsync を呼び出すには、次のコードを使用します。

Sub testASYNC()
    Dim a As New clsAsync
    Call a.execSPAsync
End Sub

ストアド プロシージャは非常に単純です。

alter PROC kp.sp_WaitFor
AS

WAITFOR DELAY '00:00:05'

私の問題は、イベント ExecuteComplete がまったく発生しないことですが、adAsynExecute パラメータにコメントすると、すべて正常に動作します。私の質問を解決する方法について何か考えはありますか?

4

1 に答える 1