在Delphi彙整資料以QuickReport輸出時,
針對頁次與總頁數可以很簡單的列印上去,
在使用GroupBand時若要依據群組顯示頁次,如
1/1
------
1/2
2/2
------
可使用下面的方式來達到需求!
//**宣告全域變數
private
xPage : Integer;
xIONo : String;
xRecIONo : String;
//**在PageHeader的BeforePrint寫入計算規則
procedure TQR.PageHeaderBandBeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
var xPos,xLen : Integer;
xStr : String;
begin
//**Query_Item 為QR的DataSet
if xIONo <> Query_Item.fieldbyname('IONo').AsString then
begin
//**"單號-總頁數" 兩群組記錄間以","分開
if xIONo <> '' then
xRecIONo := xRecIONo+','+xIONo+'-'+IntToStr(xPage);
xPage := 0;//**頁次歸0
xIONo := Query_Item.fieldbyname('IONo').AsString;
end;
INC(xPage);//**累加頁次
QRL_SubPage.Caption := IntToStr(xPage);//**群組頁次
if AnsiContainsStr(xRecIONo,xIONo) then//**產生preview前不需判斷
begin
//**"單號-總頁數"
xStr := xRecIONo;
xPos := Pos(xIONo,xStr);
xLen := Length(xStr);
//**拆單號-群祖頁數
xStr := Copy(xStr,xPos+1,xLen-xPos);
xPos := Pos(',',xStr);
xStr := Copy(xStr,0,xPos-1);
//**拆頁數
xPos := Pos('-',xStr);
xLen := Length(xStr);
xStr := Copy(xStr,xPos+1,xLen);
QRL_GroupPage.Caption := xStr;//**群組頁數
end;
end;
//**在DataSet的EndOfRecordset寫入資料行結尾處理
procedure TQR.Query_ItemEndOfRecordset(DataSet: TCustomADODataSet;
var MoreData: WordBool; var EventStatus: TEventStatus);
begin
//**
//**"單號-總頁數" 兩群組記錄間以","分開
if xIONo <> '' then
xRecIONo := xRecIONo+','+xIONo+'-'+IntToStr(xPage);
xPage := 0;//**頁次歸0
xIONo := '';
end;