2012-07-23 69 views
3

我在MS-Access中只有一臺計算機運行正常時間的宏,但在另一臺計算機上運行時,它的運行時間爲100%。我該如何減慢MS-Access中宏的執行速度

我懷疑這是因爲宏運行速度很快,在移動到下一個宏之前沒有完成一個步驟的執行。有沒有一種方法可以在步驟之間暫停?

我的宏步驟如下:

  1. RunCode的進口數據
  2. 打開追加查詢
  3. 打開追加查詢
  4. 打開更新查詢
  5. RunSQL爲刪除,數據

第一步和最後一步執行1 00%的時間在兩臺計算機上,但中間步驟有時會失敗並且沒有錯誤。我曾嘗試在宏之間添加此代碼以減慢速度。我無法弄清楚如何正確應用它,或者如果這個解決方案甚至是正確的。

Public Function SlowMacro() 
Application.Wait (Now + TimeValue("0:00:02")) 
End Function 

任何幫助表示讚賞,在此先感謝。

+0

找你的代碼會有幫助。沒有任何意義,第2步到第4步失敗並沒有錯誤。你有什麼錯誤處理?理想情況下,您想了解步驟2到步驟4失敗的原因,而不是使用像「Wait」例程這樣的解決方法。 – LittleBobbyTables 2012-07-23 20:29:32

+0

'Application.Wait'將停止所有MS Access執行任何操作,這意味着你什麼也沒有做。但是,我認爲你對問題的理解錯誤,但是由於你沒有提供任何細節,我不能真正建議從哪裏開始尋找實際問題。 – 2012-07-23 20:30:00

+0

除調用該函數外,沒有真正的代碼。該宏只是設置爲打開追加,並更新查詢。我應該用程序化方式打開它們嗎? – talbright 2012-07-23 20:32:20

回答

3

如果你希望你的SlowMacro()功能造成2秒的停頓,你可以使用代碼訪問網站:API: Make code go to Sleep

然後我想這應該是你的函數工作。

Public Function SlowMacro() 
    sSleep 2000 
End Function 

這些是我鏈接的網頁的關鍵部分。

Private Declare Sub sapiSleep Lib "kernel32" _ 
     Alias "Sleep" _ 
     (ByVal dwMilliseconds As Long) 

Sub sSleep(lngMilliSec As Long) 
    If lngMilliSec > 0 Then 
     Call sapiSleep(lngMilliSec) 
    End If 
End Sub