关于报表!请进,等待中!(100分)

  • 主题发起人 主题发起人 ilikemeng
  • 开始时间 开始时间
我有个解决办法,首先
用SQL语句生成一个View
create view v1 as
SELECT id,name,a=
CASE WHEN type=11 then
a1
END
,b=
CASE WHEN type=11 then
a2
END
,c=
CASE WHEN type=12 then
a1
END
,D=
CASE WHEN type=12 then
a2
END
FROM
t1
group by id,name,type,A1,A2
再用
SELECT id ,name,sum(a),sum(b),sum(c),sum(d) FROM V1 group by id,name
得出数据,随便你怎么组合了。
数据结果是这样的
表机构
ID Name A1 A2 Type
---------- ---------- -------------------- -------------------- ----------
01 A 10 20 11
02 B 20 15 11
03 C 30 10 11
01 A 200 100 12
02 B 300 100 12
(所影响的行数为 5 行)

结果:
id name a b c d
01 A 10 20 200 100
02 B 20 15 300 100
03 C 30 10 NULL NULL
(所影响的行数为 3 行)
是你要的那样的结果吗?
 
1、用SetLength()函数设置数组长度;
2、根据税种动态设置数组的列数;
3、根据用户代码动态设置数组的行数;
4、用Filted过滤税种,用Locat定位用户代码,将数据添加到动态数组中。
5、用FastReport打印数组;
 
to sword_liu
谢谢!
我的税种纪录是用户自己维护的,假如他现在增加纪录税种13,那我做好的程序不是就不适用了吗?我应该怎么写呢!
 
to 兰车
晴详细点,或者给个例子,本人很菜!谢谢!
 
用FastReport的交叉表实现:
先建立表1的视图(select distinct 代码 from 表1)
建立两个数据源:DataSet1 连接视图
DataSet2 连接表1
把DataSet1作为DataSet2的主表,连接关系为“代码”数据项
在FastReport中设置 Master Data,DataSource为DataSet1
Cross Data, DataSource为DataSet2
把"税1"和"税2"作为Master Data和Cross Data的交叉部分
这样就应该可以解决你所提出的问题
 
接受答案了.
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部