在Java报表软件中,选择特定的参数后,会返回我们要查询的数据,然而假如没有输入参数值,我们却仍需要返回数据时该怎样处理呢?以下就用FineReport报表软件的一个例子实现这种参数为空时返回所有数据的效果,介绍数据源参数与报表参数的实现方法。
1.数据源参数实现参数为空选出全部
1.1 定义数据源
新建名为ds1的数据库查询,SQL语句
SELECT * FROM StScore WHERE 1=1
${if(len(classno) == 0,""," and ClassNo = '" + classno + "'")}
${if(len(studentno)==0,""," and StudentNo = " + studentno )}
说明:
where 1=1表示条件永真,防止没有之后的参数条件时,where多出而导致出错;
len(classno) == 0表示参数为空;
${if(len(classno) == 0,""," and CLASSNO = '" + classno + "'")}表示当参数classno为空时,就返回空字符串,否则返回查询条件and CLASSNO = ' classno' 。
1.2 模板设计
报表制作模板定义如下
绑定数据列
1.3 参数设计界面
1.3.1 打开参数设计界面,按照下图安排参数的位置
1.3.2 控件设置
定义参数classno控件类型为下拉框,其他定义如下图
定义参数studentno控件类型为下拉框,并以classno的值进行关联查询,定义如下
说明:动态SQL语句SELECT * FROM STSCORE where ClassNo = '${classno}'表示直接从数据表STSCORE选取符合参数classno的数据
1.4 保存并预览
点击设计器上的分页预览,页面如下图,不输入参数值,直接点击查询按钮,返回全部数据:
2.报表参数实现参数为空选出全部
2.1 定义数据源
新建名为ds1的数据库查询,SQL语句:SELECT * FROM StScore
2.2 模板设计、绑定数据列,步骤与1.4中完全相同,此处不用赘述
2.3 定义报表参数
在菜单栏选择报表|报表参数,打开报表参数面板,添加classno和studentno两个参数,默认值选择字符串形式,并留空,即表示默认值为空值,如下图
2.4 添加过滤
选中A2单元格,添加过滤条件
说明:其中if(len($classno)==0,nofilter,$classno)表示若参数classno为空,则不过滤,否则返回参数值。
2.5 参数设计界面
同步骤1.3。
2.6 保存并预览
文章转自:http://blog.vsharing.com/fanfanzheng/A1303633.html