C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[68806] Re:시간제한 만료 에러..
김선동 [pabalma7] 1202 읽음    2012-12-14 11:33
안녕하세요.
제가 동일한 문제로 고민을 한 겸험이 있어서요.

아시다시피 C++ Builder 6.0 이상은 변경이 가능하지만 
C++ Builder 5.0 이하버전에서는
TADOQuery CommandTimeout 프로퍼티값이 변경이 안됩니다.

TADOConnection* pConnection = new TADOConnection(this);
pConnection ->CommandTimeout  = 600;         // 쿼리실행제한 Default = 30초이지만 600초로 늘려서 설정
...
TADOQuery* pQuery = new TADOQuery(this);
pQuery->Connect = pConnection;
...

여기서 ADOQuery의 Connect를 ADOConnection와 연결한다고 해서
pQuery->CommandTimeout 값이 변하는건 아니더군요.
디버깅해서 보면 여전히 Default 30초 입니다.

그렇다고 
pQuery->CommandTimeout  = pConnection ->CommandTimeout;
이렇게 하면 Access거부가 일어나서 컴파일에러가 걸립니다.

아래 한분이 TADOQuery를 쓰지말고 TADODataSet을 사용하라고 하셨는데
맞는 말씀이십니다. TADODataSet은 CommandTimeout 값 변경이 가능하거든요. 
그러나 저같은 경우는 TADOQuery를 사용한 소스가 너무 많이 걸려있어서
전체를 프로퍼티까지 바꾸어야하고 없던 문제가 발생하지않을까 부담스러워서
이렇게 해결했습니다.

어차피 TADOQuery는 TADODataSet의 ChildClass이거든요
따라서,
((TADODataSet*)pQuery)->CommandTimeout  = pConnection ->CommandTimeout;
이렇게 타입캐스팅을 해주면 문제없이 TADOQuery를 사용하면서 CommandTimeout값을 변경할 수 있습니다.

결론적인 소스의 형태는 아래처럼 되겠습니다.

TADOConnection* pConnection = new TADOConnection(this);
pConnection ->CommandTimeout  = 600;         // 쿼리실행제한 Default = 30초이지만 600초로 늘려서 설정
...
TADOQuery* pQuery = new TADOQuery(this);
pQuery->Connect = pConnection;
((TADODataSet*)pQuery)->CommandTimeout  = pConnection ->CommandTimeout;
...

혹시나 저처럼 이 문제로 검색을 해보신 분들에게 도움이 되길 바랍니다^^

PS. 조언을 주셨던 회웅형님~ 감사해요^^

초보 님이 쓰신 글 :
: ADOQuery 과 sql을 씁니다.
: 조금 많은 양의 데이타를 쿼리하면 잠시후
: "시간제한이 만료되었읍니다"
: 라는 에러 메세지가 뜹니다.
:
: 이것을 제어 할수 있는 방법을 알고 계신분은
: 알려주십시오..
:
:
: 감사합니다.
:

+ -

관련 글 리스트
15164 시간제한 만료 에러.. 초보 977 2002/01/31
68806     Re:시간제한 만료 에러.. 김선동 1202 2012/12/14
15189     Re:시간제한 만료 에러.. 김영대 1139 2002/01/31
15169     Re:시간제한 만료 에러.. 방태윤 1363 2002/01/31
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.