Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[10795] [질문]Quick report에서 preview한 다음 프린터했을때 오류...
이승근 [lsg0918] 1486 읽음    2006-07-15 22:30
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를 안하면 되지 않냐고 물으실텐데 그럴수는 없습니다... 일단 화면상으로 먼저 확인을 해야 해서리...
무엇을 더 고쳐야 할런지요??

+ -

관련 글 리스트
10795 [질문]Quick report에서 preview한 다음 프린터했을때 오류... 이승근 1486 2006/07/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.