本帖最后由 星痕 于 2016-9-23 10:10 编辑
相信动态列的实现困扰了很多人,大数据量,多字段的加载将会非常耗时,数据又做不到真正的动态灵活。现有的方式都是通过变向的隐藏等方式来实现的。而看各位大大们的类似实现方式,结合实际工作中遇到的一个相关内容。我觉得应该算是成功的解决了这个困惑。话不多说,小伙伴们跟着我的思路来。
我本地常用数据库是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、帆软的函数使用希望大家能够更灵活一点,千万不要受限于自己的思维,如果你给自己划定了区域,那么你就被自己局限了,你的进步注定有限。
最后,祝福各位番薯们身体健康、工作顺利哦!帆软论坛是我到目前为止接触、了解、依赖度最高的一个地方,因为这里有着虽然不相识,可是我们可以互助的帆薯们。
没事的时候我们可以聊天打屁,谈谈人生,谈谈理想,但是如果有需要,我们可以把自己对帆软的知识掌握、心得、体验迅速的分享给大家!
我希望论坛带给大家的是一种互相尊重、互相帮助的精神,这也是互助团队的意义,也是每一位帆薯应该都尽力守护的!
国庆节快到了,大家好好计划一下去哪玩吧,工作之余,也要给自己的心灵、身体放个假哦!
|