字符串组做过滤条件的使用方法
字符串组做过滤条件的使用方法
在润乾报表 的使用过程中,许多客户需要在数据集的 sql 中使用 in (?) 的形式,这样可以实现数据的动态过滤,而参数的内容就是一个字符串组,下面就用一个简单的例子实现在数据集中使用字符串组动态实现数据的过滤。
第一步:新建一张报表,连接 demo 数据源。
新建一张普通的报表,连接 demo 数据源,新建一个数据集 ds1 , ds1 的 sql 为 SELECT 订单 . 订单 ID, 订单 . 货主名称 , 订单 . 货主国家 , 订单 . 货主地区 FROM 订单 , 报表的样式如下图所示:
第二步:新建一个参数 arg1 ,参数的类型为字符串组。
新建一个参数 arg1 ,类型为字符串组,并且在数据集 ds1 中增加一个参数 arg1 ,类型也设置为字符串组,数据集中参数的形式如下图所示:
第三步:给数据集增加过滤条件。
编辑 ds1 的 sql ,增加过滤条件,增加过滤条件后 sql 为 SELECT 订单 . 订单 ID, 订单 . 货主名称 , 订单 . 货主国家 , 订单 . 货主地区 FROM 订单 where 订单 . 订单 ID in (?) , 数据集的 sql 样式如下图所示:
根据数据库中订单 ID 的值给参数 arg1 赋值,中间用逗号“ , “分割,例如给 arg1 赋值为: 10523,10524,10525,10526,10527,10528,10529, 然后浏览报表,就可以看到 ID 为以上几个值的数据被展现出来,如下图所示:
如果想在不输入任何数值的时候默认查询出全部数据则还需要进行以下几步操作:
首先,给数据集在增加一个参数,名字也是 arg1 ,不过此时这个新增加的参数的类型为字符串而不是字符串组,具体的样式如下图所示:
然后,修改数据集 ds1 的 sql 为: SELECT 订单 . 订单 ID, 订单 . 货主名称 , 订单 . 货主国家 , 订单 . 货主地区 FROM 订单 WHERE 订单 . 订单 ID in (?) or ? is null
然后浏览报表数据,使 arg1 的值为空,就会发现所有数据都被展现出来了,具体的样式如下图所示:
这样通过以上步骤,在数据集的 sql 中使用 in (?) 的形式实现数据的动态过滤的需求就实现了。
关键词:字符串组,数据集,动态过滤,过滤条件, sql ,参数