begin if LINE#-1 <>0 and LINE#-1 mod 5=0 then begin showBandChild1 showBandband1 end end 代码中用FastReport的内置函数LINE#取得当前行号,假如满足条件,就显示页头和Child3,开始新的一张表单。
3.选中Child3,在它的OnBeforPrint事件中输入如下代码:
begin lin=lineCount //在程序中要对该变量赋值 while lin mod 5<>0 do begin showbandchild2 //打印空行 inclin end showBandchild3 end 这段代码的用途是假如最后数据行不够一张表单显示时,就打印空行。
4. 选中Band3,在它的OnBeforPrint事件中输入如下代码:
begin showbandchild1 //到达报表结束时显示表单底部的内容 end 5.将报表保存后回到Delphi开发环境。 Delphi编程部分
private line1line2integer //保存行号 inputXjintemp //入库小计 ,每5行后清零,下同 outXjoutemp //出库小计 CajiaXjcatempReal //差价小计 下面是几个主要过程的代码清单。 //单张表单数据合并过程 procedure TInputForm.frDBDataSet1NextSender TObject var ReCountinteger begin ReCount = Adoruku.RecordCount Incline1 // 该变量传至报表文件控制打印空行 Incline2 // 该变量控制清零小计值 if not Adoruku.Eof then begin inputXj=inputXj+ADORuku.fieldByName'入库金额' .AsFloat outXj=outXj+Adoruku.fieldByName'出库金额' .AsFloat CajiaXj=CajiaXj+AdorukuJXCJ.AsFloat end //每5行后将小计值清零 if line2 mod 5 = 0 and ReCount>line2 div 5 5 then begin intemp=inputXj outemp=outXj Catemp=CajiaXj inputXj=0 outXj=0 CajiaXj=0
end //到达数据集末尾时给变量赋值 if Adoruku.Eof then begin intemp=inputXj outemp=outXj Catemp=CajiaXj end end 以上程序在windows 2000/XP+Delphi6.0中调试通过。至此,我们已经完成了药品验收单的设计工作,其他的类似报表设计可以参照以上过程。图2是程序运行时生成的报表预览效果。