记录集更新延迟

时间:2015-07-13 14:33:19

标签: vba excel-vba ms-access ado excel

我正在尝试使用ADO Recordset对象更新Excel VBA中的MS Access数据库。当我触发rs.Update方法时,我希望以下代码在执行之前等待数据库更新。

数据库看起来需要3-5秒才能注册更新方法。如何在此之前延迟后续代码执行?

2 个答案:

答案 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方法?这可能会导致您的延误吗?如果是这样,“暂停”几秒钟不会改变任何东西。