重金求QuickRep分列小计(200分)

CICN前两个贴子(ID-493103 和 ID--494827)都对,只是496425有点不清,你的数据源应
为两个字段(产品名称, 销售额 )。现你要分栏打印(即如你报表所示,一行两个产品记
录)。为此,你得先将数据源进行加工,变成四个字段(产品名称1,销售额1,产品名2,
销售额2), CICN的第三贴(ID-49625)是为了实现此功能,只是有点小问题。请你先在
DELPHI下建一TABLE,有四个字段(产品名称1,销售额1,产品名2,销售额2);
然后,用如下代码将原数据源的数据黑心入新建表:
Var
i:integer;
====================
if NewTable.active then
NewTable.active:=false;
NewTable.EmptyTble;
NewTable.active:=true;
i:=0;
with OldTable (Or OldQuery)do
begin
if not active then
active:=true
else
first;
while not eofdo
begin
if i=0 then
begin
newtable.append;
newtable.edit;
newtable.fieldbyname('品名称1').value:=fields[0].value;
newable.fieldbyname('销售额1').value:=fields[1].value;
i:=1;
end
else
begin
newtable.fieldbyname('品名称2').value:=fields[0].value;
newable.fieldbyname('销售额2').value:=fields[1].value;
newtable.post;

i:=0;
end;
next;
end;
newtable1.post;
end;

接下来,用此NEWTABLE做为你要做的报表的数据源,再参考
此问题的其它贴子设置列小计、页小计(如CICN的两个贴子
(ID-493103 和 ID--494827))、以及总计。
在最后一页打印总计时,为了使列小计和页小计置于总计之上,
最好用PAGRFOOTER,在其中放一表达式及一LABEL,表达式为
SUM(销售额1)+SUM(销售额2),ENABLED:=FALSE。在QRLABEL的
ON PRINTER中判断是否是最后一页,若是则打印了(=表达式的值)。
 
如果你想在报表中作文章,我想不太可能了,我以前做过账本打印,与你的形式差不多,并且
还多了“承前页”“过次页”,我使用的是临时表,确定每页的行数,靠计算。代码很繁琐
思路很清晰。
同时本人热切关注此问题,发现更好的方法。
 
请问在分页显示中如何定义每页显示的记录数(如每页5条记录)
如何定义才使每页的页头相同
新手,请指点
我的设计和 wjshh 有点像(下面是他的)
产品销售报表
产品名称 销售额 产品名称 销售额
电视机 100 收音机 200
冰箱 400 洗衣机 600
小计 500 800
本页合计 1,300
第1页

产品销售报表
产品名称 销售额 产品名称 销售额
自行车 150 录相机 1500
熨斗 450 VCD机 600
小计 600 2100
本页合计 2,700
总 计 4,000
第2页
其实我连如何分页也不清楚 ^_^[:(][:(][:(][:(][:(]
 
没仔细看大家的回答。
这个问题应该可以在NeedData事件中处理,提供数据时进行计算即可。
 
这问题结束了没有,还有好的方法吗?
 
1.放footer band.
2.在footer band上放Tqrlabel.
3.在detail band 的打印事件中,用变量累加.
4.Tqrlabel的打印事件中,将变量赋给Tqrlabel,将变量设为0。
 
分开的方法
select a.产品名称,a.销售额,b。产品名称,b。销售额
from tablename a
join tablename b
on a.产品名称>b.产品名称
 
可以自定义打印和预览,我的主页上有相关的源码,可以在每页小计和合计,并且如果最后一页打印不满,可以打印空行到最后并把合计放到最后.
http://www.aidelphi.com
 
能说出具体是哪个吗?
 
你的这个要求难点主要不在统计,而是在于一行中要显示两条记录,这样的话你就要自己控制了,至于说统计,你用几个变量,什么样的统计做不了?放一个pagefooter,在PageFooter上放QRLabel,在打印前将变量的值显示出来不就可以了?
留E-Mail,可以提供例子。
 
lichaogang:
你好!
我的EMAIL是:delphi1@0451.com
 
荷荷~我也給你個例子吧,希望能對你有所幫助.
 
我告诉你一个简单的方法: 把报表作为一个单独的from, 在报表中加入相应的控件,如QRlable,QRedit等用于显示相应的行可列!
  然后在from上加上一个临时的数据集(类似cds),用select 列出所要的数据。
  最后把报表上的控件的数据源设成CDS中的某一个字段就可以了!
不过在最开始做这样的东东是有点麻烦要思心一点!
 
给你发个例子吧
 
我发个例子给你吧,要的话给个email
 
我也需要分组报表的例子啊,各位能不能给我一份?谢谢
zychen2000@263.net
 
我的这难点主要是在于一行中要显示两条记录 ,请求你也给我发一封邮件吧,谢谢你了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
752
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
873
DelphiTeacher的专栏
D
S
回复
0
查看
956
SUNSTONE的Delphi笔记
S
顶部