反馈已提交
网络繁忙
使用参数进行报表数据查询时,如果控件中参数值为空(控件中不输入参数值),点击查询后,不会显示任何报表数据。如下图所示:
我们需要实现的效果是,当控件中参数值为空,点击查询后,会显示报表中的全部数据。即在没有筛选条件的时候,显示报表所有内容,相当于不选值就不过滤。
如下图所示:
可通过使用模板参数和数据集参数实现报表查询,同时修改过滤条件和数据集定义方式来实现参数为空选择全部。
新建数据集ds1,输入数据库查询语句SELECT * FROM 订单,查询出订单表中的所有数据。如下图所示:
1)定义一个模板参数「货主地区」,设置其默认值为「华北」。如下图所示:
2)编辑参数面板,点击「全部添加」,设置下拉框控件的数据字典为订单表中的数据列货主地区。如下图所示:
按照下面表格中的说明,设计报表的样式。如下表所示:
给单元格 A2 添加数据过滤条件。双击 A2 单元格,在弹出的数据列对话框中选择过滤,添加一个普通条件,让数据列货主地区等于公式if(len($货主地区)==0,nofilter,$货主地区),点击增加,点击确定,即通过添加过滤条件的方式实现参数为空选全部的效果。如下图所示:
注:nofilter 表示不过滤,if(len($货主地区)==0,nofilter,$货主地区) 表示参数「货主地区」为空,就不过滤数据,若不为空则以参数值进行过滤。
在定义数据集参数时给它设置条件来实现参数为空选全部的效果,新建数据集 ds1,输入数据库查询语句:SELECT * FROM 订单 WHERE 1=1 ${if(len(area) == 0,"","and 货主地区 = '" + area + "'")} ,此时数据集参数为「area」,设置参数默认值为华北,如下图所示:
公式中语句的注释如下:
where 1=1 表示条件永真,防止没有参数条件时,where 后面没有有效内容导致出错。
len(area)==0 表示参数「area」为空。
"and 货主地区='"+area+"'" 中间的「area」表示取参数值,'+' 为字符串拼接符号。
${if(len(area) == 0,"","and 货主地区 = '" +area + "'")} 表示:
当参数「area」为空时,查询语句相当于:SELECT * FROM 订单
当参数「area」不为空时,查询语句相当于:SELECT * FROM 订单 WHERE 1=1 and 货主地区='${area}'
1)编辑参数面板,点击「全部添加」,设置下拉框控件的数据字典为订单表中的数据列货主地区。如下图所示:
2)修改标签控件的显示值为货主地区:。如下图所示:
保存报表,分页预览查看报表。如下图所示:
App 与 HTML5 端效果相同,如下图所示:
问题描述
按上述文中设置完成后,当参数为空时,点击查询会展示所有的数据,如何设置预览时就显示全部的数据?
解决方案
按问按上述文中设置完成后,只需要取消勾选组件设置中的点击查询前不显示报表内容即可,如下图所示:
1)示例一
已完成模板可参见:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Parameter\下拉框模板参数为空选全部.cpt
点击下载模板:下拉框模板参数为空选全部.cpt
2)示例二:
已完成模板可参见:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Parameter\下拉框数据集参数为空选全部.cpt
点击下载模板:下拉框数据集参数为空选全部.cpt
售前咨询电话
400-811-8890转1
在线技术支持
请前往「服务平台」,选择「在线支持」
热线电话:400-811-8890转2
总裁办24H投诉
热线电话:173-1278-1526
文 档反 馈
鼠标选中内容,快速反馈问题
鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。
不再提示
10s后关闭