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
[10804] Re:[질문] 퀵리포트 미리보기와 출력물 결과가 달라요 ㅠ.,ㅠ
이노 [] 1799 읽음    2006-07-21 13:08
미리보기 후 출력하면... 미리보기에서 실행되었던 코드가 다시한번 돌아갑니다...
그래서 출력하면 사용된변수라던지.. 레코드가 마지막으로 되어 있어서 마지막 페이지가 찍힐 수 있습니다.
이걸 체크해보세요..

초보빌더 님이 쓰신 글 :
: 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 [질문] 퀵리포트 미리보기와 출력물 결과가 달라요 ㅠ.,ㅠ 초보빌더 1728 2006/07/19
10804     Re:[질문] 퀵리포트 미리보기와 출력물 결과가 달라요 ㅠ.,ㅠ 이노 1799 2006/07/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.