1. 概述编辑
1.1 预期效果
当文本域参数值为多个时,如何设置报表的过滤条件呢?如下图所示,当文本域参数有多个订单 ID 时,查询结果为多个订单ID 的信息。
1.2 实现思路
采用报表的过滤功能设置过滤条件,或通过 SQL 语句过滤。
2. 示例-过滤条件过滤编辑
2.1 设计报表
1)新增模板,新增数据集 ds1,SQL 语句为:SELECT * FROM [订单]
2)将数据集 ds1 的字段拽入报表单元格中,设计表格样式。如下图所示:
2.2 添加文本域控件
在参数面板中,添加「文本域控件」和「查询按钮」,「文本域控件」控件名称为 AK,如下图所示:
2.3 添加过滤
在 A2 单元格设置过滤条件,选择公式,公式内容为:INARRAY($$$, split($AK, "\n")) > 0。如下图所示:
公式作用为匹配当前单元格内容是否为文本域控件中输入的其中一个值。
2.4 效果预览
保存模板后,点击「分页预览」,在「文本域控件」中输入订单 ID,PC 端效果如下图所示:
App 及 HTML5 效果如下图所示:
3. 示例-数据集过滤编辑
1)参考 2.1 节设计报表样式。
2)参考 2.2 节添加「文本域控件」和「查询按钮」。
3)修改 ds1 数据中 SQL语句,使得数据在数据集中过滤。
SQL 语句为:SELECT * FROM [订单] where 1=1 ${if(len(AK)>0," and 订单id in ('" +replace(AK, "\n","','")+ "')","")}
SQL 语句通过 in 查询文本域控件中以换行输入的订单 ID 的数据。
4)保存报表后,预览效果如 2.4 节所示。
4. 模板下载编辑
已完成模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Parameter\MultiValue\文本域控件实现多值查询-过滤条件.cpt
%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Parameter\MultiValue\文本域控件实现多值查询-数据集.cpt