特殊格式的报表(100分)

  • 主题发起人 主题发起人 brianyu
  • 开始时间 开始时间
B

brianyu

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾,
小弟有一份报表不知道应该如何去解决:
表A结构
A_NO ----Key
A_Name....
表B结构
B_NO------
B_SEC----- (B_SEC=1,2,3,4,5...).
.
其中表A的A_NO和表B的B_NO是一对外键,也就是说A_NO=B_NO,一个典型的Master/Detail
的结构,请问如何做出如下格式的表格:
________________________________________________________________________
A_NO A_Name B_SEC(1) B_SEC(2) B_SEC(3) B_SEC(4)
也就是说把B表的对应字段按列放入报表中,已知B的对应字段不会超过10个.
谢谢了
 
用report builder的crosstab。
 
可以吗?能够给一个简单的例子吗?
可以在什么地方DOWNLOAD?
谢谢了
 
也可以用sql生成。用adoquery:
select a_no,a_name
sum(case b_sec when 1 then
xx else
0 end) as b_sec(1),
sum(case b_sec when 2 then
xx else
0 end) as b_sec(2),
sum(case b_sec when 3 then
xx else
0 end) as b_sec(3),
sum(case b_sec when 4 then
xx else
0 end) as b_sec(4),
。。。
from a inner join b on a.a_no = b.b_no
group by a_no,a_name
xx是你想统计的数据字段。如果B的对应字段不会超过10个,
且固定,也很可行。
report builder在http://www.net-wing.net/kangwei/有。
自己摸索一下吧,因为实在很难说清楚。看看report builder
自带的例子吧。
 
daiqingbo,你的意思是说数据源用TQUERY?这样我就可以不用report builder而
直接用Delphi5中的QuickReport了?
 
select distinct a_no,a_name,
(select sum(b_sec) from A,B where a_no=b_no and b_sec=1) as b_sec(1),
(select sum(b_sec) from A,B where a_no=b_no and b_sec=2) as b_sec(2),
...
 
to brianyu:是啊。就是用sql吧数据表结构改造成你想要的形式。用什么报表工具都行。
但具体sql可能你要试试,可能要改点小地方。
不过强烈推荐report builder,这次不用,以后也试试,比quick report好用100倍。
现在我的delphi已经删掉quick report了。
 
多人接受答案了。
 
后退
顶部