Q&A

  • ms-sql에서 데이터를 가져오는 프로그램이 먹통이 되는 증상
ms-sql에서 데이터를 가져오는 프로그램이 먹통이 되는 증상에 대한 해결책을 알고 싶습니다.
ADOquery로 6번의 쿼리로 데이터를 한꺼번에 가져오기 때문에 그럴까요?
아니면 쓰레드를 사용해아 하는지요?
많이 부족합니다... 많은 조언 부탁드립니다.
4  COMMENTS
  • Profile
    한원희 2004.02.02 10:41
    안녕하세요. 한원희입니다.

    저도 비슷한 문제로 쓰레드를 사용해서 해결했습니다.
    쓰레드 이용시 쓰레드 내부에서 ADO 관련 컴포넌트를 사용하기 위해서는 사용하시는 함수(대부분 Execute에서 하겠죠) 처음에 CoInitialize(nil);을 호출해 주시고, 함수 종료전에 CoUninitialize;를 호출해 주셔야 CoInitialize가 호출되지 않았다는 오류가 발생하지 않습니다.

    그럼, 즐프~

  • Profile
    이재기 2003.12.02 16:43

    ADOQuery객체가 6개라는 이야기인가요?
    가지고 오는 데 시간이 걸려서 그런것일 수두 있구
    아니면 DB쿼리상의 로직상 오류 일것 같기두 한데.. 정확하게 이야기 해주시면
  • Profile
    정광필 2003.12.02 18:45
    네.. ADOQuery객체를 6개를 사용했습니다.
    쿼리 오류는 아닙니다. 데이터를 잘 가져오고 있거든요..
    버튼을 클릭하면 DB Server에 접속해서 데이터를 가져오는데 가져오는 동안은 프로그램이 어떠한 작동도 하질 않습니다.
    한마디로 먹통이 되어 버립니다.
    데이터를 가져온 후는 잘 작동하고요...
    쿼리가 복잡해서 그런지..아니면 다른 것 때문에 그런지 알고 싶습니다.
    제 생각으로는  쿼리를 쓰레드로 처리하면 될것 같기도 한데... 제가 확실히 아는 것도 없고요...



  • Profile
    이재기 2003.12.05 11:38


    음 일단 정확한건 델파이에서 Query를 쓸경우 Async방식이 아닌 Block 걸
    리는 Sync방식이라 그렇게 시간이 걸려서 그런경우라면 쓰레드를 써서
    데이타를 가져온후 데이타셋에 채우고 이벤트를 발생시키는 방법밖에는 없겠군요..

    일단
    (1)호출를 하는 쪽에서
      TNotifyEvent = procedure(ds:TDataSetl) of object;

      TDBRunThread = class(TThread)
      private
         FDBEndEvent : TNotifyEvent;
         Qry:TSqlQuery;
      public
            procedure Execute; override;
      published
         property DBEndEvent:TNotifyEvent read FDBEndEvent write FDBEndEvent;
      end;


    이럭식으로 해서  만들고

    TForm1.Button1Click(sender:Tobject);
    var
      DBThread:TDBRunThread;
    begin
    DBThread:=TDBRunThread.Creat;
    DBThread.DBEndEvent:=DBRunningEnd;
    DBThread.Resume;

    end
    TForm1.DBRunningEnd(ds:TDataSet);
    begin
    //여기에서 데이타 표시

    end;

    (2) Thread안에서
    Create 될때
    Qry:=TSqlQuery.Create(nil);

    Execute안에서
    with Qry do begin
    Sql.Clear();
    Sql.Add(qry문)

    end;
    DataSet에서 받아온후에
    if (Assigned(FDBEndEvent)) then FDBEndEvent(dataset); 이런식으로
    하면 되겠네요..
    도움이 되셨을런지...



    • 임현선
    • 2003.12.02 20:36
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이용남
      2003.12.02 21:58
      설치 프로그램을 만드세요. 델파이 CD에서 제공하는 InstallShield나 자료실에 있는 상용프로그램을...
    • 장신귀
      2003.12.03 20:06
      아마도 uses에 jpeg를 추가하지 않으신거 같은데여... unit Unit1; interface uses  &nbs...
    • 장덕곤
      2003.12.02 10:37
      프로시져인데요... 그냥 JPEGToBmp; 이렇게 하시면 됩니다
    • 콩콩콩콩콩
      2003.12.03 09:25
      저도 그렇게했는데욤;; 안되요.ㅠㅠ 뭐가잘못된거죠?;;
    • 임형호
      2003.12.05 02:57
      안된다는건... 어떻게 안된다는거죠? 에러메세지라도 올려주심... 찾기 쉬울텐데요.
    • hubert
      2003.12.03 04:14
    • 오병주
      2003.12.02 17:52
    • 살며배우며
      2003.12.02 22:48
    • 오병주
      2003.12.02 23:36
    • 살며배우며
      2003.12.03 01:50
    • 오병주
      2003.12.03 02:37
    • 살며배우며
      2003.12.03 02:47
    • • • •
    • 볼랜드
    • 2003.12.02 07:51
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 오병주
      2003.12.02 17:46
      그레이스케일 이란 말이 뭐져 ? 그레이로 변환하는걸로 올려드릴께여 ~ 원하는 답변이 아니면 지송하...
    • 공왕주
    • 2003.12.02 03:05
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 너구리
      2003.12.02 04:14
      델파이탐크루즈님꼐서 답변 해주신 내용을 봤습니다.. ftp로 접속은 했으니.. loadfromfile에서 file...
    • 오병주
      2003.12.02 22:18
      다른 PC에 있는 그림파일은 볼려고하면 더 로딩되는 시간이 더걸립니다. 메모리도 더 많이 사용하구여.....
    • Qinter
    • 2003.12.02 02:27
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이승민
      2003.12.02 02:41
      변수명을 이렇게 선언하실거면 왜이렇게 하죠 비슷하게 사용하는 변수인가요?? 그렀담 차라리 배열을...
    • 너구리
      2003.12.02 02:41
      음 어쩌다가 그리 많은 변수를 선언 하게 되셨는지요.. 배열로 선언하시면 될것 같은데요.. for i :=...
    • LDS
      2003.12.02 01:49
      자료의 앞과 뒤에 시작 코드와 끝코드를 넣어서 끝났는지 아닌지 판단 하시는게 좋을 것 같습니다. ...
    • YYpBD
      2003.12.02 01:57
      혹시나 바이너리를 보내실때는 시작문자 끝문자가 보낼 내용중에 있을경우는 변환해서 보내셔야합니다~~...
    • 정석
      2003.12.02 01:55
      답변 감사합니다..그럼 시작과 끝만 지정해 주면 패킷이 다 들어올때까지 대기하고 합치는 거 맞죠???*^^*
    • 정광필
    • 2003.12.01 23:09
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 한원희
      2004.02.02 10:41
      안녕하세요. 한원희입니다. 저도 비슷한 문제로 쓰레드를 사용해서 해결했습니다. 쓰레드 이용시 쓰레...
    • 이재기
      2003.12.02 16:43
      ADOQuery객체가 6개라는 이야기인가요? 가지고 오는 데 시간이 걸려서 그런것일 수두 있구 아니면 DB쿼...
    • 정광필
      2003.12.02 18:45
      네.. ADOQuery객체를 6개를 사용했습니다. 쿼리 오류는 아닙니다. 데이터를 잘 가져오고 있거든요.. 버튼...
    • 이재기
      2003.12.05 11:38
      음 일단 정확한건 델파이에서 Query를 쓸경우 Async방식이 아닌 Block 걸 리는 Sync방식이라 그렇게 ...
    • 홍성호
    • 2003.12.01 20:43
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 너구리
      2003.12.01 23:04
      먼저 다른폼을 쓰려면 uses절에 사용할 파일(*.pas)(파일 이름만)을 선언해줘야 하구요.. 그렇게 하...
    • 홍성호
      2003.12.02 00:13
      답변 감사 드립니다...^^ 수고하세요.~~~
    • 조성배
    • 2003.12.01 19:36
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 너구리
      2003.12.01 22:53
      var   i, j : integer; begin   for i := 0  to PageControl1.PageCount...
    • 이희진
      2003.12.01 21:12
      var   i : integer; begin   for i := 1 to 8 do   begin   ...
    • 너구리
      2003.12.01 19:44
      for i := 0  to PageControl1.ComponentCount - 1 do   begin   if PageC...
    • 조성배
      2003.12.01 20:31
      답변 감사드립니다. 근데 안으로 들어오질 않네요.. PageControl1.ComponentCount 는 0이구요.. 혹시...
    • 김영현
      2003.12.01 20:49
      TabSheet의 ComponentCount를 ControlCount로 해보세요.
    • 도깨비
    • 2003.12.01 19:35
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 너구리
      2003.12.02 03:02
      궂이 cookie를 다루어야 하나요?? 음 cookie에다가 아이디를 남긴다.... 일단 cookie는 cookies에다...
    • 김명성
      2003.12.03 00:08
      내용 無
    • 유부남
    • 2003.12.01 17:57
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 궁금이
    • 2003.12.01 05:46
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 권영길
      2003.12.01 08:49
      이렇게 해보세요   TRecvThread = class(TThread)   private    ...
    • 공왕주
    • 2003.12.01 03:56
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 오병주
      2003.12.01 07:21
      안녕하세요...델탐 입니다. 본의 아니게 질/답에 문의가 자주오는 관계로 이렇게 글 을올립니다. * ...
    • Formas
    • 2003.12.01 03:20
    • 0 COMMENTS
    • /
    • 0 LIKES