用户在使用报表查看数据时,除过使用完整的值作为参数值的场景,也有不少需要通过模糊条件实现数据过滤查询的场景。
例如,在查询订单信息时,查询所有联系人姓刘的客户的订单,此时,就需要通过模糊匹配查询。
通常的场景有以下几种:
1.数据集中添加模糊过滤参数;
2.表格条件过滤;
3.模糊查询,输入参数值之后,根据参数显示查询结果;
4.模糊查询不输入参数显示全部;
一.共享数据集添加模糊过滤参数
1.在数据集中添加过滤参数,参数类型为用户输入参数;
2.将参数添加到结果集的过滤器上;
3.通过该数据集创建报表,报表中出现 "姓氏"参数,设计完报表后预览,即可实现模糊查询效果。
二、表格和矩表的模糊条件过滤
1.设计表格,绑定数据。
2.选中表格,在属性面板中数据选项下添加数据过滤条件;
过滤条件字段为:客户姓名
【数据】为:羊*,即姓羊的客户。
模糊条件在中间位置:*羊*;
模糊条件在最后:*羊;
原理和SQL中like语法一致。
在矩表中也是相同的做法。
除过以上方式外,可以通过内嵌数据集,使用sql语句来实现更多的模糊查询场景。
三.模糊查询,输入参数值之后,根据参数显示查询结果
1.定义参数,并添加内嵌数据集;
以 姓氏开头:select * from 订单表 where 联系人 like + @姓氏 + '%'
包含某个字符串为:select * from 订单表 where 联系人 like + '%' + '羊' + '%'
2.将字段绑定到对应组件上,即可实现模糊查询。
四.模糊查询不输入参数显示全部
1.不输入参数时显示全部,输入参数后,模糊查询。
操作步骤和上个情况类似,动态SQL的写法:
="select * from 销售明细 where 1=1" & IIF(Parameters!姓氏.Value="",""," and 客户姓名 like '") & Parameters!name.Value & "%'"
含义:默认未输入参数时,执行select * from 销售明细 where 1=1语句,显示全部结果。
输入参数值时,执行含参的完整语句。
2.多条件动态模糊匹配:模糊查询的条件有多个,默认显示全部。
多个模糊条件通过IIF表达式来判断返回值,根据是否有参数值生成对应的SQL语句。
="select * from 销售明细 where 1=1" & IIF(Parameters!area.Value="",""," and 货主地区 like '%" & Parameters!area.Value & "%'") & IIF(Parameters!city.Value="",""," and 货主城市 like '%" & Parameters!city.Value & "%'")