润乾非线性报表解释

  润乾报表服务器各版本差异中最重要的指标是非线性报表的数量限制。本文档将说明什么是非线性报表。

非线性报表的定义

非线性报表是指在设计过程中使用了润乾的非线性模型的报表,具体规定为含有以下项目之一:

 多数据集

 同一方向无从属关系的多项扩展

 层次坐标计算(非常规的跨行组运算)

 含有多个更新属性的填报表

对于这四个技术特性的详细说明,参见下文。

理解非线性报表的三个关键问题:

1、非线性报表的作用在于,许多复杂报表采用传统报表技术制作起来非常困难(需要编写代码或复杂 SQL 准备数据),而采用非线性模型则可以轻松完成,使制作效率大大提高。还有一部分工作是通过传统报表技术难以实现的,也可以通过非线性报表实现。

2、需要注意的是,在很多情况下,报表既可以使用非线性报表制作,也可以使用普通的报表设计方法制作(润乾报表各个版本均不对普通报表限制数量),只是工作量方面的差异,一般地讲,报表越复杂,采用非线性报表开发时节省的设计成本就越高,对报表提高制作效率、缩短制作周期、增加易维护性的帮助就越大。

  而润乾报表对非线性报表的数量限制,是指只有规定数量的报表可以采用非线性报表模型来做(高效),再多的还可以采用传统方案去做(低效),润乾报表提供了非线性报表模型但并不影响用户使用传统处理方案。

  润乾报表在使用传统处理方法时,虽然不能发挥新一代报表模型的全部优势,但仍然在绘制方便、纯 JAVA、集成便捷、行列对称、填报等方面有很多优点。

3、非线性报表的数量限制,是指累计运行报表模板的数量限制。也就是说,在报表服务器启动后,它会累计所使用过的非线性报表模板的数量,达到限制额后将不再生成新的非线性报表。这里需要注意的是:

  数量限制并不是总共只能做多少张,计数只在报表服务器启动后进行。可能有些报表曾经使用过,但后面不再使用,只要曾经重新启动报表服务器,就不再计数。

  

同一报表,不论被访问多少次,均只按一张计算。

多数据集:

  即常说的多源报表。需要特别注意的是,多数据集、多源之类,都不是指原始数据的情况,而是在报表中所使用的数据集的个数。如果原始数据分布在多个物理表甚至是多个数据库中,但通过SQL、视图等将其转化为一个数据集供报表系统使用,则其实质仍然是单数据集。

对大多数传统报表工具而言,都支持数据来自多个物理表,但一般都需要先通过视图将其形成单数据集。在涉及的物理表较多或者要求的数据集结构与原数据表差异很大的情况下,这项工作就非常复杂,要写很复杂的SQL甚至需要编写程序预先计算。而润乾报表可以很方便地支持在报表中使用多数据集,这一特性可以大大提高设计效率。

下表是一个典型的多数据集的例子:

  这张表看起来简单,但它的数据实际上是放在汽车、房产、土地、其他四张表中。要做这张表,传统的方法就要做一个非常复杂的视图,先将其形成单一数据集,但这样做会要写一个很复杂的SQL语句,运算时负担也会比较大。而使用润乾报表的多数据集将可以大大简化这一过程。

  当然,如果不使用非线性报表,这张报表也可以使用传统设计方法,做一个视图来实现。由此也可以更好地理解上文中所说的“在很多情况下,报表既可以使用非线性报表制作,也可以使用普通的报表设计方法制作”。

  另外,还有一些报表则只能用多数据集方法完成,这种情况下使用非线性报表是必需的。

  润乾报表在设计时会将数据集都统一列出,当有两个或以上的数据集被在单元格数据表达式中使用过则被认为使用了非线性报表模型。

  需要注意的是,在显示值表达式中使用的多数据集则不被认为是非线性报表(一般在这里应用仅是为了查询字典表从而改变单元格的显示文字)。比如在销售额表中保存的是地区、产品的代码,地区、产品的名称保存在相应的代码表中,则不需要将代码表与销售额表建立统一视图,而只要在显示值表达式中使用另外的数据集就可以了,这种情况不会被计入非线性报表。

  这张表看起来简单,但它的数据实际上是放在汽车、房产、土地、其他四张表中。要做这张表,传统的方法就要做一个非常复杂的视图,先将其形成单一数据集,但这样做会要写一个很复杂的SQL语句,运算时负担也会比较大。而使用润乾报表的多数据集将可以大大简化这一过程。

  当然,如果不使用非线性报表,这张报表也可以使用传统设计方法,做一个视图来实现。由此也可以更好地理解上文中所说的“在很多情况下,报表既可以使用非线性报表制作,也可以使用普通的报表设计方法制作”。

  另外,还有一些报表则只能用多数据集方法完成,这种情况下使用非线性报表是必需的。

  润乾报表在设计时会将数据集都统一列出,当有两个或以上的数据集被在单元格数据表达式中使用过则被认为使用了非线性报表模型。

  需要注意的是,在显示值表达式中使用的多数据集则不被认为是非线性报表(一般在这里应用仅是为了查询字典表从而改变单元格的显示文字)。比如在销售额表中保存的是地区、产品的代码,地区、产品的名称保存在相应的代码表中,则不需要将代码表与销售额表建立统一视图,而只要在显示值表达式中使用另外的数据集就可以了,这种情况不会被计入非线性报表。

下一页