我正在尝试使用ADO Recordset
对象更新Excel VBA中的MS Access数据库。当我启动rs.Update
方法时,我希望下面的代码等到数据库更新后再执行。
数据库似乎需要3-5秒来注册更新方法。在此之前,如何延迟后续代码的执行?
发布于 2015-07-13 22:41:31
这是一个简单的函数,我现在使用它来暂停处理几秒钟。首先,确保您的模块中有API调用:
Private Declare Sub sapiSleep Lib "kernel32" _
Alias "Sleep" _
(ByVal dwMilliseconds As Long)
然后添加此函数:
Public Function sSleep(lngMilliSec As Long)
If lngMilliSec > 0 Then
Call sapiSleep(lngMilliSec)
End If
End Function
因此,您可以使用以下命令查看其工作原理:
Public Function sTestSleep()
Const cTIME = 1000 'in MilliSeconds
Call sSleep(cTIME)
MsgBox "Before this Msgbox, I was asleep for " _
& cTIME & " Milliseconds."
End Sub
因此,要暂停代码处理5秒钟,您可以说:
Call sSleep(5000)
所有这些代码都取自here。
发布于 2015-07-13 22:58:47
Update
方法实际上会阻塞,直到更新完成,因此您的代码已经在“等待”它了。但是,您必须先提交事务,然后其他人(用户、事务)才能真正看到更改。什么时候对Connection
对象调用CommitTrans
方法?是不是这导致了你的延迟?如果是这样,“暂停”几秒钟不会改变任何事情。
https://stackoverflow.com/questions/31386213
复制相似问题