FineReport动态列实现方案

浏览: 1991

                                                                                              

相信动态列的实现困扰了很多人,大数据量,多字段的加载将会非常耗时,数据又做不到真正的动态灵活。现有的方式都是通过变向的隐藏等方式来实现的。而看各位大大们的类似实现方式,结合实际工作中遇到的一个相关内容。我觉得应该算是成功的解决了这个困惑。话不多说,小伙伴们跟着我的思路来。

我本地常用数据库是mysql,所以比较了解一点,我的实现方式也是基于mysql的。首先帆薯们先看看这个内容 MySQL自带information_schema数据库使用

看完之后相信可能还是有点不明白。我大概说一下,就是说mysql中有一个系统库information_schema。这个库中存放着mysql数据库的数据库实例名,表名称,表注释,字段名称,字段注释等等等等。而这个库的存在为我们动态列的实现就提供了一个基础。(其余的数据库oracle、sqlserver、db2等也有类似的存在。)

                                                                                             

然后我们继续回到我们的主题。我本地建立了一个测试库reporttest,测试表report。(帖子最后会提供建库语句与测试数据)。

帆薯们在mysql库中新建一个库reporttest(或者使用已经存在的库,但是如果使用已经存在的,那么报表内部sql内容就需要更改。所以最好新建一个),然后用类似navicat的工具运行我提供的reporttest.sql文件,即可建表并且导入数据,然后刷新即可,此时数据准备完成。

                                                                                             

设计器创建数据连接test,填写对应的数据库信息,测试成功即OK。

此时,库名称为reporttest,表名称为report,数据连接test。这时直接预览动态列实现方案.cpt。

 

 

 

 

 

可以很清晰的看到效果,我选择哪个列,它就只查询那个列,只展示哪个列的数据,这就是动态列的实现方案。

帆薯们可以依据我的逻辑,替换成你自己的数据连接,库,表数据进行测试使用体验!

经过本地一些测试,性能有明显的提升。具体的就要靠帆薯们一起优化了。大家有什么更优化的方案,欢迎交流。

                                                                                               

关于动态列的效果,有几点需要提示大家注意一下:

1、最主要的就是表字段最好带有注释,这样的话可以直接通过上面的方式取得表字段对应的注释当做name来显示使用,否则的话,

     当大批量字段注释不规范的时候,就需要你自己手动配置数据字典了。

2、数据库不同,系统库存储结构也不同,可能是多个库多张表,但是整体的逻辑是不会变的。所以帆薯们要好好看我的数据集SQL哦!

3、帆软的函数使用希望大家能够更灵活一点,千万不要受限于自己的思维,如果你给自己划定了区域,那么你就被自己局限了,你的进步注定有限。

                                                                                               

最后,祝福各位番薯们身体健康、工作顺利哦!帆软论坛是我到目前为止接触、了解、依赖度最高的一个地方,因为这里有着虽然不相识,可是我们可以互助的帆薯们。

没事的时候我们可以聊天打屁,谈谈人生,谈谈理想,但是如果有需要,我们可以把自己对帆软的知识掌握、心得、体验迅速的分享给大家!             

相信动态列的实现困扰了很多人,大数据量,多字段的加载将会非常耗时,数据又做不到真正的动态灵活。现有的方式都是通过变向的隐藏等方式来实现的。而看各位大大们的类似实现方式,结合实际工作中遇到的一个相关内容。我觉得应该算是成功的解决了这个困惑。话不多说,小伙伴们跟着我的思路来。

我本地常用数据库是mysql,所以比较了解一点,我的实现方式也是基于mysql的。首先帆薯们先看看这个内容 MySQL自带information_schema数据库使用

看完之后相信可能还是有点不明白。我大概说一下,就是说mysql中有一个系统库information_schema。这个库中存放着mysql数据库的数据库实例名,表名称,表注释,字段名称,字段注释等等等等。而这个库的存在为我们动态列的实现就提供了一个基础。(其余的数据库oracle、sqlserver、db2等也有类似的存在。)

                                                                                             

然后我们继续回到我们的主题。我本地建立了一个测试库reporttest,测试表report。(帖子最后会提供建库语句与测试数据)。

帆薯们在mysql库中新建一个库reporttest(或者使用已经存在的库,但是如果使用已经存在的,那么报表内部sql内容就需要更改。所以最好新建一个),然后用类似navicat的工具运行我提供的reporttest.sql文件,即可建表并且导入数据,然后刷新即可,此时数据准备完成。

                                                                                             

设计器创建数据连接test,填写对应的数据库信息,测试成功即OK。

此时,库名称为reporttest,表名称为report,数据连接test。这时直接预览动态列实现方案.cpt。

 

 

 

 

 

可以很清晰的看到效果,我选择哪个列,它就只查询那个列,只展示哪个列的数据,这就是动态列的实现方案。

帆薯们可以依据我的逻辑,替换成你自己的数据连接,库,表数据进行测试使用体验!

经过本地一些测试,性能有明显的提升。具体的就要靠帆薯们一起优化了。大家有什么更优化的方案,欢迎交流。

                                                                                               

关于动态列的效果,有几点需要提示大家注意一下:

1、最主要的就是表字段最好带有注释,这样的话可以直接通过上面的方式取得表字段对应的注释当做name来显示使用,否则的话,

     当大批量字段注释不规范的时候,就需要你自己手动配置数据字典了。

2、数据库不同,系统库存储结构也不同,可能是多个库多张表,但是整体的逻辑是不会变的。所以帆薯们要好好看我的数据集SQL哦!

3、帆软的函数使用希望大家能够更灵活一点,千万不要受限于自己的思维,如果你给自己划定了区域,那么你就被自己局限了,你的进步注定有限。

                                                                                               

最后,祝福各位番薯们身体健康、工作顺利哦!帆软论坛是我到目前为止接触、了解、依赖度最高的一个地方,因为这里有着虽然不相识,可是我们可以互助的帆薯们。

没事的时候我们可以聊天打屁,谈谈人生,谈谈理想,但是如果有需要,我们可以把自己对帆软的知识掌握、心得、体验迅速的分享给大家!

原文地址来源于我在帆软官方论坛的发帖,需要的可以点此跳转查看原文

推荐 1
本文由 星痕 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册