首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

fastreport 横向循环 垂直band不好用,该怎么解决

2012-02-05 
fastreport 横向循环 垂直band不好用典型的中国式报表,如下:-----------------------表头信息(需要绑定数

fastreport 横向循环 垂直band不好用
典型的中国式报表,如下:

-----------------------
表头信息(需要绑定数据库)
-----------------------
测试数据1 a1 a2 a3 ......

测试数据2 b1 b2 b3 ......

测试数据3 c1 c2 c3 ......
-----------------------
表尾信息(需要绑定数据库)
-----------------------
本人尝试过使用垂直band,结果表头表尾绑定数据库的memo均无法正常显示数据,后来又尝试使用subreport,但subreport循环产生新页时有些需要显示的东西不会在新页中显示,如表格线等,另外表尾的一些信息如果使用footer则不会在新页中显示,如果用pagefooter则位置很难调整好,郁闷中......期待高手解答!本人很少发帖,google多次无果,实在没招了!高手推荐个适合中国的报表工具吧,中国式报表整死人啊!



[解决办法]
换个思路呢,结果集这么显示不就成了
[解决办法]
建议你使用Quick Report来做报表

Fast Report太垃圾了
[解决办法]

交叉表

--邹建 2004.06--*/

/*--调用示例

exec p_qry 'syscolumns','id','colid','colid',1,1
--*/

create proc p_qry
@TableName sysname, --表名
@纵轴 sysname, --交叉表最左面的列
@横轴 sysname, --交叉表最上面的列
@表体内容 sysname, --交叉表的数数据字段
@是否加横向合计 bit,--为1时在交叉表横向最右边加横向合计
@是否家纵向合计 bit --为1时在交叉表纵向最下边加纵向合计
as
declare @s nvarchar(4000),@sql varchar(8000)

--判断横向字段是否大于纵向字段数目,如果是,则交换纵横字段
set @s='declare @a sysname
if(select case when count(distinct ['+@纵轴+'])<count(distinct ['+@横轴+']) then 1 else 0 end 
from ['+@TableName+'])=1
select @a=@纵轴,@纵轴=@横轴,@横轴=@a'
exec sp_executesql @s
,N'@纵轴 sysname out,@横轴 sysname out'
,@纵轴 out,@横轴 out

--生成交叉表处理语句
set @s='
set @s=''''
select @s=@s+'',[''+cast(['+@横轴+'] as varchar)+'']=sum(case ['+@横轴
+'] when ''''''+cast(['+@横轴+'] as varchar)+'''''' then ['+@表体内容+'] else 0 end)''
from ['+@TableName+']
group by ['+@横轴+']'
exec sp_executesql @s
,N'@s varchar(8000) out'
,@sql out

--是否生成合计字段的处理
declare @sum1 varchar(200),@sum2 varchar(200),@sum3 varchar(200)
select @sum1=case @是否加横向合计
when 1 then ',[合计]=sum(['+@表体内容+'])'
else '' end
,@sum2=case @是否家纵向合计
when 1 then '['+@纵轴+']=case grouping(['
+@纵轴+']) when 1 then ''合计'' else cast(['
+@纵轴+'] as varchar) end'
else '['+@纵轴+']' end
,@sum3=case @是否家纵向合计
when 1 then ' with rollup'
else '' end

--生成交叉表
exec('select '+@sum2+@sql+@sum1+'
from ['+@TableName+']
group by ['+@纵轴+']'+@sum3)
go

热点排行