找回密码
 立即注册

QQ登录

只需一步,快速开始

williamluo

高级会员

97

主题

222

帖子

1063

积分

高级会员

积分
1063

活字格认证

williamluo
高级会员   /  发表于:2017-12-26 17:54  /   查看:4043  /  回复:0
本帖最后由 williamluo 于 2017-12-26 17:55 编辑

有些报表的数据查询条件可能有多个,条件之间还有关联关系,即在用户选定第一个条件之后,第二个条件的可选内容是根据第一个条件的选定值确定的。这种报表数据的多条件查询称为级联查询。
在下面的示例中,有两个查询条件:
【地区】:比如华北、华东等。
【城市】:比如北京、上海等。
用户先用一个下拉框选定一个地区,再从另一个下拉框中选择城市。城市下拉框中列出的城市,是根据地区条件,从数据库查询出来的该地区的城市列表。如下图:
image.png56436461.png

实现这种级联查询的思路如下:
1)创建数据集DataSet1,包含的数据是地区列表。
2)创建参数P1,基于数据集DataSet1,让用户选择地区。
3)创建数据集DataSet2,以参数P1为查询条件,查出某一地区的城市列表。
4)创建参数P2,基于数据集DataSet2,让用户选择城市。
5)创建数据集DataSet3,以参数P2作为查询条件,查出指定城市的业务数据。
6)添加报表元素,比如表格或图表,展示数据集DataSet3中的业务数据。


下面介绍具体的操作步骤。

1)创建数据集DataSet1
为第一级参数准备数据集,查询出所有的【地区】,SQL语句如下:
select DISTINCT 地区 from 客户
image.png178403929.png

2)创建参数P1
第一级参数为用户提供下拉框,以便选择地区。参数定义信息如下图:
image.png80213622.png

为了以下拉框形式显示,指定参数的【可选值】来自数据集,如下图:
image.png188434447.png
其中,【值字段】一般是编码性质的字段,实际传递的参数值就是这个字段的值;【标签字段】一般是名称性质的字段,是显示在下拉框中便于用户识别、选择的。

在本例中,两个字段都选择【地区】字段。

3)创建数据集DataSet2
为第二级参数准备的数据集为城市列表,并且为了实现级联查询的效果,这个城市列表并不包括全国所有的城市,而是要根据第一级【地区】参数,过滤出选定地区的城市。

先定义数据集参数@Parameter1,引用第一级参数P1
image.png763920287.png

再定义数据集的查询,SQL语句如下:
select 城市
from 客户
where 地区 in(@Parameter1);
image.png546088866.png

4)创建参数P2
第二级参数为用户提供下拉框,选择一个城市。参数可选值来自数据集DataSet2
image.png689899902.png

5)创建数据集DataSet3
数据集DataSet3是真正需要展示为报表内容的数据。

先添加数据集参数,将报表参数P2引用过来:
image.png492643126.png

再定义查询语句,使用城市作为过滤条件:
select * from 客户
where 城市 in(@city)
image.png44170226.png

6)添加报表元素
拖放一个表格到设计区,绑定数据集DataSet3的字段,设置适当的格式,如下图:
image.png343816832.png

预览效果如下图:
image.png933593139.png




0 个回复

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