在使用参数进行过滤时,选择某个参数值后就会根据选择的值进行过滤,但是如何实现如下图效果即不输入参数值时能够查询处数据表中的全部值呢?下面我们就以java图表报表FineReport为平台进行介绍。

前期准备工作(包括相关工具或所使用的原料等)java图表报表FineReport7.1.1大小:148.2M 适用平台:windows/linux 方法一:通过数据集参数
打开模板
修改数据集
将数据集修改为:SELECT * FROM 订单 where 1=1 ${if(len(area)==0,"","and 货主地区='" + area + "'")} ${if(len(province)==0,"","and 货主省份='" + province + "'")}。
注:where 1=1表示条件永真,防止没有之后的参数条件时,where多出而导致出错;len(area)==0表示参数area为空;货主地区='"+area+"'表示取参数值。
${if(len(area)==0,"","and 货主地区='" + area + "'")} 表示若参数area为空就不进行过滤,若不为空则货主地区等于参数值。
修改参数界面
将参数界面修改为如下样式:

参数控件设置
设置参数area的控件类型为下拉框,数据字典选择数据库表,数据库为FRDemo,数据表为订单,实际值与显示值的列名都选择货主地区。
设置参数province的控件类型也为下拉框,数据字典为数据库表,数据库为FRDemo,数据表为订单,实际值与显示值的列名都选择货主省份。
效果查看
点击分页预览,不输入参数值后,直接点击查询,效果如上图。
方法二:通过报表参数
打开模板
修改数据集
将数据集修改为查询订单表的数据即:SELECT * FROM 订单。
报表参数设置
点击模板>报表参数,添加两个报表参数,分别为area和province。
过滤条件设置
点击A2单元格,选择格子上方的过滤按钮,给A2单元格增加如下图所示的过滤条件:
注:nofilter表示不过滤,if(len($area)==0,nofilter,$area)表示参数area为空,就不过滤,若不为空则以参数值进行过滤;if(len($province)==0,nofilter,$province)意义相同。

效果查看
点击分页预览,不输入参数值后,直接点击查询效果如上图。
原作者:FineReport经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
