阅读提示:

文章中与FineReport软件使用的相关内容,基于软件的V7.0旧版本编写,不代表软件最新的使用方式。

FineReport最新版免费试用:https://www.finereport.com/product/active

FineReport最新版使用教程:https://help.fanruan.com/finereport/

Java报表工具FineReport拥有参数联动功能。所谓报表参数联动指的是每一个后面的参数下拉框的值会根据前一个参数的值改变而改变。如下图中,参数studentno跟随上一个参数classno的值而变动,而参数grade又跟随studentno的值而变动,效果如下:

如何用Java调帆软报表 finereport java heap space_报表工具

下面看一下用Java报表工具FineReport实现这种参数联动效果的过程

1.报表表样设计

如何用Java调帆软报表 finereport java heap space_控件_02

2.参数设置

2.1 报表参数设计

打开菜单栏中报表|报表参数,清除之前的参数,新定义三个名为classno、studentno、grade的参数,如图:

如何用Java调帆软报表 finereport java heap space_Java_03

Java报表工具FineReport参数定义

2.2 参数设计

2.2.1 打开报表参数设计面板,按照下图安排参数的位置

如何用Java调帆软报表 finereport java heap space_控件_04

Java报表工具FineReport参数面板

2.2.2 控件设置

右击classno的控件,选择控件设置,选择下拉框类型编辑器,控件名选择classno

定义栏选择数据查询的数据集ds1,预览可以看到我们需要的参数可选值位于第1列,因而在实际值和显示值处都选择列1

如何用Java调帆软报表 finereport java heap space_finereport使用java_05

Java报表工具FineReport参数控件1

右击studentno的控件,选择控件设置,选择下拉框类型编辑器,控件名选择studentno

定义栏选择动态SQL,语句为SELECT * FROM STSCORE WHERE CLASSNO=’${classno}’,其中参数外的单引号表示参数classno为字符串形式。

CLASSNO=’${classno}’ 限制了此处参数studentno是在上一个参数classno值的已定基础上进行筛选,实现了参数联动。

预览可以看到我们需要的参数可选值位于第2列,因而在实际值和显示值处都选择列2

如何用Java调帆软报表 finereport java heap space_如何用Java调帆软报表_06

Java报表工具FineReport参数控件2

右击grade的控件,选择控件设置,选择下拉框类型编辑器,控件名选择grade

定义栏选择动态SQL,语句为SELECT * FROM STSCORE WHERE STUDENTNO=${studentno},参数外没加单引号是因为studentno并不是字符串形式。

STUDENTNO=${studentno}限制了此处参数grade是在上一个参数studentno值的已定基础上进行筛选,实现了参数联动。

我们需要的参数可选值位于第6列,因而在实际值和显示值处都选择列6

如何用Java调帆软报表 finereport java heap space_finereport使用java_07

Java报表工具FineReport参数控件3

3. 添加过滤

切换到模板界面,由于单元格D2中的数据列GRADE有左父格A2和上父格D1,所以需要给A2和D1都添加过滤条件。

3.1 A2添加过滤条件

给A2添加如下2个过滤条件:

如何用Java调帆软报表 finereport java heap space_控件_08

Java报表工具FineReport过滤设置1

3.2 D1添加过滤条件

给D1添加如下2个过滤条件:

如何用Java调帆软报表 finereport java heap space_控件_09

Java报表工具FineReport过滤设置2

4. 预览并保存

如何用Java调帆软报表 finereport java heap space_如何用Java调帆软报表_10

将报表模板保存为

%FR_HOME%WebReportWEB-INFreportletsdocTutorialParameterparalinkage.cpt