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

W

wjshh

Unregistered / Unconfirmed
GUEST, unregistred user!
我在QuickRep中进行了分列打印,
要求在本页中对每一列进行小计和本页合计。
望各位高手能给予回答,谢谢。
 
在GroupFooter上放一个TQRExpr在Expression中写上你要统计的表达式
注意:QRExpr1.ResetAfterPrint := True;
 
To Cicn:
好像我用 GroupFooter 没有任何效果,改用 PageFooter 后就好了!
不过还是非常感谢! 因为我也不知道 如何 按页 小计 ,现在知道了 ^_^
 
我所要设计的表格是这样的:
产品销售报表
产品名称 销售额 产品名称 销售额
电视机 100 收音机 200
冰箱 400 洗衣机 600
小计 500 800
本页合计 1,300
第1页

产品销售报表
产品名称 销售额 产品名称 销售额
自行车 150 录相机 1500
熨斗 450 VCD机 600
小计 600 2100
本页合计 2,700
总 计 4,000
第2页

你能帮我吗?
 
你已经知道怎样按页小计了.
1.对于本页合计假设本页有两列:字段名分别为 Field1, Field2
本页合计的表达式为:SUM(Field1) + SUM(Field2) 控件放在PageFooter格
注意QRExpres控件的ResetAfterPrint 属性设为True!
2.在计算总计时表达式为:SUM(Field1) + SUM(Field2)
QRExpres控件的ResetAfterPrint 属性设为False!
 
CICN:
我所要的是对每一列进行曲小计,不是每一页。
就像我的上一个贴那样,望你能对此进行解答,谢谢!
 
你每一列的字段名是不是分开的?(没分开的话先想办法分开)
如果已经分开成Field1和Field2那就容易了.
每页的小计就可以这样计算: SUM(Field1) SUM(Field2)
(ResetAfterPrint 属性设为True)
 

1。你明白我的意思吗?
2、如何将字段分开?
 
比如原来字段名为: Field
现要把此字段内容分两列显示,要达到这个目的一个办法是在检索数据时直接把Field字段
假设现的内容分成两个字段Field1和Field2.数据库里有100条记录,分开两字段后的记录
数应为50条!现在关键是怎样分开使一个字段的内容变成两个字段的内容呢?
如果你用过PB的话你就知道PB的DataWindow可以做得很好它可以把同一个字段分成任意个
列来显示!其原理也是能过写特定的SQL语句来实现的.
简单的方法可以建立临时表:(其他的步骤你自己想想应该知道怎么实现了)
declare @Field1 char(20),@Field2 char(20)
create table #tmp(Field1 char(20),Field2 char(20))
DECLARE tmpcur CURSOR FOR
select Field from table1
open tmpcur
FETCH NEXT FROM tmpcur INTO @Field1
if @@FETCH_STATUS = 0
FETCH NEXT FROM tmpcur INTO @Field2
else
select @Field2 = null
insert #tmp(field1,field2) select @field1,@field2
WHILE @@FETCH_STATUS = 0
begin
FETCH NEXT FROM tmpcur INTO @Field1
if @@FETCH_STATUS = 0
FETCH NEXT FROM tmpcur INTO @Field2
else
select @Field2 = null
insert #tmp(field1,field2) select @field1,@field2 --插入数据
end
CLOSE tmpcur
DEALLOCATE tmpcur
select * from #tmp --导出数据
drop table #tmp

 
我看不懂你写的内容。
可否写成DELPHI形式,谢谢。
最好能加上注释。
 
cicn:
请你回。急。。。
如果分少可加倍。
谢谢!
 
大家快来回答。
 
这个问题很难?
还是大家不原回答?
 
每列的小计、每页的合计使用TQRExpr控件,在Expression属性里如下设置
每列小计 sum(QRDBText1.text) 即可其中的QRDBText1是假设的显示销售额的控件
每页的合计 sum(QRDBText1.text+QRDBText2.text) 这个放在pagefoot中,QRDBText1和
QRDBText2是两列显示销售额的控件。
总的合计比较麻烦。总计另外使用一个query其中的sql语句如下
select sum(销售额) as zj from 表
这样只需要使用一个QRDBText放在页尾就可以了
 

产品名称 销售额 产品名称 销售额
自行车 150 -------- 录相机 1500-------
熨斗 450 | VCD机 600 |

小计 600 | 2100 |

本页合计 2,700 | |
总 计 4,000 | |

| |
变量1 变量2
DetailBand1BeforePrint:

procedure TForm1.DetailBand1BeforePrint(Sender: TQRCustomBand;

var PrintBand: Boolean);

var 变量1,变量2:integer;

begin

变量1:=变量1+Field1
变量2:=变量2+Field2
小计在 页脚中
打印页脚后 变量清空
对了你是怎样作到分列打印的
 
同意guying的意见。
 
wjshh 的表中应该只有 商品名称、 销售额 两个字段,分列打印可利用 QRLabel 和
OnNeedData 事件实现。小计和本页合计在 PageFooterBand 中打印,总计在 SummaryBand
中打印。这几个统计出的数量都要自己用累加变量逐个记录地进行累加。然后在 Qrlabel
的 OnPrint 事件中,将变量的值赋给 qrlabel 打印出来。
 
各位大侠真麻烦
用qrlabel.onprint就行了,设置一个变量,在打印新的一页时清零
每打印一行加一下,然后用value再显示出来
 

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
顶部