ExecuteComplete ADODB连接事件未触发adAsyncExecute参数
问题描述:
我试图捕获一个存储过程异步完成的问题。ExecuteComplete ADODB连接事件未触发adAsyncExecute参数
下面我的代码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'
我的问题是,该事件ExcuteComplete在不以解雇所有,而如果我评论adAsynExecute参数一切工作正常。 关于如何解决我的问题的任何想法?
答
我解决我的问题更换调用代码:这个新的代码
Sub testASYNC()
Dim a As New clsAsync
Call a.execSPAsync
End Sub
:
Private a As clsAsync
Sub testASYNC()
Set a = New clsAsync
Call a.execSPAsync
End Sub
在异步模式下,对象“A”不再可用,在结束程序(范围可视性问题)。
+0
+1太棒了,我可以使用它! – glh 2013-04-23 13:03:56
在您选择对象后,您是否在右边列出了所有事件,在您的案例中是cnn? – glh 2013-04-23 11:12:40
如果处理'WillExecute'事件,你会得到什么?这是否弹出消息框?另外,您可能需要查看'FetchComplete'事件,因为这是在检索大型异步集时使用的。 – glh 2013-04-23 11:35:01
@glh:如果我处理一个新事件WillExecute,这个新事件会正确启动。 – stexcec 2013-04-23 12:25:39