Q&A

  • 퀵레포트 한번 연 후 닫고 다시 열때 에러
퀵레포트 Preview 실행 후에 퀵레포트를 Close 시키고
다시 퀵레포트 Preview 실행하면

QuickRep1.Query1.Active := False; 부분에서
아래와 같은 에러가 납니다.

Access violation at address 004FA287 in module 'AAA.exe'.Read of address 00000000


소스입니다.

   if form1= nil then
   begin
      form1:= Tform1.Create(Application);
   end;
   try
      with form1.Query1 do //==>퀵레포트가 있는 Form
      begin
          try
              Active   := False; //======> 두번째 실행시 에러나는 부분
              SQL.Text := QueryString;  //==> 해당 쿼리문을 넣었습니다
              Active   := True;
          except
          on E : Exception do
          begin
              ShowMessage('출력 오류 : ' + Chr(13) + Chr(13) + E.Message);
              form1.Free;
              Exit;
          end;
          end;
      end;
      quickRep1.Preview;
       Application.ProcessMessages;


   finally
      form1.Free;
   end;

퀵레포트가 있는 form1을 닫을 때 Free 시키지 않고
form1:= nil; 로 하면 다시 열 경우 위와 같은 에러는 발생하지 않지만
퀵레포트가 있는  form1에서 Preview만 닫히고 form1은 그대로 화면에 보여지게 됩니다.
정말 이러지도 저러지도 못하는 상황에 있습니다.
어떻게 해야 해결할 수 있는지 꼭 좀 알려 주십시오
3  COMMENTS
  • Profile
    nilriri™ 2003.05.27 00:37
    퀵레포트를 만들때.. 일반 폼을 하나 만들고..

    컨트롤 탭 페이지에서 퀵레포트 컨트롤을 배치시켜서 만들었나 보군요.

    에구..내가 말하고도 뭔 말인지 모르겠넹...

    암튼...일케 하시면..qrp001.gif와 같은 형태가 되고..

    두번째 방법(qrp002.gif)을 사용하시면..

    //레포트를 사용할 폼..(미리보기나 출력버튼이 있는 폼)

    implementation
    uses
         unit2;  // qrp002.gif의 방법으로 만든 유닛이름..

         :
         :
    begin
    QuickReport2 := TQuickReport2.Create(nil);
    QuickReport2.PreviewModal;
    QuickReport2.free;
    end;

    이렇게 사용하시는게...

    그럼 즐프~

  • Profile
    김종화 2003.05.27 00:17
       finally
          form1.Close;
       end;

    하시고..

    Form1의 OnClose 이벤트에다가

    Action := caFree;

    이렇게 함 넣어보세요..

    전 이렇게 하면 에러 안나더군여..



  • Profile
    ybkim 2003.05.27 00:31