报表和数据的关系
选择报表工具时,有一大误区,就是不重视报表与数据之间的关系.
出现这种情况也很正常,我们最早接触的报表,可能就是MS Access里面带的报表工具,以及VB里面捆绑的Crystal Report. 这些工具最典型的方法,就是,选择数据库,选择数据集,选择字段,选择条件,选择排序,... ... 然后把字段向上摆.
不光是Crystal Report是这样,很多常见的报表工具,不论是国外的"高端"产品,还是现在在Google中一搜"报表工具"能见到的一大堆国内的低端产品,基本上也都是这种方式.
这种方式不能说没有道理,它的理论是:
1、一张报表中的数据,基本上是有关系的,因此可以利用关系型数据库的特性,建立一个视图所需要的数据都包括进来。
2、可以用子报表的方法,将不同的数据分别处理。
然而,并不是这样简单!
首先,如果表复杂一点,建立一个复杂的视图绝不是一个很轻松的工作,更不用说除了建立视图的效率,还要考虑数据库与报表的运行效率。
其次,子报表与主报表之间,既有可能在格式上有麻烦(比如表格的对齐),也有可能在计算上有困难(主子报表之间往往只传递参数,无法直接引用数据进行公式计算)
因此,对报表工具而言,最根本的问题就是如何处理数据,以不同的方法处理数据,开发效率,运行效率可能都会相差十倍以上。而只有数据模型的改良,才是真正关乎报表工具效率的革命。象新一代报表工具如 FineReport报表 ,其最根本的优势也在于改进的数据模型与报表模型。
建议大家在选择报表工具时,一定要重视如何提取数据,这直接关系到未来的开发成本,以及生成的报表的可用性(会不会运行半天才能出来一张)。报表的开发成本,不仅仅在于画线、摆位置,更在于把数据表现出来。