在一个主form1中,我用query1查出了一些数据。我现在需要做一个报表,数据来源于form1.query1,假设form1.query1中包括这些数据项:地区名,业务员姓名,业务员编号,合同号,销售重量。form1.query1中所查到的数据如下:
地区名 业务员姓名 合同号 销售重量
湖北 aaa 1 100
湖北 aaa 2 200
湖南 aaa 3 300
湖南 bbb 4 400现在我需要作成如下的报表:地区名 业务员姓名 合同号,销售重量
湖北
aaa 1 100
aaa 2 200
小计 300
湖南 aaa 3 300
bbb 4 400
小计 700
总计 1000请问这种报表用quickrep怎么做
谢谢了
地区名 业务员姓名 合同号 销售重量
湖北 aaa 1 100
湖北 aaa 2 200
湖南 aaa 3 300
湖南 bbb 4 400现在我需要作成如下的报表:地区名 业务员姓名 合同号,销售重量
湖北
aaa 1 100
aaa 2 200
小计 300
湖南 aaa 3 300
bbb 4 400
小计 700
总计 1000请问这种报表用quickrep怎么做
谢谢了
你可以参照下DELPHI自带的DEMO,有很好的例子
定义全局变量:
CustName:String;
IntNewPage:Integer;“湖北”用一TQRDBText控件,print事件如下:
if Value=CustName then
begin
Value:='';
if IntNewPage=0 then Value:=CustName;
end else
CustName:=Value;不过还要作一件事,在QuickRep的StartPage事件中加入:
IntNewPage:=0;
这样有点误导人家了用QRGROUP(高度设为0)分组(这会吧)在Expression 属性设为“地区名 ”
这句话是对的后面的几句是用来做什么的?
IntNewPage一直没有赋过值,当然就是0了 Value:='';
if IntNewPage=0 then Value:=CustName;
end else
CustName:=Value;
最后结果是什么都没打印出来我认为完全不用写代码
除了上述的属性外
通过设置GROUP的GROUPFOOTER的属性,
增加两个QREXPRESSION控件
和一个SUMMARY的BAND就可以做到了还是建议楼主看看QR的DEMO
在报表中有如下控件:
datesource1:dataset为form1.query1
query2:datesource为datesource1
这样主从表连好了。query2:sql语句为
select table1.ssdq,table1.htbh,table1.ywybh,table2.ywymc,table1.xszl
from table1,talbe2
where ssdq=:ssdq and htbh=:htbh and table1.ywybh=table2.ywybh
quickrep1:dataset属性为form1.query1
QrGroup:expression属性设为form1.query1.ssdq,master属性设为qrsubdetail1,高度设为0
qrsubdetail1:dataset属性为query2,footerband属性为qrband1,master属性为quickrep1
另外加了几个qrdbtex,分别为ssdq,ywymc,xszl,htbh,都连着query2
qrband1:groupfooter型,linkband属性为qrsubdetail1,另外加了一个qrexpr,
其expression属性为:sum(query2.xszl),master属性为qrsubdetail1我不知道自己哪个属性设错了,我想有可能是query2的sql语句写错了。所以报表不符合要求。
按照以上方法打印的报表如下:所属地区 业务员姓名 合同号 销售重量
湖北 aaa 1 100
湖北 aaa 2 200
小计 300
湖南 aaa 3 300
湖南 bbb 4 400
小计 700
湖北 aaa 1 100
湖北 aaa 2 200
小计 300
湖南 aaa 3 300
湖南 bbb 4 400
小计 700从以上报表来看它把我的每个数据打印了两遍,请问这是为什么。
谢谢
query2的sql语句中where语句为 ssdq=:ssdq and table1.ywybh=table2.ywybh
你的查询必须按GROUP的EXPRESSTION来排序
可是还是不行
打印的报表如下
所属地区 业务员姓名 合同号 销售重量
湖北 aaa 1 100
湖北 aaa 2 200
小计 300
小计 700
湖北 aaa 1 100
湖北 aaa 2 200
小计 300
湖南 aaa 3 300
湖南 bbb 4 400
小计 700
湖南 aaa 3 300
湖南 bbb 4 400
小计 700
原来你是这样写的啊
完全可不用QUERY2了
也不需要用SUBDETAIL
除GROUP和GROUPFOOTER外
你只要增加一个BAND,设为DETAIL
当然内容放
业务员姓名 合同号 销售重量
aaa 1 100
然后加一个SUMMARY的BAND就OK了
所属地区 业务员姓名 合同号 销售重量
湖北 aaa 1 100
aaa 2 200
aaa 3 300
bbb 4 400
小计 1000
不太清楚你的具体情况
但请先确定下面几个问题
1、确定你的QR的DATASET指向QUERY1?
2、确定你显示
aaa 2 200
这些的QRDBTEXT的DATASET指向QUERY1?
3、确定你的QUERY1查询回来的结果是
地区名 业务员姓名 合同号 销售重量
湖北 aaa 1 100
湖北 aaa 2 200
湖南 aaa 3 300
湖南 bbb 4 400