我正在尝试使用ADO Recordset
对象更新Excel VBA中的MS Access数据库。当我触发rs.Update
方法时,我希望以下代码在执行之前等待数据库更新。
数据库看起来需要3-5秒才能注册更新方法。如何在此之前延迟后续代码执行?
答案 0 :(得分:1)
这是一个简单的功能,我现在用于暂停处理几秒钟。首先确保您的模块中有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。
答案 1 :(得分:1)
Update
方法实际上会阻塞,直到更新完成,因此您的代码已经“等待”它。但是,您必须在其他人(用户,事务)实际可以看到更改之前提交您的事务。您何时在CommitTrans
对象上调用Connection
方法?这可能会导致您的延误吗?如果是这样,“暂停”几秒钟不会改变任何东西。