안녕하세요.
스트링 그리드를 이용한 퀵레포트 출력을 하려고 합니다.
preview를 하면 잘 나오는디 print를 클릭하면 타이틀만 찍히고 데이타는
출력이 안되는군요. 왜 그런지 도대체 모르겠어여..
고수님들이 함 봐주시기 바랍니다.
소스 올려봅니다.
unit Rtest;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Qrctrls, quickrpt, ExtCtrls;
type
Tqtest = class(TForm)
QuickRep1: TQuickRep;
TitleBand1: TQRBand;
ColumnHead: TQRBand;
DetailList: TQRBand;
QRLabel1: TQRLabel;
QRLabel3: TQRLabel;
QRLabel4: TQRLabel;
QRLabel5: TQRLabel;
QRLabel6: TQRLabel;
QRLabel9: TQRLabel;
QRLabel10: TQRLabel;
QRLbl_purch_unit: TQRLabel;
QRLabel13: TQRLabel;
QRLbl_product_date: TQRLabel;
QRLbl_lot_size: TQRLabel;
QRLbl_date: TQRLabel;
QRLbl_outer_pojang_method: TQRLabel;
QRLbl_lead_time: TQRLabel;
procedure DetailListBeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
procedure QuickRep1BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
procedure TitleBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
procedure QuickRep1NeedData(Sender: TObject; var MoreData: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
qtest : Tqtest;
CurItem : Integer;
implementation
uses test;
{$R *.DFM}
procedure Tqtest.QuickRep1BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
// showmessage('aaa');
end;
procedure Tqtest.TitleBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
// QRLbl_date.Caption := FDnpmMDL.Query4.FieldByName('SYS_DATE').AsString;
end;
procedure Tqtest.DetailListBeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
with Form_test.stg_test do
begin
QRLbl_PRODUCT_DATE.Caption := cells[0,CurItem];
QRLbl_PURCH_UNIT.Caption := cells[1,CurItem];
QRLbl_LOT_SIZE.Caption := cells[2,CurItem];
QRLbl_OUTER_POJANG_METHOD.Caption := cells[3,CurItem];
QRLbl_LEAD_TIME.Caption := cells[4,CurItem];
Inc(CurItem);
end;
end;
procedure Tqtest.QuickRep1NeedData(Sender: TObject;
var MoreData: Boolean);
begin
if CurItem < Form_test.stg_test.Rowcount then
MoreData := CurItem <= Form_test.stg_test.RowCount;
end;
end.
그럼 자세한 답변 부탁드려요.
> 안녕하세요.
>
> 스트링 그리드를 이용한 퀵레포트 출력을 하려고 합니다.
>
> preview를 하면 잘 나오는디 print를 클릭하면 타이틀만 찍히고 데이타는
>
> 출력이 안되는군요. 왜 그런지 도대체 모르겠어여..
>
> 고수님들이 함 봐주시기 바랍니다.
>
> 소스 올려봅니다.
>
> unit Rtest;
>
> interface
>
> uses
> Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
> Qrctrls, quickrpt, ExtCtrls;
>
> type
> Tqtest = class(TForm)
> QuickRep1: TQuickRep;
> TitleBand1: TQRBand;
> ColumnHead: TQRBand;
> DetailList: TQRBand;
> QRLabel1: TQRLabel;
> QRLabel3: TQRLabel;
> QRLabel4: TQRLabel;
> QRLabel5: TQRLabel;
> QRLabel6: TQRLabel;
> QRLabel9: TQRLabel;
> QRLabel10: TQRLabel;
> QRLbl_purch_unit: TQRLabel;
> QRLabel13: TQRLabel;
> QRLbl_product_date: TQRLabel;
> QRLbl_lot_size: TQRLabel;
> QRLbl_date: TQRLabel;
> QRLbl_outer_pojang_method: TQRLabel;
> QRLbl_lead_time: TQRLabel;
> procedure DetailListBeforePrint(Sender: TQRCustomBand;
> var PrintBand: Boolean);
> procedure QuickRep1BeforePrint(Sender: TCustomQuickRep;
> var PrintReport: Boolean);
> procedure TitleBand1BeforePrint(Sender: TQRCustomBand;
> var PrintBand: Boolean);
> procedure QuickRep1NeedData(Sender: TObject; var MoreData: Boolean);
> private
> { Private declarations }
> public
> { Public declarations }
> end;
>
> var
> qtest : Tqtest;
> CurItem : Integer;
>
> implementation
>
> uses test;
>
> {$R *.DFM}
>
> procedure Tqtest.QuickRep1BeforePrint(Sender: TCustomQuickRep;
> var PrintReport: Boolean);
> begin
> // showmessage('aaa');
> end;
>
> procedure Tqtest.TitleBand1BeforePrint(Sender: TQRCustomBand;
> var PrintBand: Boolean);
> begin
> // QRLbl_date.Caption := FDnpmMDL.Query4.FieldByName('SYS_DATE').AsString;
> end;
>
> procedure Tqtest.DetailListBeforePrint(Sender: TQRCustomBand;
> var PrintBand: Boolean);
> begin
> with Form_test.stg_test do
> begin
> QRLbl_PRODUCT_DATE.Caption := cells[0,CurItem];
> QRLbl_PURCH_UNIT.Caption := cells[1,CurItem];
> QRLbl_LOT_SIZE.Caption := cells[2,CurItem];
> QRLbl_OUTER_POJANG_METHOD.Caption := cells[3,CurItem];
> QRLbl_LEAD_TIME.Caption := cells[4,CurItem];
> Inc(CurItem);
> end;
> end;
>
> procedure Tqtest.QuickRep1NeedData(Sender: TObject;
> var MoreData: Boolean);
> begin
> if CurItem < Form_test.stg_test.Rowcount then
> MoreData := CurItem <= Form_test.stg_test.RowCount;
> end;
> end.
>
> 그럼 자세한 답변 부탁드려요.
>
--------------------------------------------------------------------------------
그니간 변수 초기화를 안했더니만 구러더군요.
레포트 출력할때 preview 상태에서 print 누르면 계속 증가된 변수를
사용하여 변수가 초기화가 안되면 계속 증가하기 땜시로 스트링 그리드의
데이타를 가져올수가 엄더군요..
procedure Tqtest.QuickRep1BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
CurItem := 0; <== 해결한 부분(이게 엄떠서 누적된 값을 계속 사용)
end;
procedure Tqtest.DetailListBeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
with Form_test.stg_test do
begin
QRLbl_PRODUCT_DATE.Caption := cells[0,CurItem];
QRLbl_PURCH_UNIT.Caption := cells[1,CurItem];
QRLbl_LOT_SIZE.Caption := cells[2,CurItem];
QRLbl_OUTER_POJANG_METHOD.Caption := cells[3,CurItem];
QRLbl_LEAD_TIME.Caption := cells[4,CurItem];
Inc(CurItem);
end;
end;
저같이 초보자가 실수하기 쉬운 부분인거 가타서 글 올립니다.
만약에 비슷한 증상이 나온다면 참고하세요..