1. 概述
1.1 预期效果
参数最主要的应用就是结合控件,实现数据筛选过滤。如下图所示:
那如何将参数和控件结合到一起,实现参数过滤呢?
1.2 实现思路
首先必须明确,参数和控件并非一个概念,但两者在绑定的情况下,就可以相互传值,参数值即为控件值,控件值即为参数值,所以就会产生参数和控件看起来是一样的错觉。
实现数据筛选过滤,即先将参数和控件绑定,控件选择值后传递给参数,报表根据参数值过滤出数据。参数和控件各司其职,控件负责选择值、参数负责过滤数据。
根据定义方法,参数可以分成数据集参数和模板参数,所以实现数据筛选查询,也对应两种方法,数据集参数方法和模板参数方法。
2. 实现方法
2.1 数据集参数
数据集参数 是定义在 SQL 语句中的参数,即在 SQL 查询数据时,就实现了数据的过滤。如果你的数据是从数据库查询获得,推荐使用此方法。
2.1.1 定义数据集参数
通过数据集参数实现数据筛选过滤时,首先要定义一个数据集参数。如:SELECT * FROM 销量 where 地区 = '${area}' 就定义了一个数据集参数 area。如下图所示:
2.1.2 添加过滤控件
定义好数据集参数后,如果要在页面实现数据过滤查询,就必须要有一个控件。根据想要的过滤形式选择控件即可,这里我们选择一个「下拉框」控件。
如下图所示,在参数面板添加了一个下拉框控件,并为为其绑定 数据字典 ,即设置「下拉框」的选项值为「销量」表的「地区」字段。如下图所示:
注意:添加控件后,一般需要添加一个「查询按钮」,直接从控件区域拖拽添加到参数面板即可。
2.1.3 绑定参数和控件
以上准备好了控件和参数,只要两者绑定即可实现数据过滤。参数和控件的绑定方式非常简单,名称一致即为绑定,这里参数值已经确定,所以只需要将控件名称改为参数值即可。如下图所示:
但一般情况下添加了参数后,参数面板默认会显示出添加的参数,方便用户将其与控件绑定。如下图所示:
点击参数即可将其添加在参数面板上,点击添加后默认添加一组过滤控件,分别为一个「标签控件」、一个「查询按钮」和一个未定义控件,用户根据需要给未定义控件选择类型即可。如下图所示:
自动添加后,控件名和参数名是一致的,即已经实现了绑定,就不需要再修改名称了。但控件还需要设置数据字典,具体方法参考 数据字典。
2.1.4 设计报表实现过滤
将数据集拖到报表中,设计报表,如下图所示:
保存模板,点击预览,area 控件选择不同的值,也就对应着 area 参数为不同的值,area 参数值不同,数据 SQL 语句就不同,则查询出的数据也就不同,这样就实现了数据过滤查询。如下图所示:
2.2 模板参数
模板参数 实现数据筛选查询和数据集参数不同,数据集参数是在从数据库中查询数据时就实现了过滤,而模板参数是将数据列添加在单元格中后再过滤,适合内置数据集或者文件数据集使用。
2.2.1 定义模板参数
这里相当于提前定义好一个参数,参数可以是 模板参数、全局参数、系统参数。区别在于全局参数所有模板都可以用,系统参数不用再定义。若你定义了一个全局参数想要实现过滤,或者想要通过系统参数过滤,也可以参考此方法。
定义一个模板参数 area。如下图所示:
2.2.2 添加过滤控件
定义好参数后,如果要在页面实现数据过滤查询,就必须要有一个控件。根据想要的过滤形式选择控件即可,这里我们选择一个「下拉框」控件。
添加方法同 2.1.2 节。
2.2.3 绑定参数和控件
以上准备好了控件和参数,只要两者绑定即可实现数据过滤。绑定方法参考 2.1.3 节。
注:系统参数默认不会出现在参数面板中,用户不能通过快捷方式添加。
2.2.4 添加过滤条件
新建数据集,SQL 语句为:SELECT * FROM 销量,即默认查询销量表中所有数据。将数据列添加到单元格中,并设置报表样式,如下图所示:
这时默认是所有数据,如果要实现查询,就必须添加过滤条件,双击 A2 单元格,为其添加过滤条件。过滤条件为地区这一列的值等于参数 area。如下图所示:
这样就实现了过滤,保存模板,点击预览,area 控件选择不同的值,也就对应着 area 参数为不同的值,area 参数值不同,报表中过滤条件就不同,则查询出的数据也就不同,这样就实现了数据过滤查询。如下图所示: