|
윤승일 님이 쓰신 글 :
: 안녕하세요~!
: 여기다 처음 질문 하는 건데 잘좀 부탁 드려요! ^__^
: DataBase에서 데이터를 읽으면(DataBase component로 connection을 하면) 모래시계 커서와 SQL이라는 문자가 커서 및에 나타 나잖아여? 근데 저는 이 커서가 Default로 나타나게 하고 싶습니다.
: 이것이 가능 한가요?
: DataBase를 읽는 시간 동안에도 다른 Action을 줄 수 있게, 모래시계 커서를 없앨려고 하거든요.
: 많은 답변 부탁드릴께요.
답변을 달기로 confirm을 누르면 자꾸 에러가 생겨서 이렇게 씁니다.
질문이 실린 날짜를 보니 벌써 1년도 전의 글이더군요.
이 질문을 하신 분께는 별 도움이 안되겠지만
저도 같은 문제로 고생을 했기에 답변 적어 봅니다.
일단 SQL hourglass 를 없애는 방법은 TSession Component의 SQLHourGlass property를
false로 놓으면 해결됩니다. Default Session의 경우는
TSession * DefaultSession = Sessions->FindSession("Default");
DefaultSession->SQLHourGlass = false;로 하시면 됩니다.
DLL module에서 DB를 open 하는 부분이 있는 경우 DLL module에서도 같은
짓을 해주어야 합니다.
하지만 SQLHourGlass를 false로 한다고 해서 control이 돌아오지는 않습니다.
단지 커서가 바뀌지 않을 뿐입니다.
DB에 접근하고도 control을 얻고 싶다면 control 부분이나 DB접근 부분을
서로 다른 thread로 독립시켜야 합니다. 물론 이렇게 서로 다른 thread에서
DB에 접근하는 경우는 Session도 서로 다르게 맺어 주어햐 한다는 것을
기억하시기 바랍니다. 그리고 서로 다른 Session으로 DB를 오픈하는 경우
login prompt가 뜨는 것을 막기 위해서는 해당 Session을 TDatabase component
에 연결하고 LoginPrompt property를 false로 하신 다음 params property에
다음과 같은 내용을 적어 주십시요.
USER NAME=...
PASSWORD=...
ex)
USER NAME=epms_user
PASSWORD=hahaha
(PASSWORD가 없는 경우 그냥 hahaha부분을 비워 두시면 됩니다.)
물론 이렇게 thread로 처리할 수 있으면 control를 잃지 않고도
DB에 접근할 수 있지만 그리 쉽지는 않습니다.
thread의 동기화 문제도 있고
저의 경우는 Session을 Default까지 포함해서 6개 까지 밖에 생성할 수가
없었습니다. 더 이상의 Session을 생성할 경우 Insufficient memory error가
발생합니다. 물론 System memory가 부족한 것은 아니었습니다.
6개 이상의 Session을 동시에 사용할 수 없는 문제는 저도 아직 해결 못하고
있습니다. 혹시 이 부분에 대해 아시는 분이 있다면 답글 부탁드립니다.
|