灵活数据源的固定行列交叉报表的制作
2015-03-20 10:51
387 查看
论坛里,http://bbs.csdn.net/topics/390883416中提的问题,其目的是为了实现一个固定行列的交叉表,用SQL准备好固定行数的数据源很麻烦。而润乾集算报表则有很灵活的计算能力,可以充分利用问题特点应付各种非常规的计算需求。这里就以链接中业务为背景,给出集算报表实现某种固定列交叉报表的方案。
现需要在报表中显示如下内容:
这里要求按照分类统计总记录数,并将每月的记录数分别填充到1-12月中,其中无数据的记录显示为0。
这个报表的难点数据库中的数据并不完整,按分类和月份分组后可能缺少一些组。用SQL补齐分组比较麻烦,而一般报表工具不具备数据源计算能力,需要在报表中完成计算。例如用润乾报表会这样实现:
使用润乾报表完成这个报表时,需要采用多数据源的方案,在单元格中自行编写条件表达式完成过滤和统计运算,而不能使用报表工具交叉表模型自动限定数据集。虽然难度不算很大,但实际运算中数据源(集)要被多次遍历,报表效率较低。
集算报表内置了适合结构化计算的脚本,可以事先将数据准备好(相当于一种更使用更简单的自定义数据集),报表工具只要简单地使用交叉表模型绘制即可。上述报表需求使用集算报表可以这样完成:
编写脚本完成数据补齐操作,为报表输出计算后结果集。
A1:连接数据源。
A2:执行取数sql,根据年份参数取得明细数据。
A3:将分类、月份序列进行叉乘,并设置数据量为0,得到带有分类、月份和数量的结果集。
A4-B5:循环源数据,根据分类和月份对应A3集合的相应字段,匹配则修改A3.数量=A3.数量+1,得到的A3集合如下:
这里利用了固定行列的特点,直接计算出目标数据的位置,从而避免了遍历式的判断查找。而报表工具无法利用这种直接定位的办法找到目标记录,只能采用慢速的条件遍历。
A7:为报表返回结果集。
新建参数,并设置默认值。
新建报表并设置集算器数据集,调用上述编辑好的脚本文件。
其中,dfx文件路径既可以是绝对路径,也可以是相对路径,相对路径是相对选项中配置的dfx主目录的;参数y_date为报表模板参数,year为脚本参数,事实上二者可以同名。
编辑报表表达式,这时只要采用普通的单数据源交叉报表方法即可:
报表展现结果如下:
如果脚本已经调试好,且不需要复用的时候,还可以直接使用集算报表的脚本数据集,其中可以直接使用报表定义好的数据源和参数,过程更为简单:
1.在数据集设置窗口中点击“增加”按钮,弹出数据集类型对话框,选择“脚本数据集”;
2.在弹出的脚本数据集编辑窗口中编写脚本;
在脚本数据集中直接使用了报表中定义好的数据源demo和参数y_date,比起单独的集算脚本更加简单、直接。
3. 报表模板和表达式与使用集算器数据集方式一致,不再赘述。
报表背景
源数据如下:现需要在报表中显示如下内容:
这里要求按照分类统计总记录数,并将每月的记录数分别填充到1-12月中,其中无数据的记录显示为0。
这个报表的难点数据库中的数据并不完整,按分类和月份分组后可能缺少一些组。用SQL补齐分组比较麻烦,而一般报表工具不具备数据源计算能力,需要在报表中完成计算。例如用润乾报表会这样实现:
使用润乾报表完成这个报表时,需要采用多数据源的方案,在单元格中自行编写条件表达式完成过滤和统计运算,而不能使用报表工具交叉表模型自动限定数据集。虽然难度不算很大,但实际运算中数据源(集)要被多次遍历,报表效率较低。
集算报表内置了适合结构化计算的脚本,可以事先将数据准备好(相当于一种更使用更简单的自定义数据集),报表工具只要简单地使用交叉表模型绘制即可。上述报表需求使用集算报表可以这样完成:
编写集算脚本
首先使用集算脚本编辑器,新建集算脚本,设置脚本参数:年份。编写脚本完成数据补齐操作,为报表输出计算后结果集。
A1:连接数据源。
A2:执行取数sql,根据年份参数取得明细数据。
A3:将分类、月份序列进行叉乘,并设置数据量为0,得到带有分类、月份和数量的结果集。
A4-B5:循环源数据,根据分类和月份对应A3集合的相应字段,匹配则修改A3.数量=A3.数量+1,得到的A3集合如下:
这里利用了固定行列的特点,直接计算出目标数据的位置,从而避免了遍历式的判断查找。而报表工具无法利用这种直接定位的办法找到目标记录,只能采用慢速的条件遍历。
A7:为报表返回结果集。
编辑报表模板
使用集算报表编辑器,编辑报表模板,用于数据展现。连接报表默认数据源demo。新建参数,并设置默认值。
新建报表并设置集算器数据集,调用上述编辑好的脚本文件。
其中,dfx文件路径既可以是绝对路径,也可以是相对路径,相对路径是相对选项中配置的dfx主目录的;参数y_date为报表模板参数,year为脚本参数,事实上二者可以同名。
编辑报表表达式,这时只要采用普通的单数据源交叉报表方法即可:
报表展现结果如下:
如果脚本已经调试好,且不需要复用的时候,还可以直接使用集算报表的脚本数据集,其中可以直接使用报表定义好的数据源和参数,过程更为简单:
1.在数据集设置窗口中点击“增加”按钮,弹出数据集类型对话框,选择“脚本数据集”;
2.在弹出的脚本数据集编辑窗口中编写脚本;
在脚本数据集中直接使用了报表中定义好的数据源demo和参数y_date,比起单独的集算脚本更加简单、直接。
3. 报表模板和表达式与使用集算器数据集方式一致,不再赘述。
相关文章推荐
- 灵活数据源的固定行列交叉报表的制作
- Sql server 行列互换制作交叉表格报表
- 集算报表动态交叉表头报表制作
- DataTable 行列转换 将原来的行表转化成交叉表,无对应值赋默认值,用于统计显示或报表
- 用Birt 制作交叉报表
- sql 行列转化/交叉报表的实现
- MS-SQLServer 2000 T-SQL 交叉报表(行列互换) 交叉查询 旋转查询
- DataTable 行列转换 将原来的行表转化成交叉表,无对应值赋默认值,用于统计显示或报表
- 报一个比较难以描述的问题【关键字 报表 数据库行列转换 多表交叉查询】
- 用iReport制作一个简单的交叉报表
- VB.NET机房收费系统之报表制作(绑定数据源)(一)
- 主流报表制作工具之王者争夺战:功能大PK系列之图表数据源
- 多数据源动态关联报表的制作(birt为例)
- VB.NET机房收费系统之报表制作(绑定数据源)(二)
- SQL 二维交叉报表 分类统计(行列转换)
- 华丹平台应用三---排序交叉报表的制作
- 用Birt(商业智能报表)制作交叉报表(显示学生成绩)
- java报表工具技巧--如何在Style Report的web设计器中制作交叉表
- ireport_几种不同的数据源_实现报表制作
- 取特定行列,进行行转列操作,制作报表