在report builder中如何实现分页小计,然后在最后进行总计?(100分)

  • 主题发起人 主题发起人 套牢1
  • 开始时间 开始时间

套牢1

Unregistered / Unconfirmed
GUEST, unregistred user!
在report builder中如何实现分页小计,然后在最后进行总计?
 
有不同的band以支持这项功能。
在设计器中,增加Footer及Summary Band.
Footer对应的是每页小计。
而Sum则是总计。
试试吧。
 
请参考http://www.delphibbs.com/delphibbs/dispq.asp?lid=682619
我在那里有回答。
 
我是这样做的,请参考
1,加入一个DBCalc1变量在Footer,选它要计算的字段
2,增加一个Header的BeforePrint事件如下
Procedure HeaderBeforePrint;
begin
DBCalc1.Value:=0;
//目的是不同的页做一次清零
end;
3,你可以再放一个DBCalc2在Summary Band做总计
 
总计只要在Summary Band上放一ppDbCalc,设一下统计字段就行了.
每页统计表:
在明细区域放一ppDbText4,设好要统计的字段。
方法一:
在Foot Band 放一ppVariable1关键属性设置如下:
Caltype :veTraversal
DataType:dtInteger
ResetType:vePageEnd//每页复位
然后在ppVariable1的onCalc写如下代码:
if ppDbtext4.text<>'' then
value:=value+strtoint(ppDbText4.Text);
另外一种方法,在FootBand放ppLabel1自己写代码:
var
Form1: TForm1;
SubTotal:integer;
implementation
procedure TForm1.ppLabel1GetText(Sender: TObject;
var Text: String);
begin
text:=inttostr(SubTotal);
end;

procedure TForm1.ppFooterBand1AfterPrint(Sender: TObject);
begin
SubTotal:=0;
//每页打印过后复位
end;

procedure TForm1.ppDBText4Print(Sender: TObject);
begin
//应该在onPrint事件中统计,而非onGetText事件,特此更正
if ppDbText4.Text<>'' then
SubTotal:=SubTotal+strtoint(ppDbText4.Text);
end;
 
1、如果在report中没有subreport时,在SUMMERY BAND 可以实现总计,在footer band 中
可以实现页统计,但是最后一页的总计是在小计上面的,这样就不合逻辑了,
怎样让小计在总计上方呢?
2、如果在report中有subreport时,特别是subreport是放在主report的detail band中时,
好象小计就没有用了,不论实在主report的footer band 还是在subreport的footer band
中放dbcalc都没用了,怎么办呢?
 
1,干脆你在Forter中先放两DBCalc1和DBCalc2,用DBCalc1做小计,DBCalc2做合计
每页都显示总计问题应该不大吧?
2, 实在不行就用Variable代替DBCalc,然后编程序实现你的计算得了。
这样我想总是可以的
 
有什么更好的方法吗?
 
1.但是最后一页的总计是在小计上面的,这样怎么就不合逻辑了?
我的几个公司的报表都是这样的,没问题的。
怎样让小计在总计上方呢?这样吧.
同样在FootBand上放一个ppDBCalc设好Field。
在FootBand的BeforePrint里加入如下代码:
ppDBCalc1.visible:=(ppReport1.pageno=ppReport1.pageCount);
2.你自己多想想,多试一下,也不是很清楚你到底想怎么样。总而言之,多动脑筋一定可以
解决问题的.祝好运.
 
To marknew
1、 谢谢回答,另外,我不认为存在的就是合理的;你提供的方法试过再回话;
2、实现的功能就是一个商品列表,但与其并排还要打一个总体描述
*********(标题)
——————————————————————————
(描述) ***** * * * * *(商品)
* * * * *
* * * * *
。。。。
所以才要用到SUBREPORT;
 
多人接受答案了。
 
后退
顶部