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
[10803] [질문] 퀵리포트 미리보기와 출력물 결과가 달라요 ㅠ.,ㅠ
초보빌더 [sorigae] 1727 읽음    2006-07-19 16:47
DB의 데이터를 읽어 여러페이지의 출력물을 미리보기로 만들었습니다.
그리고 미리보기 상태에서 출력 버튼을 클릭하면 여러페이지 중 가장 마지막 페이지가 출력됩니다.

qrreport.preview 하면 미리보기에 출력이 다 나오고 여기서 출력누르면 마지막 페이지 인쇄가 인쇄되네요.

qrreport.print하면 모든 출력물 정상적으로 인쇄
됩니다. 델파이 6버전 사용하고 있고요.


출력 관련 소스입니다.

procedure TfrmPrt_Receipt.qrReceiptNeedData(Sender: TObject;
var MoreData: Boolean);
begin
   //출력 데이터가 게속 있는지 확인.
   if (endPrint) then
   begin
       MoreData := true;   //계속 출력
       qrReceipt.NewPage;
   end
   else
   begin
       MoreData := false;  //출력 종료
   end;
end;

procedure TfrmPrt_Receipt.qrReceiptBeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
   endPrint := true;   // 출력 데이터가 있는 것으로 초기화
end;

procedure TfrmPrt_Receipt.detailReceiptBeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
   //초기화
   datCast1.Caption    := ''; //방송
   datDate1.Caption    := ''; //사용일자
   datUsed1.Caption    := ''; //사용항목
   datPaper1.Caption   := ''; //영수증금액
   datMoney1.Caption   := ''; //사용금액
   datMans1.Lines.Clear;      //참가자
   datSplite1.Caption  := ''; //분할여부
   datReceipt1.Caption := ''; //영수증코드
   datUsedMan1.Caption := ''; //입금자

   datCast2.Caption    := ''; //방송
   datDate2.Caption    := ''; //사용일자
   datUsed2.Caption    := ''; //사용항목
   datPaper2.Caption   := ''; //영수증금액
   datMoney2.Caption   := ''; //사용금액
   datMans2.Lines.Clear;      //참가자
   datSplite2.Caption  := ''; //분할여부
   datReceipt2.Caption := ''; //영수증코드
   datUsedMan2.Caption := ''; //입금자

   // #1 좌측 데이터 저장 =====================================================
   datCast1.Caption    := Trim(copy(Trim(frmExpnMang.cboCast.Text), 1, Length(Trim( frmExpnMang.cboCast.Text)) - 18)); //방송
   datDate1.Caption    := frmMain.dateEncode(Trim(frmDb.ADOSubQuery.FieldByName('used_date').AsString));   //사용일자
   datUsed1.Caption    := Trim(frmDb.ADOSubQuery.FieldByName('gubn_name').AsString);   //사용항목
   datPaper1.Caption   := frmMain.moneyEncode(Trim(frmDb.ADOSubQuery.FieldByName('rece_payx').AsString));   //영수증금액
   datMoney1.Caption   := frmMain.moneyEncode(Trim(frmDb.ADOSubQuery.FieldByName('used_mony').AsString));   //사용금액
   datUsedMan1.Caption := Trim(frmDb.ADOSubQuery.FieldByName('user_name').AsString);   //입력자
   datMans1.Lines.Add(Trim(frmDb.ADOSubQuery.FieldByName('used_mans').AsString));      //참가자
   datReceipt1.Caption := Trim(frmDb.ADOSubQuery.FieldByName('rece_code').AsString);   //영수증코드
   if (frmDb.ADOSubQuery.FieldByName('asSplite').AsInteger > 1) then
       datSplite1.Caption := '[분할 영수증]다른 부착용지를 확인하십시오'               //분할여부
   else
       datSplite1.Caption := '';
   updateRecePutx(Trim(frmDb.ADOSubQuery.FieldByName('expn_code').AsString)); //인쇄플레그 저장
   // #1 좌측 데이터 저장 =====================================================



   //동일한 항목이면 우측 출력물 위치에 출력하고 항목이 다르면 페이지를 넘겨 출력한다.
   //기존항목 저장
   tmpGubn := Trim(frmDb.ADOSubQuery.fieldByName('gubn_code').AsString);
   //새로운 출력데이터 로드
   frmDb.ADOSubQuery.Next;
   //기존항목 = 새로운 출력데이터를 비교한다.
   if (tmpGubn = Trim(frmDb.ADOSubQuery.fieldByName('gubn_code').AsString)) then
   begin
       //같은 항목일 경우 데이터가 끝났으면 신규데이터가 아니므로 우측 출력물에 빈칸을 저장한다.
       if frmDb.ADOSubQuery.Eof then
       begin
           //더이상 출력할 출력물이 없다.
           endPrint := false;
       end
       else
       begin
           // #2 우측 데이터 저장 =============================================
           datCast2.Caption    := Trim(copy(Trim(frmExpnMang.cboCast.Text), 1, Length(Trim( frmExpnMang.cboCast.Text)) - 18)); //방송
           datDate2.Caption    := frmMain.dateEncode(Trim(frmDb.ADOSubQuery.FieldByName('used_date').AsString)); //사용일자
           datUsed2.Caption    := Trim(frmDb.ADOSubQuery.FieldByName('gubn_name').AsString); //사용항목
           datPaper2.Caption   := frmMain.moneyEncode(Trim(frmDb.ADOSubQuery.FieldByName('rece_payx').AsString)); //영수증금액
           datMoney2.Caption   := frmMain.moneyEncode(Trim(frmDb.ADOSubQuery.FieldByName('used_mony').AsString)); //사용금액
           datUsedMan2.Caption := Trim(frmDb.ADOSubQuery.FieldByName('user_name').AsString);   //입력자
           datMans2.Lines.Add(Trim(frmDb.ADOSubQuery.FieldByName('used_mans').AsString));    //참가자
           datReceipt2.Caption := Trim(frmDb.ADOSubQuery.FieldByName('rece_code').AsString); //영수증코드
           if (frmDb.ADOSubQuery.FieldByName('asSplite').AsInteger > 1) then
               datSplite2.Caption := '[분할 영수증]다른 부착용지를 확인하십시오'              //분할여부
           else
               datSplite2.Caption := '';
           updateRecePutx(Trim(frmDb.ADOSubQuery.FieldByName('expn_code').AsString)); //인쇄플레그 저장
           // #2 우측 데이터 저장 =============================================

           frmDb.ADOSubQuery.Next;

           //해당건이 마지막이면 출력의 마지막이라고 선언한다.
           if frmDb.ADOSubQuery.Eof then
               endPrint := false;
       end;
   end
   else
   begin
       if frmDb.ADOSubQuery.Eof then
           endPrint := false;
   end;
end;

+ -

관련 글 리스트
10803 [질문] 퀵리포트 미리보기와 출력물 결과가 달라요 ㅠ.,ㅠ 초보빌더 1727 2006/07/19
10804     Re:[질문] 퀵리포트 미리보기와 출력물 결과가 달라요 ㅠ.,ㅠ 이노 1799 2006/07/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.