Q&A

  • ouick report에서 preview하고 print했을때 나타나는 오류..
quick report로 아래와 같이 master/detail 형식에 레포트를 구현했습니다...

--- report호출부분 ---
  jesmain.m_dataset1 := pumF.ZQuery1;
  jesmain.m_dataset2 := pumF.ZQuery2;
  pum_rpt1F := Tpum_rpt1F.Create( Self );
  pum_rpt1F.QuickRep1.Preview;
  pum_rpt1F.Free;

--- report부분 각 설정처리 부분 ---
procedure Tpum_rpt1F.DetailBand1BeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
begin
  if jesmain.m_dataset2.RecordCount > 0 then
     begin
       jesmain.m_dataset2.First;
       PrintBand := jesmain.m_dataset2.Eof;
       QRSubDetail1.Enabled := True
     end
  else
     QRSubDetail1.Enabled := False;
end;

procedure Tpum_rpt1F.QRGroup1BeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
begin
  if Sender.ControlCount = 0 then
     with DetailBand1 do
          While ControlCount > 0 do
                Controls[0].Parent := Sender;
end;

procedure Tpum_rpt1F.FormCreate(Sender: TObject);
begin
  QuickRep1.DataSet  := jesmain.m_dataset1;
  QRDBText1.DataSet  := jesmain.m_dataset1;
  QRDBText2.DataSet  := jesmain.m_dataset1;
          :
          :
  QRSubDetail1.DataSet  := jesmain.m_dataset2;
  QRDBText14.DataSet := jesmain.m_dataset2;
          :
          :
  QRDBText18.DataSet := jesmain.m_dataset2;
end;

여기서 jesmain.m_dataset1,2번은 레포트를 호출하는 모듈의 쿼리를 지칭하는 변수입니다...
해당 레포트들을 다른 폼에서도 사용할 수 있도록 변수로 처리했습니다...^^;;

문제점] 직접 프린터로 출력했을때는 잘 출력이 되는데 화면으로 일단 보이고 출력하면 원하는 대로 나오질 않습니다...

뭔소리냐면 마스터/디테일구조라도 디테일사항이 없을수도 있는데 전에는 아래와 같이 사용했더니..

procedure Tpum_rpt1F.DetailBand1BeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
begin
   jesmain.m_dataset2.First;
   PrintBand := jesmain.m_dataset2.Eof;
end;

이렇게 기술하고 사용했드만 디테일이 없으니깐 공백으로 한줄을 만들고 다른 레코드들을 출력하더군요...

타이틀/해드부분
master record-1
공백(detail 내용이 없음)
master record-2
detail record-2-1
detail record-2-2
   :
master record-3
detail record-3-1
   :

이렇게 나오더군요... 그래서 저 공백을 안나타나게 하려고 아래와 같이 설정했습니다...
procedure Tpum_rpt1F.DetailBand1BeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
begin
  if jesmain.m_dataset2.RecordCount > 0 then
     begin
       jesmain.m_dataset2.First;
       PrintBand := jesmain.m_dataset2.Eof;
       QRSubDetail1.Enabled := True
     end
  else
     QRSubDetail1.Enabled := False;
end;

그러니깐 처음 출력을 할때는 그것이 화면이던 직접적으로 프린터로 인쇄하던 아래와 같이 잘 나오더군요...

타이틀/해드부분
master record-1
master record-2
detail record-2-1
detail record-2-2
   :
master record-3
detail record-3-1
   :

그런데 이것을 preview해서 프린터 인쇄를 하니깐 master record-1이 아예 나오질 않고 그 자리가 공백으로
나온다는..  물론 preview했을때는 화면상에는 정상적으로 출력이 됩니다...
타이틀/해드부분
공백( <- master record-1내용이 나와야 하는데 안나옴 )
master record-2
detail record-2-1
detail record-2-2
   :
master record-3
detail record-3-1
   :

preview를 안하면 되지 않냐고 물으실텐데 그럴수는 없습니다... 일단 화면상으로 먼저 확인을 해야 해서리...
무엇을 더 고쳐야 할런지요??
0  COMMENTS