아래와 같은 로직으로 출력을 하는데요.
마지막 페이지가 인쇄가 안됩니다.
디버그 모드로 따라가면 분명히 마지막 데이터까지 처리를 하는게 보이는데
화면에는 마지막 페이지가 안나오네요.
한장에 두개의 영수증을 출력하고 만약 gubn_code가 다르면 한장에 한개의 영수증만 출력하고
하나는 빈페이지로 나오게 하거던요.
제가 어떤실수를 하였는지 꼭 잡아주세요.
procedure TfrmReceipt.qrReceiptNeedData(Sender: TObject;
var MoreData: Boolean);
begin
if (endPrint) then
begin
MoreData := true;
end
else
begin
MoreData := false;
end;
end;
procedure TfrmReceipt.qrReceiptBeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
endPrint := true;
end;
procedure TfrmReceipt.detailReceiptBeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
datMans1.Lines.Clear;
datMans2.Lines.Clear;
//------------------------------------------------------------------------------
datCast1.Caption := Trim(copy(Trim(frmExpnMang.cboCast.Text), 1, Length(Trim( frmExpnMang.cboCast.Text)) - 18)); //방송
datDate1.Caption := Trim(frmDb.ADOSubQuery.FieldByName('used_date').AsString); //사용일자
datUsed1.Caption := Trim(frmDb.ADOSubQuery.FieldByName('gubn_name').AsString); //사용항목
datPaper1.Caption := Trim(frmDb.ADOSubQuery.FieldByName('rece_payx').AsString); //영수증금액
datMoney1.Caption := Trim(frmDb.ADOSubQuery.FieldByName('used_mony').AsString); //사용금액
datMans1.Lines.Add(Trim(frmDb.ADOSubQuery.FieldByName('used_mans').AsString)); //참가자
if (frmDb.ADOSubQuery.FieldByName('asSplite').AsInteger > 1) then
begin
datSplite1.Caption := '[분할 영수증]다른 부착용지를 확인하십시오'; //분할여부
end
else
begin
datSplite1.Caption := '';
end;
datReceipt1.Caption := Trim(frmDb.ADOSubQuery.FieldByName('rece_code').AsString); //영수증코드
//------------------------------------------------------------------------------
//DB에 영수증이 출력되었다고 저장한다.
updateRecePutx(Trim(frmDb.ADOSubQuery.FieldByName('expn_code').AsString));
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
datCast2.Caption := ''; //방송
datDate2.Caption := ''; //사용일자
datUsed2.Caption := ''; //사용항목
datPaper2.Caption := ''; //영수증금액
datMoney2.Caption := ''; //사용금액
datMans2.Lines.Add(''); //참가자
datSplite2.Caption := ''; //분할여부
datReceipt2.Caption := ''; //영수증코드
endPrint := false;
end
else
begin
//------------------------------------------------------------------------------
datCast2.Caption := Trim(copy(Trim(frmExpnMang.cboCast.Text), 1, Length(Trim( frmExpnMang.cboCast.Text)) - 18)); //방송
datDate2.Caption := Trim(frmDb.ADOSubQuery.FieldByName('used_date').AsString); //사용일자
datUsed2.Caption := Trim(frmDb.ADOSubQuery.FieldByName('gubn_name').AsString); //사용항목
datPaper2.Caption := Trim(frmDb.ADOSubQuery.FieldByName('rece_payx').AsString); //영수증금액
datMoney2.Caption := Trim(frmDb.ADOSubQuery.FieldByName('used_mony').AsString); //사용금액
datMans2.Lines.Add(Trim(frmDb.ADOSubQuery.FieldByName('used_mans').AsString)); //참가자
if (frmDb.ADOSubQuery.FieldByName('asSplite').AsInteger > 1) then
begin
datSplite2.Caption := '[분할 영수증]다른 부착용지를 확인하십시오'; //분할여부
end
else
begin
datSplite2.Caption := '';
end;
datReceipt2.Caption := Trim(frmDb.ADOSubQuery.FieldByName('rece_code').AsString); //영수증코드
//------------------------------------------------------------------------------
//DB에 영수증이 출력되었다고 저장한다.
updateRecePutx(Trim(frmDb.ADOSubQuery.FieldByName('expn_code').AsString));
qrReceipt.NewPage;
if frmDb.ADOSubQuery.Eof then
endPrint := false;
frmDb.ADOSubQuery.Next;
end;
end
else
begin
datCast2.Caption := ''; //방송
datDate2.Caption := ''; //사용일자
datUsed2.Caption := ''; //사용항목
datPaper2.Caption := ''; //영수증금액
datMoney2.Caption := ''; //사용금액
datMans2.Lines.Add(''); //참가자
datSplite2.Caption := ''; //분할여부
datReceipt2.Caption := ''; //영수증코드
qrReceipt.NewPage;
if frmDb.ADOSubQuery.Eof then
endPrint := false;
end;
end;
|