Chinaunix首页 | 论坛 | 博客
  • 博客访问: 98219
  • 博文数量: 56
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 340
  • 用 户 组: 普通用户
  • 注册时间: 2018-09-19 14:48
个人简介

下雨了,不想打伞

文章分类
文章存档

2019年(12)

2018年(44)

我的朋友

分类: 敏捷开发

2018-09-20 16:57:01

在数据查询系统中,我们常常会遇到精准查询和模糊查询。我们知道,对于关系数据库,使用精准查询可以直接在 sql 里面使用“where 字段 = 参数值”来过滤对应的数据,而要实现模糊查询,我们使用的就是 like 的形式。那么,在报表里面该如何使用 like 方式实现模糊查询来过滤数据呢?

下面,我们结合润乾报表自带的 hsql 数据库中的客户表,来做一个模糊查询的示例。

例如:在下拉框中通过模糊查询显示所有姓名里面带有“王”字的联系人,当用户选择后进行精准查询。并且结果列表在第一次展现全部数据。如下图所示:

这是一种常见而且体验不错的报表需求,我们该如何实现呢?

操作非常简单的哦,下面我们一起来动手操作一下吧 ~

第一步:连接数据源

先连接我们自带的 demo 数据库,别忘了先启动示例数据库哦 ~

第二步:新建数据集

1)Sql 语法为:SELECT * FROM 客户 WHERE 客户. 联系人姓名  like ?  or ? is  null(因为我们想第一次查询前在结果列表中展现全部数据,所以我们需要写上 or ? is null ,也就是参数为空的时候查询全部数据。)

2)设置数据集的参数。格式为 ”%”+ 参数名称 +”%”。 (注意:我们对同一个字段“联系人姓名”写了两个问号,所以需要写两个相同的参数。)

如下图所示:


第三步:设计报表并在报表—参数增加跟数据集名称相同的参数:

第四步:保存报表,并将报表名称设置为 test.rpx

第五步:建立参数模板

1) 新建数据集,只取出来客户表中的联系人姓名字段即可。


2) 为 B1 单元格设置单元格编辑风格和 web 变量名称

第六步:保存参数模板,并设置报表名称为   test_arg.rpx

(注意:参数模板的名称要跟主报表的名称一致,并且加上 _arg 。然后将参数模板保存在和主报表相同的目录下面)

第七步:启动 tomcat,发布报表。

展现效果为:

试验一下,我们在单元格输入一个“王”字,可以看到,下拉框中会对应显示所有姓名中包含“王”的联系人。

直接点击查询展现效果为:

或者是输入“王”之后,选择下拉清单里面的任何一个联系人,点击查询即可过滤数据。

以上就是我们在报表中模糊查询的使用方法,有没有很简单?有需求的小伙伴们赶紧试试看吧 ~~

嘘 ~~ 最后告诉大家一个小秘密,由于数据库驱动的问题,如果要查询的联系人姓名字段中有 null 数据,在第一次查询全部数据时可能会查不到全部的数据,也就是为空的数据无法显示。这时,我们需要将模糊查询的数据集的参数改为如下格式:(第二个参数不用百分号拼接的方式去写,其他不需要改动)。

阅读(735) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~