报表里怎么做本页合计和本期合计?//高分急送!(400分)(200分)

  • 主题发起人 主题发起人 onedot
  • 开始时间 开始时间
O

onedot

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在比较FastReport和ReportBuilder
各有千秋,似乎都不错。但似乎都找不到合适的方法快速做本期合计和本页合计
因时间原因,还有其他事情,因此不再自己琢磨,请教各位了!!
不知道哪位作过?
另外200分以后另外开个题目送出//DFW现在居然有分数限制,分特;饿
 
说明一下:本页合计是针对当前页的合计,本期合计是指这次报表的合计
eg:
Paper1
......
本页合计 10 10 10
本期合计 100 200 200
Paper2
......
本页合计 20 40 20
本期合计 100 200 200
 
FastReport能满足你的要求,看看DEMO,里面有这样的例子.
 
FR中:一定要把本页合计和本期合计都显示在每一页的话,使用页脚Band
 
放在页脚我知道,那么本页合计和本期合计又怎么写呢?
实在是没时间钻研了,希望知道的大侠可以说得稍微清楚点,分数一定送上!!
 
我也遇到类似的问题,可是总是解决不了...
一个表格里面有N行及N列,数据库共有10个左右,需要打印表格中的单元格提取的值是来自这
10个表中,有的是来自10个表中运算才能得到,到底要怎么样才能解决?

 
中国的报表制度太复杂,过于手工化,使用老外的控件总是难以完成复杂的报表。
老外在报表上花的功夫相比要少的多了。我就是一个最讨厌做报表的人。
FastReport在自定义报表方面做的比QuickReport完善些,如果只是对付您上面的表
两者皆可。FastReport有些象PowerBuilder的数据窗口,对熟悉PB的使用起来方便些。
我只用QuickReport,毕竟不用在安装三方控件了,QuickReport的最新版在使用自定义
纸张上有了改进。页合计可以使用变量在打印每个Detail时累加,换页时显示到页脚上
 
TQRExpr放在groupband不是能分组统计吗?
要是一页一组的话(想一想肯定有办法),设置TQRExpr.ResetAfterprint=true
就可以实现本页合计了
 
本人讨论的是FASTREPORT,至于QREPORT大家都知道做报表好烦的!
由于没有什么人可以告诉我,我只好自己熬夜钻研了一下。现在我的报表要求基本都做好了
我报表要求每页固定行数,最后一页不足要自动填空白行,每页在数据后就是本页合计和本期合计
其实很多人以前说的方法有弊端或者不全,希望我说的方法可以帮助一些朋友!
在FastReport里定义一个变量i
在ReportBand的(OnBeforePrint)里初始i
在主数据band的(OnBeforePrint)里i:=i+1;
然后添加分组头,分组条件为[INT([/20])] ----不要用[LINETHROUGH#]代替i,也许是bug
然后添加分组尾,里面放本页合计和本期合计的东西
其中本页合计很简单,就是[SUM([ADOQuery1."Quantity"])]
本期合计我也没找到合适快速方法,只好用另外一个数据集做ADOQuery1所有数据的sum---[ADOQuery2."Sumquantity"]
并且在(OnBeforePrint)里
i:=[i MOD 20];
While (i<20) and (i>0)do
begin
ShowBand(Child1);
------------Child1是一个子Band,里面放自动填充行或格子
i:=i+1;
End
最后我的结果是
1 10 20 20
.......
20 10 10 10
本页合计 50
本期合计 350
xxxxx xxxxxxxx
21 10 20 20
......
38 20 10 0
39
40
本页合计 50
本期合计 350
 
在页脚中放一个QRExpr3并用它对想求合的字段求合,
Expression:='sum(qty)';
如只这样作得出的结果是前几页的合,不是想要的结果,
只要在QuickRep的EndPage事件中加入QRExpr.Reset;
procedure TForm1.QuickRep1EndPage(Sender: TCustomQuickRep);
begin
QRExpr2.Reset;
end;
或者,
设Resetafterprint 为true
则每一页的合计为本页合计
为false
则每一页的合计为第一页到本页的合计

 
不要说QREPORT了
 
為什麼要這麼複雜呢
把本頁合計放在groupfooder中,設ForceNewPage=True
本期合計放在pagefooder中,顯示一個計算值就好了
 
1.页合计,好办,放个栏目脚band,上面放几个memo就可以了
2.本期合计,麻烦点,得用script,放个页脚Band,保镖设置中选“两遍报表”
在page1的OnBeforePrint:
if not FinalPass then
hj1 := 0;
在MasterData1的OnBeforePrint:
if not FinalPass then
hj1 := hj1 + [Table1."Jbgz"];
这样hj1就是本期合计数。
 
多人接受答案了。
 
onedot,这里怎么自定义那个变量i
 
后退
顶部