历史版本21 :从数据库读取报表 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

保存模板至数据库 中,可以将 cpt 模板保存入库,当需要访问报表时,便可以从数据库中根据报表名称取出报表。不在存为模板点击预览访问,而是自定义 Java 类将其转换为网络报表,在 Web 浏览器中进行访问。

例如 保存模板至数据库 中 将 GettingStarted.cpt 存在数据库中,通过本文 2.1 示例的方法转换后,在浏览器中输入:

http://localhost:8075/webroot/decision/view/report?viewlet=com.fr.demo.ReadFromDatabase&cptname=GettingStarted.cpt就可以直接在浏览器端访问模板。

注:阅读本文时,请先阅读:保存模板至数据库

2. 示例编辑

读取决策报表 frm 和读取普通报表 cpt 的实现方法基本一致,只是自定义 Java 类文件不同。

2.1 读取 cpt 报表

2.1.1 准备编译环境

编译程序前,需先创建一个Java工程环境,并且需要一个Java 编辑器,如 Eclipse 或 idea 。

在编辑器工程中导入 FineReport 工程 JAR 包,包括安装工程包 %FR_HOME%/lib 下的所有的包,%FR_HOME%/server/lib 下的所有包,%FR_HOME%/webapps/webroot/WEB-INF/lib下的所有包,还要引入 JDK 下的 tools.jar。详细操作可参考:编译Java程序 2.2.1 节。

2.1.2 新建读取报表类

在 Java 编辑器中新建 Java 文件 ReadFromDatabase.Java,继承 com.fr.web.Reportlet 抽象类,并实现 public Report createReport(ReportletRequest reportletRequest) 方法。

完整代码见链接:ReadFromDatabase.java

代码中 SQL 查询中涉及到的 report、cptname、cpt 分别为存储模板的数据表名,字段名,模板文件。如下图所示:

2.1.3 编译生成类文件

在 Java 编译环境中编译2.2.2.节中的 Java 文件,生成 ReadFromDatabase.class 类文件。

将编译后的 ReadFromDatabase.class 类放至应用目录%FR_HOME%/webapps/webroot/WEB-INF/classes/com/fr/demo/下。

2.1.4 发布并访问

启动报表服务器,在浏览器中输入地址:

注:URL 路径中 cptname 将传递模板名称到类文件,必须和类文件中的参数名称一致。

http://localhost:8075/webroot/decision/view/report?viewlet=com.fr.demo.ReadFromDatabase&cptname=GettingStarted.cpt即可看到报表预览效果。如下图所示:

222

2.2. 读取 frm 报表

2.2.1 准备编译环境

参考 2.1.1节。

2.2.2 新建读取报表类

在 Java 编辑器中新建 Java 文件:

      注:ReadfrmFromDatabase.java 文件不支持带参数的模板,带参数的模板预览时,点击查询后会报错空指针。

代码中 SQL 查询中涉及到的 report、frmname、frm 分别为存储模板的数据表名,字段名,模板文件。如下图所示:

2.2.3 编译生成类文件

参考 2.1.3 节。

2.2.4 发布并访问

启动报表服务器,在浏览器中输入地址:

注:URL 路径中 reportname 将传递模板名称到类文件,必须和类文件中的参数名称保持一致。

http://localhost:8075/webroot/decision/view/form?viewlet=com.fr.demo.ReadfrmFromDatabase&reportname=Form5.frm即可看到到报表预览效果。如下图所示:

3.png