![](/img/trans.png)
[英]MS-Access Howto refresh a form when its RecordSource Query is updated by VBA
[英]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.