如何实现参数级联查询

Posted shiguangshiyi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何实现参数级联查询相关的知识,希望对你有一定的参考价值。

参数级联查询是查询控件之间的一种互动方式,比如在某个下拉框选定选项后,另一个下拉框里的选项范围会随之变化。润乾报表提供了多种编辑风格,每种编辑风格都有丰富的属性,以此为基础实现参数级联查询也很简单。下面就通过一个例子说明实现过程。

要求:参数模板中的城市根据地区联动,如地区选择华北,后面的城市只能选择华北地区下的城市。如下图示:

技术图片

具体实现步骤如下:

1 连接数据源

使用润乾报表设计器,连接自带数据源 demo

技术图片

2 编辑参数模板

1)新建报表,报表类型选择“参数报表”:

技术图片

2)设置报表数据集 ds1:

技术图片

数据集 SQL:select distinct 货主地区, 货主城市 from 订单

3)编辑报表表达式:

技术图片

设置 B2 的“编辑风格”为下拉数据集,编辑风格设置如下图:

技术图片

同理,设置 D2 下拉数据集如下:

技术图片

在关联过滤表达式中输入:货主地区 ==B2,并设置触发关联过滤单元格为:B2,完成参数联动设置。

在使用下拉数据集时需要注意

●下拉数据集的显示列值不能包含英文逗号和分号。这是因为显示列值对应下拉数据集的选择项,而下拉数据集的选择项之间在系统内部是以英文逗号或分号间隔的,如果某一显示列值包含了逗号或分号,那么系统在处理时就会根据逗号或分号把这一个显示列值拆成两个选择项。

●下拉数据集的单元格不能使用自动换行属性,否则会导致下拉属性不可用。

●下拉数据集的显示列值如果包含回车换行,引号之类的特殊字符,可能会在使用“关联过滤”属性后,对 javascript 产生影响,为了屏蔽这些字符的影响,将“清除特殊字符”选项勾选上即可。

●数据集中如果有不同的数据值对应相同的显示值,那么如果选择重复的显示值,则可以返回对应的数据值;而如果输入重复的显示值,则只能返回这些重复显示值对应的第一个数据值了。

4)设置 web 变量名

为了把参数传递给数据报表,设置 B2 和 D2 格的变量名分别为 area 和 city,前者设置如下图:

技术图片

3 编辑数据报表

数据报表用于接收参数模板中传递的参数,从而进行数据过滤展现。

1)新建报表并设置报表参数,参数名与参数模板的变量名一致:

技术图片

2)设置报表数据集:

技术图片

数据集 SQL 为: SELECT 订单. 订单 ID, 订单. 货主地区, 订单. 货主城市, 订单. 发货日期, 订单. 运货商, 订单. 运货费 FROM 订单 where 货主地区 =? and 货主城市 =?

其中,问号(?)与参数选项卡中的参数对应:

技术图片

3)编辑报表表达式:

技术图片

通过以上步骤即可完成参数联动报表的开发,结合发布报表的页面即可得到开篇中看到的参数联动查询效果。

以上是关于如何实现参数级联查询的主要内容,如果未能解决你的问题,请参考以下文章

本示例演示如何通过Struts2框架提供的标签,简单地实现级联下拉框

hibernate删除操作,一般如何实现

sql中如何实现级联表的操作

使用postgre数据库实现树形结构表的子-父级迭代查询,通过级联菜单简单举例

Mybatis + mysql 实现两级级联的查询

级联在sql中是如何实现的?