當前為10.0版本文檔,更多實例內容將在最新幫助文檔中展現,點選跳轉至 最新版幫助文檔

帶參程序數據集

1. 概述

1.1 應用場景

在實際應用中,可能需要根據表名動态地改變數據源,比如在程序數據集中,通過傳進的表名參數,到數據庫取出對應的表作爲數據源。

1.2 實現原理

FineReport 是通過 AbstractTableData 抽象類來讀取數據源的,所有的數據來源都繼承實現其抽象方法。因此用戶只要實現了 AbstractTableData 抽象類,就可以用自定義類型的數據源,FineReport 報表引擎就能夠讀取定義的數據源作爲報表數據源使用。

自定義 Java 代碼思路爲:

1) 定義數據表結構

2)實現 AbstractTableData 抽象類

3)将獲取到的數據放入到定義的表中

4)獲取數據庫連接

5)釋放一些資源,将上次查詢的結果釋放掉

2. 示例

示例将以 FRDemo 數據連接爲例,參數爲數據表名,不同的參數值,程序數據集将獲取到 FRDemo 中不同的表數據。

2.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 編寫Java文件

在編譯器中編寫 Java 文件 ParamTableDataDemo.java, 完整代碼可參見:

注:若 java 文件包位置不同,需要手動引入 AbstractTableData,即代碼中加入 import com.fr.data.AbstractTableData; 

https://code.fanruan.com/demo/example/src/release/10.0/src/main/java/com/fr/data/ParamTableDataDemo.java

2.3 編譯Java文件

Java 文件編寫完成後,在編譯器中編譯 ParamTableDataDemo.java ,編譯通過後,将會在對應工程下生成ParamTableDataDemo.class 類文件。

2.4 導入class文件

将編譯後生成的 ParamTableDataDemo.class 類文件複制到 %FR_HOME%\webapps\webroot\WEB-INF\classes\com\fr\data 工程目錄下。如下圖所示:

點擊下載 class 文件:ParamTableDataDemo.rar

2.5 配置程序數據集

1)新建普通報表,數據集管理面板新建程序數據集,選擇我們已經定義好的 class 文件,如下圖所示:

Snag_6597dcb.png

2)添加默認參數,參數名爲tableName,如下圖所示:

Snag_65bb471.png

2.6 使用程序數據集

1)選中新建的程序數據集,點擊預覽按鈕,輸入參數值,如下圖所示:

Snag_65dd3b7.png

2)查詢出的銷量表如下圖所示,将字段拖入報表中即可用作報表數據。

Snag_65eee7e.png

注:如果預覽不出數據,請确認代碼段裏面定義數據庫連接時 URL 的地址是否正确,如下圖所示:

Snag_66158d7.png

3. 注意事項

3.1 決策報表中程序數據集參數名沖突

問題描述:

決策報表中創建了多個程序數據集,每個數據集的參數名都是一樣的,只是參數值不同,在PC端預覽時出現展示的數據都是相同的。

原因分析:

決策報表中如果多個程序數據集的參數名一樣,會産生沖突。

解決方案:

決策報表中程序數據集的名稱不能相同,如果存在相同的名稱需要修改成不同的。

附件列表


主題: 原簡體文檔
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽

文 檔回 饋

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉

反饋已提交

網絡繁忙