簡體   English   中英

訪問VBA:設置RecordSource時如何更改查詢超時

[英]Access VBA: How to change the query timeout when setting RecordSource

在Access 2010中,我有一個帶有子窗體的窗體。 通過VBA,我創建一個SQL查詢並設置子窗體的RecordSource以運行查詢並顯示結果:

Forms("<main form>")("<subform>").Form.RecordSource = my_sql_sentence

有時,查詢產生超時錯誤,因此我檢測到它:

On Error Resume Next
Forms("<main form>")("<subform>").Form.RecordSource = my_sql_sentence
If Err <> 0 Then
    MsgBox "Error! (probably timeout): " & Err.Description
End If
On Error GoTo 0

超時似乎是〜1分鍾。 我嘗試通過在更改RecordSource屬性之前設置CurrentDB對象的QueryTimeout屬性來更改超時時間:

CurrentDb.QueryTimeout = 2
On Error Resume Next
Forms("<main form>")("<subform>").Form.RecordSource = my_sql_sentence
If Err <> 0 Then
...

但它不起作用,超時仍然是60。

如果我嘗試在“中間”面板中更改超時,則無效:

? CurrentDB.QueryTimeout
 60 
CurrentDB.QueryTimeout = 2
? CurrentDB.QueryTimeout
 60 

設置表單的RecordSource屬性時,如何更改運行的SQL查詢的超時?


更新 :已解決:有一種方法可以設置對ODBC連接的查詢超時(我使用與Oracle的ODBC連接)。 我分配給RecordSource的SQL語法不使用鏈接表,而是使用Access查詢對象。 我的意思是,SQL語句不像“從my_linked_oracle_table ...中選擇*”,而更像是“從my_access_query_object ...中選擇*”。 因此,可以通過以下方式為與Access查詢對象相對應的QueryDef設置超時:

CurrentDb.QueryDefs("<my_access_query_object>").ODBCTimeout = 120

將我的SQL查詢使用的Access查詢對象的超時設置為2分鍾。

因此,現在我設置超時時間,然后更改子窗體的RecordSource屬性:

CurrentDb.QueryDefs("<my_access_query_object>").ODBCTimeout = 120
Forms("<main form>")("<subform>").Form.RecordSource = my_sql_sentence

有一種方法可以設置對ODBC連接的查詢超時(我使用與Oracle的ODBC連接)。 我分配給RecordSource的SQL語法不使用鏈接表,而是使用Access查詢對象。 我的意思是,SQL語句不像“從my_linked_oracle_table ...中選擇*”,而更像是“從my_access_query_object ...中選擇*”。 因此,可以通過以下方式為與Access查詢對象相對應的QueryDef設置超時:

CurrentDb.QueryDefs("<my_access_query_object>").ODBCTimeout = 120

將我的SQL查詢使用的Access查詢對象的超時設置為2分鍾。

因此,現在我設置超時時間,然后更改子窗體的RecordSource屬性:

CurrentDb.QueryDefs("<my_access_query_object>").ODBCTimeout = 120
Forms("<main form>")("<subform>").Form.RecordSource = my_sql_sentence

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM