1 概述
当参数面板中有多个控件时,希望后一个控件的选项根据前一个控件选择的值变化,尤其使用在控件选项之间有层级关系的场景中,那么就需要使用参数联动功能。
参数联动支持两种模式:SQL嵌套模式和数据源传参模式,该文将以“SQL嵌套模式”进行讲解,另外一种方式请参考“数据源传参模式”章节说明。
2 实现原理
本模式仅支持控件数据来源是数据库。
其基本原理为控件被联动是,控件的取数SQL是在原SQL基础上嵌套一层查询并增加控件联动上设置的联动条件,并附加在模板数据上设置的排序规则。
例如,原始SQL为:
select hybm as 行业编码,hy as 行业名称 from bm_hy where CJBJ=2
被联动后,控件取数的SQL为:
select PROC_QUERY.* from (select hybm as 行业编码,hy as 行业名称, HYBM_SJ as 上级行业编码 from bm_hy where CJBJ=2) PROC_QUERY where PROC_QUERY.上级行业编码=10000
本模式存在的一些缺陷:
1) 数据库以外的数据来源不支持;
2) 数据库存储过程不支持;
3) 因为嵌套的原因,某些数据库中,原始SQL中的排序会失效,因此,需要在对应的模板数据上重新设置排序规则;
要解决以上缺陷带来的问题,可使用“数据源传参”模式。
3 示例效果
以“行业大类”和“行业小类”参数联动为例,“行业小类”选项需跟随”行业大类”所选值而变动,如下图:
4 制作步骤
4.1 参数数据源准备
1)创建参数“行业大类”的数据源,如下图:
2)创建参数“行业小类”的数据源,如下图:
4.2 报表准备
制作一张简单的清单报表,将对应的报表数据源和参数数据源添加到报表数据中,如下图:
4.3 定义参数
定义年份、月份、行业大类和行业小类参数均为下拉框,并选择对应的数据源。
4.4 参数联动设置
必须要挂接模板数据的控件才可以设置联动,如下拉框、列表框、树、表格列表等。
联动设置主要就是通过设置关联条件过滤出被联动参数的值。
联动需要在被联动的参数上进行设置,示例是行业小类跟随行业大类的数据被联动,因此,要在“行业小类”上设置联动,过滤条件是“上级行业编码=行业大类”,设置如下图:
最后编辑:fancy 更新时间:2024-10-31 17:13
