在快速报表中可以实现报表分组,如每一格部门做一个组,统计数据。如何用EhLib制作分组报表,请指教
解决方案 »
- 只运行一个程序,多用户登录仍然有效,如何实现?
- 如何实现象delphi 代码编辑器里message view 、code explorer 样式的 带关闭按钮 可停靠的面板?
- 关于超时的问题(在线急等)
- 怪了!同时安装c++builder6与delphi6老是出现问题?(心烦,散分!)
- 怎样添加directshow的支持,它是控件吗?有人知道wmp的控件的用法吗?
- delphi中操作多条记录 ...
- dbgrid的oncellclick event
- 请问DELPHI7中用什么控件打开mp4视频文件,请给个简单的例子,谢谢。在线等……
- 如何解决InstallShield不能支持中文
- !!dbgrid,如何使单击某记录时使dbgrid整条记录颜色不同?
- 如何在DELPHI中显示DWG(autoCAD图片)格式图片
- 急求,DELPHI下公式输入问题,在线等!!
@纵轴 sysname, --交叉表最左面的列
@纵轴名称 sysname,--交叉表中显示的中文名称
@横轴 sysname, --交叉表最上面的列
@表体内容 sysname, --交叉表的数数据字段
@是否加横向合计 bit,--为1时在交叉表横向最右边加横向合计
@是否家纵向合计 bit, --为1时在交叉表纵向最下边加纵向合计
@Where条件 varchar(255) as
declare @s nvarchar(4000),@sql varchar(8000)
--判断横向字段是否大于纵向字段数目,如果是,则交换纵横字段--生成交叉表处理语句
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+'] '+
@Where条件+
' group by ['+@纵轴+']'+@sum3)
go
这是我原先找的一个SQLSERVER存储过程,流程是将表名和横轴及纵轴等做为参数传入存储过程,由存储过程将数据计算为分组数据后通过select返回分组数据,在DBGrid的数据集中调用此存储过程就可以得出分组的数据,从而直接显示在DBGrid中