ITPub博客

首页 > 应用开发 > Java > 轻松 get 报表模糊查询技能

轻松 get 报表模糊查询技能

Java 作者:rqgxy 时间:2018-11-29 17:42:33 0 删除 编辑

在银行、销售、仓库管理等的数据查询系统中,我们经常会用到精确查询来准确获取想要的数据,但是很多时候我们并不记得确切的检索条件是什么,这样的话,必然会对我们获取数据造成一定的影响,而此时模糊查询的出现很好的解决了这个难题,因其可以根据用户输入的部分关键词,检索到与之相关联的所有选项数据,从而使用户能够尽可能快地找到所需的数据。与精准查询相比,更灵活、方便、快捷的模糊查询,在 sql 中常用 like 条件配合完成此操作。

好了,为了程序猿哥哥可以早日跟加班 say goodbye , 不再做单身汪,让我们一起 get 新技能吧!接下来,我们以举栗子的方式看一下在润乾报表中有哪些地方可以用到模糊查询,又是如何应用的。

栗子 1 号

基础应用, 如下(图一),输入“张”,检索出所有姓名包含“张”的数据。

紧接着,我们就一起剥开这个栗子,看一看它是怎么处理做到模糊查询的。

首先, 我们把上图拆分成上下 2 部分,分别是查询部分 + 数据呈现部分,下面我们先看一下查询部分的报表文件样式及设置,如下:

其中

报表属性中报表类型为:参数模板;

C2 单元格设置 WEB 变量名 为 name,此设置的目的是将输入值传递给数据呈现部分的报表进而进行数据筛选。 设置完成后将其保存为 3.4_arg.rpx

紧接着,再来看一看数据呈现部分的报表文件样式及设置,如下

其中

第 1 行 行属性为:分页页眉,第 2 行 行属性为:头标题,第 3-4 行 行属性为:报表头,第 5 行 行属性为:数据区,第 6 行 行属性为:报表尾,第 7 行 行属性为:分页页脚。

单元格表达式见上图。

到这里数据呈现区域的样子搞定了,接下来,我们看一下查询部分的 name 传递过来后数据呈现区域是怎么接收应用的,我们先看一下怎么定义接收 name。

打开参数设置面板, 新增参数,名称为 name, 数据类型为字符串,参数类型为普通参数,设置后点击确定,到这里我们就建好了参数接收的入口了。

注:此处的参数名称必须与查询部分的 C2 单元格设置的 WEB 变量名保持一致。

接下来就是怎么应用接收到的参数做到模糊查询,此步是需要对查询数据的 sql 语句进行处理的,处理后的数据集 sql 如下

与此同时定义,对应数据集 sql 的参数接入方式,即定义数据集参数,如下:

注:此处的参数名称必须与查询部分的 C2 单元格设置的 WEB 变量名保持一致

如此这个栗子就完成了,最后别忘了将其保存为 3.4.rpx。之后我们就可发布 3.4.rpx 看到图一的效果了。

栗子 2 号

上面栗子 1 号是模糊查询的一种很很很常规的用法,下面我们对栗子 1 号做一丢丢修饰,变身栗子 2 号,目的是为了当编辑框键入“王”时,下拉选项中将所有与之相关的选项筛选出来,以缩短下拉选项较多,通过滚动条寻找某个项使用的时间,如下(图二)

注:这种应用常常需要与查询面板的下拉编辑风格结合使用。

具体操作我们看下面:

首先,给上例 3.4.rpx 增加数据集语句如下:

SELECT EMPNAME FROM 员工

然后 C2 的编辑风格由默认的编辑框修改为下拉数据集,如下

11png

之后,点击“设置”,并在弹出界面中指定数据集、显示列、 数据列同时勾选“允许编辑”,如下

最后,点击确定,保存为 3.4_arg.rpx,栗子 2 号,就完成了。

回顾总结

然后….. 然后….. , 关于模糊查询的另一个简单又实用的栗子再次完美 Ending 了,我们来回顾一下其中不为人知的秘密和操作:

1. 关联查询部分和数据呈现部分

【知识点】查询部分的报表名称 = 数据呈现部分报表名称 + _arg, 比如:3.4.rpx 与 3.4_arg.rpx

2. 筛选条件数据传递

【知识点】关联报表参数值通过参数名称拼配传递,如栗子 1 号的参数 name。

3.sql 中模糊匹配尽可能多的选项

【技巧】like 匹配参数前后使用 % 匹配,% 代表匹配 0~ 多个字符。

至此,关于模糊查询的分享就完了,是不是一不小心,又双叒叕 get 了新技能,以后是不是可以拒绝加班,拒绝做单身汪了,窃喜吧。


详情链接:


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31555597/viewspace-2222174/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 报表集成那点事
请登录后发表评论 登录
全部评论

注册时间:2018-09-20

  • 博文量
    405
  • 访问量
    195658