在用Java报表工具查询数据时,经常会遇到查询条件不定的情况,例如参数过滤列是动态变化的:有时想用A列进行过滤,有时想用B列进行过滤。在FineReport报表中,可以将整个查询条件作为参数传入sql中,查询出对应的数据,定义形式如:SELECT * FROM [TableName] ${Condition},即把整个where语句作为动态的参数。
1. 新建报表
2. 定义数据集
新建数据库查询ds1,输入SQL:SELECT * FROM STSCORE ${Condition};
3. 模板设计
如下设计报表
数据列设置如下表
[td=1,1,60]单元格
[td=1,1,60]数据集
[td=1,1,96]数据列
[td=1,1,309]属性
[td=1,1,60]A4
[td=1,1,60]ds1
[td=1,1,96]ClassNo
[td=1,1,309]默认
[td=1,1,60]B4
[td=1,1,60]ds1
[td=1,1,96]Sex
[td=1,1,309]默认
[td=1,1,60]C4
[td=1,1,60]ds1
[td=1,1,96]Name
[td=1,1,309]默认
[td=1,1,60]D3
[td=1,1,60]ds1
[td=1,1,96]Course
[td=1,1,309]从左向右扩展,其余默认
[td=1,1,60]D4
[td=1,1,60]ds1
[td=1,1,96]Grade
[td=1,1,309]汇总求和,其余默认
4. 定义参数界面
点击参数设计,参数界面布局如下
5. 保存模板并预览
保存模板,点击设计器分页预览,输入动态的查询条件如:Where ClassNo='Class1',便可查询出数据,效果如下图:
文章转自:http://blog.vsharing.com/fanfanzheng/A1298397.html