zoukankan      html  css  js  c++  java
  • 灵活数据源的固定行列交叉报表的制作

            论坛里,http://bbs.csdn.net/topics/390883416中提的问题,其目的是为了实现一个固定行列的交叉表,用SQL准备好固定行数的数据源非常麻烦。而润乾集算报表则有非常灵活的计算能力,能够充分利用问题特点应付各种非常规的计算需求。

    这里就以链接中业务为背景,给出集算报表实现某种固定列交叉报表的方案。

    报表背景

            源数据例如以下:


            现须要在报表中显演示样例如以下内容:

            这里要求依照分类统计总记录数。并将每月的记录数分别填充到1-12月中。当中无数据的记录显示为0。

     

             这个报表的难点数据库中的数据并不完整,按分类和月份分组后可能缺少一些组。

    用SQL补齐分组比較麻烦。而一般报表工具不具备数据源计算能力。须要在报表中完毕计算。比如用润乾报表会这样实现:

            使用润乾报表完毕这个报表时,须要採用多数据源的方案,在单元格中自行编写条件表达式完毕过滤和统计运算,而不能使用报表工具交叉表模型自己主动限定数据集。

    尽管难度不算非常大。但实际运算中数据源(集)要被多次遍历,报表效率较低。

            集算报表内置了适合结构化计算的脚本。能够事先将数据准备好(相当于一种更使用更简单的自己定义数据集)。报表工具仅仅要简单地使用交叉表模型绘制就可以。上述报表需求使用集算报表能够这样完毕:

    编写集算脚本

            首先使用集算脚本编辑器。新建集算脚本,设置脚本參数:年份。

            编写脚本完毕数据补齐操作,为报表输出计算后结果集。

            A1:连接数据源。

            A2:运行取数sql,依据年份參数取得明细数据。

            A3:将分类、月份序列进行叉乘,并设置数据量为0,得到带有分类、月份和数量的结果集。

            A4-B5:循环源数据,依据分类和月份相应A3集合的相应字段。匹配则改动A3.数量=A3.数量+1。得到的A3集合例如以下:

            这里利用了固定行列的特点,直接计算出目标数据的位置,从而避免了遍历式的推断查找。而报表工具无法利用这样的直接定位的办法找到目标记录,仅仅能採用慢速的条件遍历。

            A7:为报表返回结果集。

    编辑报表模板

             使用集算报表编辑器。编辑报表模板。用于数据展现。连接报表默认数据源demo。

            新建參数,并设置默认值。

            新建报表并设置集算器数据集,调用上述编辑好的脚本文件。

            当中,dfx文件路径既能够是绝对路径。也能够是相对路径,相对路径是相对选项中配置的dfx主文件夹的;參数y_date为报表模板參数,year为脚本參数。其实二者能够同名。

            

            编辑报表表达式,这时仅仅要採用普通的单数据源交叉报表方法就可以:

            报表展现结果例如以下:

            假设脚本已经调试好。且不须要复用的时候,还能够直接使用集算报表的脚本数据集,当中能够直接使用报表定义好的数据源和參数,过程更为简单:

            1.在数据集设置窗体中点击“添加”button,弹出数据集类型对话框。选择“脚本数据集”;

            2.在弹出的脚本数据集编辑窗体中编写脚本。

            在脚本数据集中直接使用了报表中定义好的数据源demo和參数y_date。比起单独的集算脚本更加简单、直接。

            3. 报表模板和表达式与使用集算器数据集方式一致,不再赘述。


  • 相关阅读:
    大显示器有用了,看报纸很爽
    密码概率(转)
    什么是社会工程攻击(转)
    C# 在购物车系统中生成不重复的订单号[转]
    jQuery选择器总结[转]
    多种下拉框功能插件
    异步提交
    MVC3开发常常遇到的问题及常常使用到的代码片段
    MVC3怎样设置ntext字段?
    jQuery子页面刷新父页面局部刷新+整体刷新 [转]
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5202782.html
Copyright © 2011-2022 走看看