如何根据数据库查询结果,确定动态显示的列。

楼主
我是社区第4476位番薯,欢迎点我头像关注我哦~
数据库中有表1和表2,表1中有A,B,C,E,F,G,H列。现要制作一张与A相关的查询报表,其中A,B,C列固定显示,其余列。根据表2查询的结果集中某个字段比如RID的值,来决定是否显示。
若查询的结果集中distinct(RID)的值有E,G,则制作的查询报表在A,B,C后面显示E.G列,表1中的剩余列则不显示,如何实现。
即根据数据库查询结果,确定动态显示的列。
求教。{:soso_e100:}
分享扩散:

沙发
发表于 2012-5-20 14:25:00
动态SQL你试一下,不行再给我消息
板凳
发表于 2012-5-20 18:50:58
动态sql组织好以后,也不知道到底最后是哪些列被查询出来了,那样的话,在模板设计中怎么设计。
未使用动态sql的时候,我是这样想的。建立两个报表数据集,ds1,ds2(分别是select * from 表1;from 表2),然后标题中ABC列后面,直接用ds2.S(RID) 从左到右扩展。这样标题就动态产生了。
但是不知道动态标题下面对应的数据该用什么公式写。按理可以用ds1.G(此行标题所在单元格的值)或者ds2.S(此行标题所在单元格的值).
此行标题所在单元格的值,就是表1中该列的名称。但是不行。
地板
发表于 2012-5-20 19:06:05

如上图 表1 建立报表数据集ds1 (select * from 表1 order by id),表2建立报表数据集ds2 (select * from 表2 order by id)。
组建查询表,其中ID,BNAME,NAME为固定列。之后的列完全由表2中的数据行数和顺序决定。比如此时表2 中有A01,A05,A02三行,则查询表固定列后,出现三列动态列,顺序也为A01,A05,A02。
不使用动态SQL,仅用FR里提供的方法,能否实现上述要求?如不能,请教动态SQL方法。
5楼
发表于 2012-5-20 19:16:07
网上FR关于动态列的介绍,主要是两种,一种是遍历所有的列,另一种是通过可复选的combobox确定显示的列。而我的需求是,根据数据库表中的数据确定显示哪些列,而且显示的列顺序也有要求。本次接触FR时间很短,上述问题如果太白痴,请见谅。
6楼
发表于 2012-5-23 08:26:05
能否就我这个例子说的具体点,我按你说的去做,但是提示null出错,模板里要操作的那个单元格该使用什么公式?这个单元格的条件属性已经按你说的去设置了,不知道是否有遗漏,跪求详解。
7楼
发表于 2012-5-23 13:34:07
对E,F,G,H列设置条件属性,列宽为0,条件即是包含在ds2查询的结果中。
8楼
发表于 2012-5-23 13:54:11
可以实现列的动态筛选,但是无法实现列按照查询数据的顺序进行显示。查询第一条是F,第二条是D,则先显示F列再显示D列。任何情况都有,无法固定设置。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

8回帖数 1关注人数 8623浏览人数
最后回复于:2012-5-23 13:54

返回顶部 返回列表