Q&A

  • 퀵레포트의 CompositeReport 실행시 발생하는 에러..
TQRCompositeReport라는게 두개의 레포트를 하나로 합쳐서 보여주는 거잖아요?
근데 에러가 나거던요. 원인은 모르겠습니다.
프로그램 흐름은...
첫 레포트가 실행된 후 close하면 두번째 레포트가 실행되는거거던요. 두번째 실행되는 레포트가 CompositeReport입니다.
첫번째 레포트는 정상적으로 실행되서 Preview가 되거던요. 그런데 첫번째를 close하고나면 아래와 같은 메세지가 뜹니다.
=====================================================================
Project ***.exe raised exception class EAccessViolation with message 'Access
violation at address 004FEDC0 in module '**.exe'. Read of address C30A09D8.
Process stopped. Use Step or Run to continue.
======================================================================

에러 확인하면 실행화면이 [Stopped]돼버리구요. 다시 실행시키면
======================================================================
Project ***.exe raised exception class EInvalidOp with message 'Invalid
floating point operation'. Process stopped. Use Step or Run to continue.
=======================================================================
이런 에러가 발생하고 다시 에러 확인 클릭하면 두번째 CompositeReport Preview가 실행됩니다. 좀 복잡한가요? 미치겠네요. 이놈을 어떻게 잡아야할지....ㅡㅡ;
고수님들의 도움을 기다립니다.

참고로 델파이 소스부분은...
=======================================================================
**** 출력버튼 눌렀을 경우 procedure내에 ****
             ZZ151PF := TZZ151PF.Create(Self); // 첫번째 레포트화면
             ZZ151PF.QuickRep1.DataSet :=ZZ151PF.Query3;
              kSearchQuery;  // query하는 부분
              fSearchQuery;  // query하는 부분
              if ZZ151PF.Query3.IsEmpty = True then
              begin
                showmessage('등록된 내용이 없습니다');
                exit;
              end;
              fQRLabelch; //출력폼의 label 변경하는 부분
             ZZ151PF.RC := ZZ151PF.Query3.RecordCount;
             ZZ151PF.Num := 0;
             ZZ151PF.QuickRep1.Preview;  //첫번째 레포트 Preview
             ZZ151PF.QuickRep1.Free;
             If CheckBox1.Checked then   // 체크돼 있으면 콤포지트레포트실행
               begin
                 buSearchQuery;  // query하는 부분
                 ijSearchQuery;  // query하는 부분
                 QRCompositeReport1.Preview; //콤포지트레포트 Preview
                 QRCompositeReport1.Free;
               end;

**** AddReports부분 ****
procedure TZZ150RF.QRCompositeReport1AddReports(Sender: TObject);
begin
  inherited;
  with QRCompositeReport1 do
  BEGIN
     Reports.Add(ZZ152PF.QuickRep1);
     Reports.Add(ZZ153PF.QuickRep1);
  end;
end;
0  COMMENTS