2010-09-23 60 views
3

我測試的Access-VBA控制過程的錯誤處理:如何模擬ODBC超時錯誤?

  1. 腳本的訪問「控制器」 DB開始。
  2. 腳本在第二個訪問文件('數據庫')中啓動一個宏。
  3. '數據庫'文件中的宏運行一堆可以查詢的數據。
  4. 這些查詢從鏈接到ODBC源的表(實際上是SQL-Server)中提取。

當這個過程在清晨運行,有時查詢超時。今天,我更新了控制器腳本中的錯誤處理,所以我想模擬一個超時錯誤。

我已經看了MS Access中的ODBC管理員和高級選項,但我沒有找到我需要的東西。想法?

回答

2

在設計視圖中打開您的宏。在查看菜單下,選擇屬性。 它應該是一個超時屬性,將其設置爲一個短值並進行測試。

+0

好主意,但沒有奏效。我認爲該屬性僅在服務器未能響應之後纔會使用*。 – PowerUser 2010-09-23 16:29:00

0

在您的SQL查詢中添加以下語句 - 它應該會導致超時。

--waits for 5 mins 
    WaitFor Delay '00:05' 

或者,如果您不想修改現有查詢,可以在宏查詢的其中一個表上運行此操作。這將鎖定表3分鐘

begin transaction 

Select * 
From MyTable with (TABLOCKX) 
--wait for 3 min 
WaitFor Delay '00:03' 

rollback transaction 
+0

我在傳遞查詢中使用您的事務示例,但它始終提示我輸入數據源。我如何將數據源放入交易中? – PowerUser 2010-09-23 16:50:40

+0

@PowerUser - 你不能在SSMS查詢窗口中運行這個查詢嗎?說實話,我不太瞭解MS Access。 – codingbadger 2010-09-23 16:53:29

+0

對不起,我甚至不知道SSMS查詢窗口是什麼。很確定Access沒有它。 – PowerUser 2010-09-23 17:05:42

0

如果您的查詢是修改,您可以添加一個調用WAITFOR的觸發器。 Described here.

1

重:有時查詢超時。

確保爲ODBC超時查詢屬性被設置爲零,因此它不會產生錯誤,但繼續運行。

+0

+1是個好主意。但是如果我這樣做了,我的報告就會互相支持。 – PowerUser 2010-09-23 16:30:53

+0

如果它們在宏中或代碼中被順序調用,則不適用。他們是否依賴彼此的結果? – Beth 2010-09-23 16:35:07

+0

如果我連續運行它們,並且第一份報告延遲了一個小時,那麼之後的所有報告都將被延遲。我寧願第一份報告在幾分鐘後放棄,繼續下一步。 – PowerUser 2010-09-23 16:40:24