提问
 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,极速登录

动态列实现方案

星痕 社区微信达人番薯互助团队 文档共创团队 互助叫兽、助理编辑、VIP1
发表于 2016-9-23 02:12 | 显示全部楼层 |取消关注该作者的回复
本帖最后由 星痕 于 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。
8903457e41aea4dc49.png
3725157e41b01927c8.png
2601457e41b10e9055.png
2714057e41b2df295f.png
4563257e41b38cebfa.png
可以很清晰的看到效果,我选择哪个列,它就只查询那个列,只展示哪个列的数据,这就是动态列的实现方案。
帆薯们可以依据我的逻辑,替换成你自己的数据连接,库,表数据进行测试使用体验!
经过本地一些测试,性能有明显的提升。具体的就要靠帆薯们一起优化了。大家有什么更优化的方案,欢迎交流。
                                                                                               
关于动态列的效果,有几点需要提示大家注意一下:
1、最主要的就是表字段最好带有注释,这样的话可以直接通过上面的方式取得表字段对应的注释当做name来显示使用,否则的话,
     当大批量字段注释不规范的时候,就需要你自己手动配置数据字典了。
2、数据库不同,系统库存储结构也不同,可能是多个库多张表,但是整体的逻辑是不会变的。所以帆薯们要好好看我的数据集SQL哦!
3、帆软的函数使用希望大家能够更灵活一点,千万不要受限于自己的思维,如果你给自己划定了区域,那么你就被自己局限了,你的进步注定有限。

                                                                                               
最后,祝福各位番薯们身体健康、工作顺利哦!帆软论坛是我到目前为止接触、了解、依赖度最高的一个地方,因为这里有着虽然不相识,可是我们可以互助的帆薯们。
没事的时候我们可以聊天打屁,谈谈人生,谈谈理想,但是如果有需要,我们可以把自己对帆软的知识掌握、心得、体验迅速的分享给大家!
我希望论坛带给大家的是一种互相尊重、互相帮助的精神,这也是互助团队的意义,也是每一位帆薯应该都尽力守护的!
国庆节快到了,大家好好计划一下去哪玩吧,工作之余,也要给自己的心灵、身体放个假哦!





动态列实现方案.cpt

6.76 KB, 下载次数: 44

售价: 500 个F豆  [记录]

reporttest.sql

1.19 KB, 下载次数: 182

评分

参与人数 11F豆 +911 VIP经验 +20 F币 +20 收起 理由
李复勇 + 1 默默地点个赞,然后闪人
zsh331 + 10 感谢分享
wiseM__花生丶 + 14 这我看懂了,赞一个!
我爱刘歆 + 1 赞一个!
windy_gui + 1 赞一个!
传说哥 + 666 + 20 + 20 很给力!
astar123 + 50 感谢帮助
孤陌 + 100 很给力!
boykarl911 + 1 露个脸!
哈易春 + 1 66666
macro_hard + 66 很给力!

查看全部评分

此帖共有 821 位番薯登录后查看
回复

使用道具 举报

yixingtianyuan 番薯互助团队 互助新人
发表于 2016-9-23 08:28 | 显示全部楼层 |取消关注该作者的回复
沙发,给星星大神赞一个,膜拜星神中。。。
  • 评论

回复 支持 反对

使用道具 举报

cherishdqy 社区微信达人实名认证 番薯互助团队 文档共创团队 互助叫兽、助理编辑、VIP2
发表于 2016-9-23 08:32 | 显示全部楼层 |取消关注该作者的回复
大神你真棒!{:8_209:}
  • 评论

回复 支持 反对

使用道具 举报

哈易春 番薯互助团队 禁止发言
发表于 2016-9-23 08:42 | 显示全部楼层 |取消关注该作者的回复
顶!d=====( ̄▽ ̄*)b你一下,不错,大神6666
  • 评论

回复 支持 反对

使用道具 举报

李半仙 番薯互助团队 互助砖家、VIP1
发表于 2016-9-23 08:47 | 显示全部楼层 |取消关注该作者的回复
大神我爱你
  • 评论

回复 支持 反对

使用道具 举报

ning-baobao 社区微信达人 初学乍练(Lv1)
发表于 2016-9-23 08:49 | 显示全部楼层 |取消关注该作者的回复
大神你真棒!
  • 评论

回复 支持 反对

使用道具 举报

gqmao 社区微信达人番薯互助团队 互助新人
发表于 2016-9-23 09:12 | 显示全部楼层 |取消关注该作者的回复
似乎有点明白星神,就是表的结构信息在系统表中
从系统表中取字段名或其注释做为下拉选择
动态拼接SQL,得到动态列效果
不错的思路。
星神真棒!
  • 评论

回复 支持 反对

使用道具 举报

xyzy1008 社区微信达人 渐入佳境(Lv2)
发表于 2016-9-23 10:04 | 显示全部楼层 |取消关注该作者的回复
500豆,,哈哈饥饿抢豆子中{:5_129:}
  • 评论

回复 支持 反对

使用道具 举报

sz_zdh 社区微信达人番薯互助团队 互助新人
发表于 2016-9-23 10:15 | 显示全部楼层 |取消关注该作者的回复
跟帆软案例那个是一样的(数据集形式的),其实我那个动态列好处是不用改造数据集,多数据集也可以支持动态列,坏处是影响了一定的性能(如果数据量不大的话,其实是没啥影响的);而数据集形式的动态列呢,一个是你说的那样,列名要写别名,最好是中文,否则弄到控件里也不知道是哪个字段,还有就是要实现之前项目中的动态列,基本要把所有数据集改一遍,还不支持多数据集(你控件加载的列只能选一个数据集)
  收起(1)
  • 星痕 星痕

    多数据集原理也是一样的,我的处理逻辑可以控制查询库,查询表,查询字段。我只是做了一个简化的设计,具体使用看具体的需求。而且,你说的列名写别名是不太正确的,我这里取得是表字段的注释,只要你设计表的时候规范化,表字段注释就直接当做了展现名称。
    2016-09-23 10:35 评论
  • 评论

回复 支持 反对

使用道具 举报

astar123  初学乍练(Lv1)
发表于 2016-9-24 12:23 | 显示全部楼层 |取消关注该作者的回复
星神,顶你!
  • 评论

回复 支持 反对

使用道具 举报

wiseM__花生丶 实名认证 番薯互助团队 互助新人
发表于 2016-9-26 11:52 | 显示全部楼层 |取消关注该作者的回复
星大神人如其名,吾唯有以头抢地尔。{:7_186:}
  收起(1)
  • 星痕 星痕

    。。。。这和名字有什么关系?星痕怎么了?
    2016-09-26 12:11 评论
  • 评论

回复 支持 反对

使用道具 举报

传说哥 社区微信达人实名认证 番薯互助团队 帆软员工 管理员
发表于 2016-9-27 16:18 | 显示全部楼层 |取消关注该作者的回复
  收起(2)
  • 星痕 星痕

    软哥一来,瞬间感觉帖子整个都上档次了
    2016-09-27 16:20 评论
  • 后知 后知

    测试回复回帖的bug
    2016-09-28 15:10 评论
  • 评论

回复 支持 反对

使用道具 举报

luker  禁止发言
发表于 2016-9-29 09:22 | 显示全部楼层 |取消关注该作者的回复
似乎有点明白星神,就是表的结构信息在系统表中
  收起(1)
  • 星痕 星痕

    2016-09-29 09:40 评论
  • 评论

回复 支持 反对

使用道具 举报

wiseM__花生丶 实名认证 番薯互助团队 互助新人
发表于 2016-9-30 17:44 | 显示全部楼层 |取消关注该作者的回复
这个我看懂了,兴许以后用得上!赞{:5_126:}
  收起(1)
  • 星痕 星痕

    2016-09-30 17:49 评论
  • 评论

回复 支持 反对

使用道具 举报

最懒的小孩 社区微信达人番薯互助团队 互助新人
发表于 2016-10-10 16:17 | 显示全部楼层 |取消关注该作者的回复
我好像明白了什么……
  收起(1)
  • 星痕 星痕

    2016-10-10 18:06 评论
  • 评论

回复 支持 反对

使用道具 举报

qq807017817  初学乍练(Lv1)
发表于 2016-10-13 14:05 | 显示全部楼层 |取消关注该作者的回复
豆子好多 没有怎么办
  收起(1)
  • 星痕 星痕

    那就努力泡论坛,参加活动,摇一摇,大转盘,每天都能拿到豆子,做多一周,就能攒够哦。
    2016-10-13 16:01 评论
  • 评论

回复 支持 反对

使用道具 举报

llz1981  初学乍练(Lv1)
发表于 2016-10-16 16:04 | 显示全部楼层 |取消关注该作者的回复
支持!!!!
  收起(1)
  • 星痕 星痕

    {:8_199:}互相学习
    2016-10-16 16:31 评论
  • 评论

回复 支持 反对

使用道具 举报

uwise 社区微信达人 初学乍练(Lv1)
发表于 2016-11-29 12:10 | 显示全部楼层 |取消关注该作者的回复
不错,但是没有这么多F豆啊,能少点不
  收起(1)
  • 星痕 星痕

    {:8_199:}这个是从一开始就定下来的,有很多小伙伴已经买了,现在少了对他们不太好!天天摇一摇大转盘,基本一周你的豆子就够了
    2016-11-29 13:38 评论
  • 评论

回复 支持 反对

使用道具 举报

zsh331 实名认证 番薯互助团队 文档共创团队 互助叫兽、助理编辑
发表于 2016-12-20 23:29 | 显示全部楼层 |取消关注该作者的回复
  • 评论

回复 支持 反对

使用道具 举报

星痕 社区微信达人番薯互助团队 文档共创团队 互助叫兽、助理编辑、VIP1
发表于 2016-12-20 23:35 来自手机 | 显示全部楼层 |取消关注该作者的回复
zsh331 发表于 2016-12-20 23:29

大神好
  • 评论

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

Copyright © 帆软|联系帆软| 联系管理员@兔子酱|免责声明|手机版|帆软社区 ( 苏ICP备14031611号-3 )

GMT+8, 2018-8-15 20:30 , Processed in 1.558475 second(s), 226 queries , Gzip On.

返回顶部 返回列表