2012-01-17 2 views
0

MS 액세스에서 SQL 패스 스루 쿼리를 사용할 때 기본 타임 아웃 시간은 60 초이며,이 시간 간격은 명령을 원격 서버로 보내어 취소합니다 의뢰. 이 명령을 Access 자신의 "Ctrl + Break"조작과 유사한 키보드에서 보내려면 어쨌든가?MS Access 패스 스루 쿼리 키보드 단축키 실행 취소

+0

아직 운이 없다면 주변을 둘러 보았습니다. 누구도 결정적인 것을 제공 할 수 없다면이 일은 할 수 없을 것입니다. 그러면 큰 일 것입니다. –

+0

"Ctrl + C"를 시도해 보셨습니까? – Ben

+0

@ 벤. 그래, 운이 없다. –

답변

2

먼저 Control-C가 실행을 취소하는 방법을 이해하십시오. 아마 키 시퀀스를 잡아서 특별한 것을 해보십시오. 오라클의 클라이언트 애플리케이션 (SQL * Plus 등)이 OCIBreak()를 호출하고 이전 OCI 호출로 쿼리를 실행할 때 얻은 서버의 핸들을 전달한다고 강력하게 의심합니다.

또한 액세스가 60 초 후에 아무 것도하지 않는 것으로 의심됩니다. 이는 실행 쿼리의 시간에 요청하는 시간 초과입니다. 더군다나 Access가 심지어 그 타임 아웃을 요구하는지 궁금해지기 시작했습니다. 내가 읽은 모든 것은 ODBC 드라이버가 질의 시간 제한을 지원하지 않기 때문에 클라이언트 측 시간 초과라고 생각하게되지만, 나는 빗나간다고 느낀다 ...

그래서이 OCIBreak() 호출로 되돌아 간다. 나쁜 소식은 다음과 같습니다. ODBC가 이러한 호출을 구현한다고 생각하지 않습니다. 100 % 확신하기 위해서는 오라클 소스 용 ODBC 드라이버를 살펴 봐야하지만 읽은 모든 것은 API 호출이 노출되지 않았 음을 나타냅니다.

참고로, 나는 "OBDC"와 함께이 검색어로 인터넷 검색을 봤는데 :

ORA-01013 (error when a user cancelled an operation, or when an operation times out) 
OCIBreak (OCI function which cancels a pending operation) 

--- 수정 # 1 --- 보조 노트로

, 나는 정말로 Access가 포기하고 Pass-Through 타임 아웃을 초과 할 때 어떠한 종류의 취소 명령도 보내지 않는다고 생각한다. 이 기술 자료 문서를 보는 경우에, ODBC 드라이버도 쿼리 시간 제한 지원하지 않습니다 경과 시간 후

PRB: Connection Timeout and Query Timeout Not Supported with Microsoft Oracle ODBC Driver and OLE DB Provider

를 액세스은 아마 결과 수신을 중지합니다. 아직 실행중인 쿼리 목록을 oracle에게 요청할 경우 여전히 목록이 표시되는 것으로 의심됩니다.

--- 편집 # 2 ---

지금까지 자신의 구현으로 "취소"- A, 취소의 더 "상태에 관계없이 반응하는 UI를 유지 정말하지 않은 쿼리의 "- 여기에 키워드 비동기가 될 것입니다. 비동기로 실행되도록 코드를 다시 작성하여 UI 용 메시지 펌프를 차단하지 않도록 할 것입니다. 나는 "비동기 쿼리 액세스"에 대한 검색을 시작하고 무슨 팝업 볼 수 있습니다. 한 SO 결과를 내놓았다 :

Running asynchronous query in MS Access

뿐만 아니라 xtremevbtalk.com에서 괜찮은 출발점 : 사실상

http://www.xtremevbtalk.com/showthread.php?t=82631

를 대신 블록 실행이 될 때까지 코드를 발사의 중 하나 시간 초과가 발생하거나 결과 집합이 반환되면 배후에서 코드를 시작할 수있는 액세스 권한을 요청하게됩니다. 그런 다음 시간 초과가 발생했음을 사용자에게 알리는 것과 같이 (시간 초과 실패) 결과가있는 그리드를 채우는 (성공) 등의 추가 작업이 발생할 때 발생하는 이벤트를 설정합니다.)

+0

Lynn, 나는 또한 타임 아웃이 서버가 아니라 클라이언트 측이라고 생각한다. 나는 핀을 내려 놓으려는 것이 정확히 어떻게 디폴트 60 초 후, Access 쿼리의 종료를 수행하거나, 초기 실행시 무언가를 설정하여 60 초 후에 강제 종료할지 여부를 지정하지 않더라도 실제로는 수행하지 않습니다. –

+0

@MattDonnan 통과 쿼리 속성 시트의 기본 ODBC 시간은 60 초입니다. – Fionnuala

+0

@Remou 그건 내 쿼리입니다. 그러면이 60 초 제한 시간이 실제로 pass-thru 쿼리의 취소를 어떻게 수행합니까? 키보드 단축키에서 그것을 복제? –