ITPub博客

首页 > 应用开发 > Java > 动态列报表的制作

动态列报表的制作

Java 作者:rqgxy 时间:2018-11-23 22:11:51 0 删除 编辑

在数据信息系统中,常常会看到这样一类报表需求,它们往往格式简单,一般为列表式明细报表,但是要显示的列很多。而不同终端用户在不同时刻关心的数据又不同,这样就要求报表能够让他们随心所欲的选择要显示的列,以便直观地查看数据。最终效果如下图所示:

动态列效果图

那怎么实现这种需求呢?

多做几个典型报表,根据用户不同进行不同的加载?这样报表开发工作量就增加了,连吃鸡的时间都没有了;

写个存储过程动态计算要显示的表字段?还需要调试存储过程。

有没有更简单高效的实现方法???——当然必须有,下面看我放大招。

工欲善其事,必先利其器。我们选择的利器就是: 润乾报表 ,具体实现操作如下:

首先 ,在数据集上通过 sql 实现动态取数

根据需求效果,我们需要定义两个参数,用于接收要显示的表和字段信息:

报表参数配置

对应数据集 sql 配置如下:

数据集sql配置

【技巧】${参数名} 为参数的高级用法,可以在报表中动态的进行表达式的替换,快速实现动态执行语句的拼接。

然后 ,在报表单元格表达式中实现动态显示字段

报表单元格配置

其中,

B1 单元格:=to(1,ds1.fcount()) 并设置扩展方式为横向扩展,用于计算需要显示的列数

B2 单元格:=ds1.fname(B1) 跟随 B1 扩展,用于动态显示列名称

A3 单元格:=ds1.select(#0) 根据数据集的行数进行纵向扩展

B3 单元格:=ds1.field(B1) 用于动态显示对应字段数据

A 列为协助实现效果列,故需要选择该列,设置该列隐藏。

最后 ,我们制作一下参数模板,方便用户选择自己想要显示的表和列数据

参数模板设置

设置 B2 和 D2 编辑风格为下拉数据集(数据集为提前准备好的内建数据集),并在 D2 设置关联过滤,便于用户了解对应表下有哪些字段供选择,进行数据分析。

关联过滤配置

好了,一个完美的动态列报表就完成了,我们来回顾一下其中遇到的问题和解决的技巧:

1. 数据集 sql 实现动态取数

【技巧】使用参数的 ${参数名} 用法

2. 单元格表达式实现动态显示字段

【技巧】使用数据集函数 ds.field()和 ds.fieldname()


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31555597/viewspace-2221490/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-09-20

  • 博文量
    158
  • 访问量
    90501