webreport

博客园 首页 新随笔 联系 订阅 管理
      国内的报表工具大多都会对常用报表样式作个总结,如简单列表,分组报表,交叉表,多级分组交叉表等等,并提供这些报表的实现方法。确实,这些能够很好地帮助用户开发报表。但常常也会遇到一些意外情况,即在这些标准报表样式的基础上增加了些变化。下面枚举一下我近期遇到的一些变化,当然象固定行数的报表这样的常见的变化我就不列了。

1 简单列表模式下的变化,简单列表即将一个数据库中的物理表或是一个sql语句的运行结果直接列出来。这是最常见也最容易的一个报表了。但当列表中字段数即列数较多时,常常会要求能够动态地显示某些列。也就是说运行时到底显示哪些列(包括列次序)是由一个参数决定的,即可以由最终用户在界面上选择控制显示。

e表中的做法是定义一个宏变量,由这个宏变量来传入字段名列表。报表的列数设计成自动根据SQL语句中的字段名列表来扩展。如下图:


    设计界面如下图:


       大家可能会说字段名是英文的,如何变成中文的呢,这个可以用e表中的Map函数来实现一个对照表。因为要突出动态列的实现方法,所以就没有列出。

2 简单列表有时希望分成二列或多列显示出来。如下图所示:

e表中的做法如下图所示:



        3
在标准的分组报表中,都是事先确定好了按某个字段来分组,这个比较容易实现。但有时需要按哪个字段来分组是不确定的,按哪个字段来分组是由用户选择的。也就是说,在设计报表时,是不确定按哪个字段来分组。只有在运行时才知道。

e表中的做法是定义一个宏变量,由这个宏变量来传入要分组的字段名。在设计报表时设计由这个宏变量来分组,然后在运行时通过参数传入要分组的字段名。

e表中的做法如下图所示:



  主要是在分组时是靠宏变量
${groupname}来分组的。

4 在两级分组报表中,一般都是两个分组字段都在左侧展开的,如下图:

但有时需要一个字段在上面显示,一个字段在左侧显示。如下图:


   在
e表中的做法只需要设置一下左侧字段所在单元格的左顶格属性就可以实现了。如下图:


        5
在常规的交叉表中,显示多少行多少列往往都是由当前查询出的记录来动态决定的。有时希望要固定显示某些行列,如这些行列没有记录的话就显示0。因为这样的话,就无论查询结果如何,表格的样式,表格的行列数都是不变的。对于最终用户来说,显示0比这行或这列不存在有时要好些。即要求如下图:

e表中的做法如下图所示:


6 在常规的交叉表中,交叉点上常常只有一个内容,或是金额汇总,或是计数等等.但有时需要交叉点上同时要有多个内容,比如需要数量汇总和金额汇总。如下图所示:

e表中的做法如下图所示:



    就象咱们编程一样,常常会有很多的意外情况。设计报表也是如此。研究这些变化,预测这些变化,适应这些变化。对于一个报表工具来说是非常重要的事。望能集思广益,大家一起来丰富这方面的内容。
posted on 2007-08-31 10:11  web报表  阅读(5373)  评论(4编辑  收藏  举报