天天看点

帆软finereport实现动态切换分组和列表模式

首先简单说一下什么是帆软报表的“分组”还有“列表”,

分组呢,就是这样:

帆软finereport实现动态切换分组和列表模式

列表呢,就是这样:

帆软finereport实现动态切换分组和列表模式

简单说,列表就是不合并重复的单元格了,分组就是自动把那些重复的单元格给合并起来。

最理想的情况下,是通过一些按钮来控制在数据设置的分组与列表之间的状态进行切换,但是帆软没这么智能,想了半天(真的是半天,一整个早上),试了很多种办法,最后发现最简单粗暴的方法就是最好用的方法:

随便添加一个下拉框按钮(我用的是cpt普通报表),添加一个是分组还是列表的变量,再加上“查询”按钮,

然后在sql语句里面去获取这个变量,如果是分组呢,不做任何处理,如果是列表呢,就取值再加上序号,

我用的是oracle,所以就是 ‘国家’ || rownum (其他sql语言也有类似的东西,自己百度了,这里不展开)

这样跑出来的结果就是:

帆软finereport实现动态切换分组和列表模式

但是我们肯定不要这个123,很简单,添加条件属性,用finereport的left函数取值(设置“新值”),在这里是left( $ $ $,2)

有时候,字段的长度是动态变化的,比如中国、俄罗斯、哈萨克斯坦,这样不整齐的话比较难搞,其实方法也还是有,就是加一串比较长的数字,比如可以rownum加上一百万(7位数),通常你的查询条目不会超过一百万条,如果超过了就加到千万级或者亿级即可。

这样,在帆软的条件属性里面就可以设置

新值 left( $ $ $,len($ $ $ )-7),

(csdn连续打出三个$放在一起会出现显示异常,无奈我只能在中间加上空格,实际上是没有空格的)

然后条件就设置1==1即可

这样在加载出来的时候就会把后面的rownum自动去掉

就可以实现按列表模式分行但是内容却是一样的了。