QR如何判斷跳頁? |
答題得分者是:change.jian
|
eugenech
一般會員 發表:2 回覆:3 積分:1 註冊:2004-05-16 發送簡訊給我 |
小弟有一報表程式不知如何判斷跳頁,請各位大大指點,謝謝
資料如下
員工 日期
AA 01
AA 05
AA 13
BB 02
BB 08
BB 21
BB 28 正確報表如下員工變更或跳頁時才印出員工
第一頁
員工 日期
AA 01
空白 05
空白 13
BB 02
空白 08 第二頁
BB 21
空白 28 但是我得到結果是
第二頁
空白 21
BB 28 我的作法是
procedure TPR999fm.DetailBeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
if QueryTemp.fieldbyname('empno').asstring<>cur_empno then
begin
qr_empno.caption:=QueryTemp.fieldbyname('empno').asstring;
cur_empno:=QueryTemp.fieldbyname('empno').asstring;
end
else
qr_empno.caption:='';
end; procedure TPR999fm.PageHeaderAfterPrint(Sender: TQRCustomBand;
BandPrinted: Boolean);
begin
cur_empno:='';
end; 請問是哪裡錯了?
請各位大大指點,謝謝
|
zong
初階會員 發表:11 回覆:51 積分:42 註冊:2002-08-18 發送簡訊給我 |
|
eugenech
一般會員 發表:2 回覆:3 積分:1 註冊:2004-05-16 發送簡訊給我 |
|
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
procedure TPR999fm.DetailBeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean); begin if (QueryTemp.fieldbyname('empno').asstring <> cur_empno) or (cur_empno ='') then begin qr_empno.caption:=QueryTemp.fieldbyname('empno').asstring; cur_empno:=QueryTemp.fieldbyname('empno').asstring; end else qr_empno.caption:=''; end;發表人 - hahalin 於 2004/05/17 17:55:10 |
eugenech
一般會員 發表:2 回覆:3 積分:1 註冊:2004-05-16 發送簡訊給我 |
引言:結果還是一樣不行 謝謝版主procedure TPR999fm.DetailBeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean); begin if (QueryTemp.fieldbyname('empno').asstring <> cur_empno) or (cur_empno ='') then begin qr_empno.caption:=QueryTemp.fieldbyname('empno').asstring; cur_empno:=QueryTemp.fieldbyname('empno').asstring; end else qr_empno.caption:=''; end;發表人 - hahalin 於 2004/05/17 17:55:10 |
change.jian
版主 發表:29 回覆:620 積分:439 註冊:2003-06-02 發送簡訊給我 |
您好,建議您這樣做:
1.在印員工的TQRDBText.OnPrint事件去檢查Value = Fcur_empno以決定要不要印出來
2.在TQuickRep.StartPage去設定變數,讓TQRDBText.OnPrint程序裡可以檢查現在是否換頁
如下:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, Grids, DBGrids, DB, DBClient; type TForm1 = class(TForm) ClientDataSet1: TClientDataSet; DataSource1: TDataSource; DBGrid1: TDBGrid; BitBtn1: TBitBtn; procedure FormCreate(Sender: TObject); procedure BitBtn1Click(Sender: TObject); private procedure CreateDataSet; public { Public declarations } end; var Form1: TForm1; implementation uses Unit2; {$R *.dfm} { TForm1 } procedure TForm1.CreateDataSet; const Employees:array[0..6] of string = ('AA','AA','AA','BB','BB','BB','BB'); Dates:array[0..6] of string = ('01','05','13','02','08','21','28'); var i:Integer; begin ClientDataSet1.Active:=False; ClientDataSet1.FieldDefs.Add('員工',ftString,4,True); ClientDataSet1.FieldDefs.Add('日期',ftString,2,True); ClientDataSet1.CreateDataSet; for i:=0 to high(Employees) do begin ClientDataSet1.Append; ClientDataSet1.Fields[0].AsString:=Employees[i]; ClientDataSet1.Fields[1].AsString:=Dates[i]; ClientDataSet1.Post; end; end; procedure TForm1.FormCreate(Sender: TObject); begin CreateDataSet; end; procedure TForm1.BitBtn1Click(Sender: TObject); begin QuickReport2:=TQuickReport2.Create(Self); try QuickReport2.ClientDataSet1.Data:=ClientDataSet1.Data; QuickReport2.Preview; finally QuickReport2.Free; end; end; end.Report的code: unit Unit2; interface uses Windows, SysUtils, Messages, Classes, Graphics, Controls, StdCtrls, ExtCtrls, Forms, QuickRpt, QRCtrls, DB, DBClient; type TQuickReport2 = class(TQuickRep) ClientDataSet1: TClientDataSet; ColumnHeaderBand1: TQRBand; DetailBand1: TQRBand; QRLabel1: TQRLabel; QRLabel2: TQRLabel; QRDBText1: TQRDBText; QRDBText2: TQRDBText; QRShape1: TQRShape; procedure DetailBand1AfterPrint(Sender: TQRCustomBand; BandPrinted: Boolean); procedure QRDBText1Print(sender: TObject; var Value: String); procedure QuickRepStartPage(Sender: TCustomQuickRep); private Fcur_empno:String; //儲存目前列印的員工 FStartPage:Boolean; //每次換新頁時設為True public end; var QuickReport2: TQuickReport2; implementation {$R *.DFM} procedure TQuickReport2.DetailBand1AfterPrint(Sender: TQRCustomBand; BandPrinted: Boolean); begin Fcur_empno:=ClientDataSet1.fieldByName('員工').AsString; FStartPage:=False; end; procedure TQuickReport2.QRDBText1Print(sender: TObject; var Value: String); begin if (Value = Fcur_empno) and (FStartPage=False) then Value:=''; end; procedure TQuickReport2.QuickRepStartPage(Sender: TCustomQuickRep); begin FStartPage:=True; end; end. |
eugenech
一般會員 發表:2 回覆:3 積分:1 註冊:2004-05-16 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |