关于fastreport做套打的。。急啊。。。望高手指点(100分)

  • 主题发起人 主题发起人 wgyjacky
  • 开始时间 开始时间
W

wgyjacky

Unregistered / Unconfirmed
GUEST, unregistred user!
我要套打单据,抬头固定。数据记录明细的记录数即RowCount不确定,我用PAGE HEADER做了抬头。明细用master data来做。统计合计数据页脚用master footer,紧跟在明细后面。因为纸张没有明细表格,要用报表来做。如果记录数据不足6条。那么统计合计数据都跑上面去了。
现在我想固定每页都有6条记录,即使记录数据不够,都要固定6行来因定单据格式。如果有超过6条记录的话。那么强行分页。
请高手指点啊。。。。。。
 
不足的插入空白记录。
 
我知道插入空白记录,但怎么插啊?
 
這個問題應該不難,我也在做這個的報表
你先把要顯示的數據查詢出來插入到一個臨時表中
判斷記錄條數,你先設定一個常數為你要顯示的行數
再用MOD方法,當記錄為夠時,插入記錄到臨時表中如裡是字符串就用‘0’表示
如:
Procedure TPrintFrm.GetQuoteInfo;
var
num, i, iCount: Integer;
begin
with qrytempdo
begin
close;
sql.Clear;
sql.Text := ' select * into #tempOA from O_PurOrderApplyDet where sysOANo = '+quotedstr(frm_PurOrderApply.qryhead.fieldByName('OANo').AsString);
ExecSQL;
end;
with qrytempdo
begin
close;
sql.Clear;
sql.Text := 'select * from #tempOA';
Open;
end;
iCount := qrytemp.RecordCount + 1 ;
num := ICount mod rowcount ;
if num <> 1 then
begin
with qryTempdo
begin
Append;
FieldByName('sysOANo').Value := frm_PurOrderApply.qryhead.fieldByName('OANo').AsString;
FieldByName('SerialNo').Value := 0;
FieldByName('ItemNo').Value := '***&yen;H¤U&ordf;&Aring;&yen;&Otilde;***';
FieldByName('Price').Value := 0;
FieldByName('Qty').value := 0;
Post;
end;
for i := 1 to (rowcount - iCount)do
begin
with qryTempdo
begin
Inc(iCount);
Append;
FieldByName('sysOANo').Value := frm_PurOrderApply.qryhead.fieldByName('OANo').AsString;
FieldByName('SerialNo').Value := 0;
FieldByName('Price').Value := 0;
FieldByName('Qty').value := 0;
Post;
end;
end;
end;
end;
 
用 grid++report 非常方便。
 
band有两个属性
autoappengblank设为true
lineperpage设为6
就可以了
 
我的新方法,大家共享一下吧!我出是剛剛學到的
var
PageLine: integer;
//&brvbar;b&sup2;{&brvbar;b&shy;&para;&brvbar;C&brvbar;L¨ì&sup2;&Auml;&acute;X&brvbar;&aelig;
PageMaxRow: integer=11;
//&sup3;]&copy;w¨C&shy;&para;&brvbar;C&frac14;&AElig;
procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin
PageLine := <line> mod PageMaxRow;
if (PageLine = 1) and (<line> > 1) then
begin
Engine.showBand(Footer2);
Engine.newpage;
end;
end;

//Footer1°&ordf;&laquo;×&sup3;]&not;°0
procedure Footer1OnBeforePrint(Sender: TfrxComponent);
var
i: integer;
begin
i := iif(PageLine=0, PageMaxRow, PageLine);
while i < PageMaxRowdo
begin
i := i + 1;
Engine.ShowBand(Child1);
//&brvbar;L&ordf;&Aring;&yen;&Otilde;&ordf;í&reg;&aelig;
end;
end;
 
后退
顶部