多值模糊查询报表的制作

简介: 多值模糊查询报表的制作

在数据查询系统中,经常会涉及到模糊查询和多值查询。对于模糊查询,我们可能都有所了解。就是根据用户在参数框中输入的关键字进行模糊匹配,这在 SQL 中是通过 like 条件实现的。而多值查询则大多是一次在参数框中输入 2 个以上关键词,以字符串组,整数组等形式进行参数传递,这在 SQL 中是通过 in 条件完成多值匹配的。

但是用户的需求往往是无止境的!最典型就是把这两种好使的方法结合起来,也就是两种查询的结合–在参数框中输入多个关键字,根据多个关键字进行模糊查询。比如,用户要根据产品名称进行多值模糊查询,当输入为“奶酪, 糖”时,希望找出产品名称中含有奶酪或糖的产品列表,如下图所示:
21

为了程序猿哥哥可以早日跟加班 say goodbye , 不再做单身汪(咦?为什么我这么热心?),让我们一起了解一下润乾报表是怎么做到两种查询的完美结合的……

一共需要……1、2、3、4 步:

  1. 定义主表模板:
    22

其中
1-3 行设置行属性为报表头,其余行为数据区即可。

B3 单元格表达式为:=macro1,目的是显示查询条件的拼接结果,以便校验最终数据是否正确。

A5 单元格表达式为:=ds1.select(产品 ID),目的是取数 ds1 结果集中所有的产品。

B5-F5 单元格表达式为:=ds1. 字段名称,目的是根据前面的产品编号取出对应的产品信息

  1. 定义参数:
    23

其中
cpmc 是普通参数,就是用户填入的查询值;

macro1 是动态参数,根据 cpmc 拼接查询条件,值表达式为:if(cpmc == null or cpmc==” ”,”1=1″,”产品名称 like ‘%”+replace(@cpmc,”,”,”%’ or 产品名称 like ‘%”)+”%’”)。这里的动态参数,它不仅是用于在报表结果页面里面显示查询条件的拼接结果,而且也用于对 sql 进行数据筛选。

再详细说明一下:当 cpmc 为空时,返回 1=1,表示查询全部数据,否则先用字符串替换函数 replace()把参数中的”,”替换为”%’ or 产品名称 like ‘%”)+”%’”(注意其中的空格),替换后的结果再和前后字符串拼接得到最终的查询条件。例如当用户输入“奶酪, 糖”,那么 replace 的替换结果就是“奶酪 %’ or 产品名称 like ‘% 糖 %’,再和前后字符串拼接得到最终结果为 产品名称 like ‘% 奶酪 %’ or 产品名称 like ‘% 糖 %’。

  1. 定义数据集:
    24

这里在查询条件中用到了参数的特殊用法 ${参数名},相当于一个占位的效果,查询时会用前面定义的动态参数内容填充到这个位置。

注:第 2 – 3 步的设置均在主表模板中添加。

  1. 定义参数模板:
    25

在报表工具设计区域右侧的属性栏中将 B2 的单元格 web 变量名设置为 cpmc。

Bingo,多值模糊查询就这样完美地实现了!

回顾

我们来回顾一下其中遇到的问题和解决的技巧:

1、数据集 SQL 实现动态取数:

使用参数的 ${参数名} 用法

2、 查询条件为空,查询全部:

使用参数 1=1 的用法

3、多值匹配:

以“,”分割多个查询关键字,拼接成多个 or 相连的 like 条件。

最后我们发现,其实这里仅仅用了润乾报表的参数特殊用法和 SQL查询条件的拼接,是不是一不小心,又双叒叕 get 了新技能?这样下去,用不了多久是不是就可以拒绝加班,拒绝做单身汪了,窃喜吧

作者:IBelieve
链接:http://c.raqsoft.com.cn/article/1533026065516?r=IBelieve
来源:乾学院
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

目录
相关文章
|
2月前
|
数据采集 数据可视化 数据处理
【办公自动化】在Excel中按条件筛选数据并存入新的表2.0
【办公自动化】在Excel中按条件筛选数据并存入新的表2.0
44 1
|
7月前
|
存储 JSON BI
如何查询 SAPGUI 屏幕上某个字段对应的数据库表存储的试读版
如何查询 SAPGUI 屏幕上某个字段对应的数据库表存储的试读版
52 0
|
9月前
|
XML JSON 缓存
Java实现根据关键词搜索1688商品列表数据方法
Java实现根据关键词搜索1688商品列表数据方法
70 0
|
SQL 存储 前端开发
MySQL模糊查询 先展示精确查询在展示模糊查询结果 | 结果按匹配度 排序
MySQL模糊查询 先展示精确查询在展示模糊查询结果 | 结果按匹配度 排序
532 0
|
10月前
|
JSON API 数据格式
python采集速卖通商品列表数据,关键词搜索速卖通列表数据,速卖通API接口
python采集速卖通商品列表数据,关键词搜索速卖通列表数据,速卖通API接口
336 0
|
11月前
|
小程序 数据库
小程序云开发模糊查询,实现数据库多字段的模糊搜索
小程序云开发模糊查询,实现数据库多字段的模糊搜索
386 0
|
12月前
odoo 为可编辑列表视图字段搜索添加查询过滤条件
odoo 为可编辑列表视图字段搜索添加查询过滤条件
162 0
|
自然语言处理 搜索推荐 开发者
高级查询(数组查询和组合查询)| 学习笔记
快速学习高级查询(数组查询和组合查询)。
125 0
高级查询(数组查询和组合查询)| 学习笔记
|
SQL 关系型数据库 MySQL
DQL (数据查询语言)之基础查询之列控制标题 | 学习笔记
快速学习 DQL (数据查询语言)之基础查询之列控制标题
111 0
DQL (数据查询语言)之基础查询之列控制标题 | 学习笔记
|
BI 数据处理
脚本填报表的条件查询
在上一篇《脚本模式下的填报表制作》中,我们详细讲述了如何使用脚本进行数据处理、制作填报表,今天我们盘道一下脚本模式下如何实现条件查询。 一、需求描述 然后再进行增删改操作。例如,先过滤出所关心城市的客户信息,然后再对查询结果进行更新操作。