所谓报表工具,最核心最本质的功能,就是它的制表能力,即是否能够不写代码而制作出自己需要的各种报表。但用户在考察报表工具时往往很注重打印输出、绘制方案、管理调度等外围因素,而忽视了报表工具最本质的制表能力。当然不可否认这些外围的功能对一个报表工具来说也是很重要的衡量标准,但是报表工具的主要用途是制作报表。目前市场上的主流产品能够处理处理复杂报表的只有FineReport和润乾报表。通过对这两个产品的研究,我们认为,报表工具对复杂报表的处理能力应该体现在如下几个方面:首先是多源分片。
传统的报表工具只支持单源报表,即使是数据来自于多个物理数据表或者物理数据库,也需要在报表设计前将多源通过写SQL,存储过程等转化成单源处理。
多源往往带来分片,正是由于分片,使得报表设计必须直接基于多源进行,而不能先将多源转成单源进行。有相当一部分分片报表无论如何也不可能换成单源处理,部分能转成单源的报表处理也非常繁琐。
其次,是不规则划分机制。
传统的分组是完全规则划分的,即划分标准一致且有规则(一般都按某个字段或表达式),所有字段都必须出现且只出现一次,分组值次序与原数据记录次序一致。
但是与完全划分相对应的,在报表汇总中却常常需要不规则划分,即划分标准看不出规律(常常只能穷举),所有事实不一定全部出现在分组结果中、个别事实还可能重复出现,次序也与原数据记录无关。然后,还有动态格间运算的能力。
所有的报表工具都会提供一些计算列的功能,在原始数据基础上再计算出一些别的列值或统计值,这是报表展现中是不可缺少的功能。
一般的报表工具一般只提供同行内的格间运算和针对某组(或全体)的集合运算,对于常见的比如累计,取第一名等跨行组运算则相当困难。
除了有规律的跨行组运算外,报表中还可能会有一些随意的独立格运算,其值可能是报表中的任意几个其它格运算出来,甚至还可能会引用到报表外的数据(比如和数据库中的数据再次运算等)。所以运算后报表数据项命名机制就很重要,传统工具只能用列名命名设计阶段的数据单元,随意的独立格运算会就使传统工具无法处理,而报表外的数据引用更是只能借助脚本或外围应用程序,导致代码极为混乱。另外,所有以上的讨论中还贯穿了一点,即行列对称。
纵方向上拥有的自动复制扩展的能力需要完全实现在横方向上。报表可以横向分组、横向分片,对于横向变列的报表可以定义跨列组运算等。上面提到目前市场上的主流产品能够处理复杂报表的只有FineReport和润乾。其它的产品都没有这种无编码处理复杂报表的能力。

解决方案 »

  1.   

    制表能力是报表工具最主要的评价标准。中式复杂报表往往还是国产报表工具比较在行,像水晶等在这方面明显有水土不服的迹象。现在市面上能够解决中式复杂报表的基本就只有Finereport和润乾两家,号称“南帆软,北润乾”。润乾已经开始不怎么报表工具领域深耕,开始做平台,直接做最终用户,和他们集成商客户抢最终用户;FineReport应该继续创新,凭借卓越技术领导中国报表市场发展。
      

  2.   

    谢谢楼主分享~~我们公司使用的Finereport,感觉功能和性能都不错,尤其在做复杂报表的时候,和之前用过的水晶报表相比,更加得心应手,不愧是国产报表工具的领跑者