ste*_*cec 5 excel events vba ado event-handling
我在尝试异步执行存储过程的完成时遇到问题。
在我的代码 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
Run Code Online (Sandbox Code Playgroud)
这个类是 PublicNotCreatable。
要从模块调用子 execSPAsync,我使用以下代码:
Sub testASYNC()
Dim a As New clsAsync
Call a.execSPAsync
End Sub
Run Code Online (Sandbox Code Playgroud)
存储过程非常简单:
alter PROC kp.sp_WaitFor
AS
WAITFOR DELAY '00:00:05'
Run Code Online (Sandbox Code Playgroud)
我的问题是事件 ExecuteComplete 根本没有被触发,而如果我评论 adAsynExecute 参数,则一切正常。关于如何解决我的问题的任何想法?
我解决了替换调用代码的问题:
Sub testASYNC()
Dim a As New clsAsync
Call a.execSPAsync
End Sub
Run Code Online (Sandbox Code Playgroud)
使用这个新代码:
Private a As clsAsync
Sub testASYNC()
Set a = New clsAsync
Call a.execSPAsync
End Sub
Run Code Online (Sandbox Code Playgroud)
在异步模式下,对象“a”在过程结束时不再可用(范围可见性问题)。
| 归档时间: |
|
| 查看次数: |
4740 次 |
| 最近记录: |