找回密码
 立即注册

QQ登录

只需一步,快速开始

MatrixTian 讲师达人认证 悬赏达人认证

高级会员

141

主题

211

帖子

1380

积分

高级会员

积分
1380

微信认证勋章讲师达人元老葡萄悬赏达人

MatrixTian 讲师达人认证 悬赏达人认证
高级会员   /  发表于:2020-5-27 12:02  /   查看:3554  /  回复:0
本帖最后由 James.Lv 于 2023-1-5 19:04 编辑

用户在使用报表查看数据时,除过使用完整的值作为参数值的场景,也有不少需要通过模糊条件实现数据过滤查询的场景。
例如,在查询订单信息时,查询所有联系人姓刘的客户的订单,此时,就需要通过模糊匹配查询。
通常的场景有以下几种:
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 & "%'")




0 个回复

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