2014-03-31 4 views
1

Access 2010에서 하위 폼이있는 폼이 있습니다. VBA를 통해 나는 SQL 쿼리를 생성하고 쿼리를 실행하는 하위 폼의 레코드 원본을 설정하고 결과를 보여줍니다 :Access VBA : 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 분인 것 같습니다. 내가하려고하면 시간 제한은 여전히 ​​60

입니다

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

그러나 그것은 작동하지 않습니다 나는 레코드 원본 속성을 변경하기 전에 CurrentDB 개체의 QueryTimeout 속성을 설정하여 제한 시간을 변경 시도

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

어떻게 내가 폼의 레코드 원본 속성을 설정할 때 실행되는 SQL 쿼리에 대한 시간 제한을 변경할 수 있습니다 다음하거나 즉각적인 패널에서 시간 제한을 변경하려면, 그것은 아무런 영향을 미치지 않습니다?


업데이트 : 해결 : ODBC 연결 (나는 오라클 ODBC 연결을 사용)에 대한 쿼리에 대한 시간 제한을 설정하는 방법이 있습니다. RecordSource에 할당 할 SQL 센젠 (sencentes)은 연결된 테이블을 사용하지 않고 Access 쿼리 개체를 사용합니다. 나는 "select * from my_linked_oracle_table ..."과 같은 SQL 문장이 아니라 "select * from my_access_query_object ..."와 유사하다는 것을 의미합니다. 그래서 이런 식으로, 액세스 쿼리 개체에 해당하여 QueryDef에 대한 시간 제한을 설정할 수 있습니다 내 SQL 쿼리에 의해 사용되는 Access 쿼리 개체에 대한 시간 초과로 2 분으로 설정

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

합니다.

그래서 지금은 시간 제한을 설정 한 다음 하위 폼의 레코드 원본 속성 변경 :

http://www.geeksengine.com/article/how-to-change-timeout-value-for-access-sql.html

답변

0

이를 보라를, 뭔가 helpfull이있을 수 있습니다 QueryDef ODBCTimeout 속성을 사용하여 (질문의 "업데이트"절 참조).
+0

내가 그것을 해결 :

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

관련 문제