1. 概述
1.1 應用場景
在實際應用中,可能需要根據表名動態地改變資料源,比如在程式資料集中,透過傳進的表名參數,到資料庫取出對應的表作為資料源。
1.2 實現原理
SimpleTableData 抽象類中定義了資料源相關的屬性和方法,使用者如果想要自訂程式資料集,可以在定義類的時候繼承SimpleTableData 類,這樣就可以使用其上的方法定義程式資料源,定義好後 FineReport 報表引擎就能夠讀取定義的資料源作為報表資料源使用。
2. 範例
範例將以 FRDemoTW 資料連結為例,參數為資料表名,不同的參數值,程式資料集將獲取到 FRDemoTW 中不同的表資料。
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 定義程式資料源
2.2.1 編寫Java檔案
在編輯器中編寫 Java 檔案 SimpleParamTableDataDemo.java, 完整程式碼可參見:
注:建議檔案的包名路徑和如下程式碼中一致,若不一致,要保證在 2.3 節 %FR_HOME%webapps/webroot/WEB-INF/classes 工程路徑下有對應的資料夾。且程式碼中需要手動引入 SimpleTableData,即程式碼中加入 import com.fr.data.SimpleTableData;
2.2.2 編譯Java檔案
Java 檔案編寫完成後,在編譯器中編譯 SimpleParamTableDataDemo.java ,編譯透過後,將會在編譯器對應工程檔案儲存路徑下生成 SimpleParamTableDataDemo.class 類檔案。如下圖所示:
2.2.3 匯入class檔案
將編譯後生成的 SimpleParamTableDataDemo.class 類檔案複製到 %FR_HOME%\webapps\webroot\WEB-INF\classes\com\fr\data工程目錄下。如下圖所示:
注1:遠端設計時,本地設計器和遠端伺服器的工程下都需要放置程式資料集對應的 class 檔案。
點選下載 class 檔案:SimpleParamTableDataDemo.rar
2.3 建立程式資料集
1)建立普通報表,資料集管理面板建立程式資料集,選擇我們已經定義好的 class 檔案,如下圖所示:
2)新增預設參數,參數名為 tableName,如下圖所示:
2.4 使用程式資料集
1)選中建立的程式資料集,點選預覽按鈕,輸入參數值,如下圖所示:
2)查詢出的銷量表如下圖所示,將欄位拖入報表中即可用作報表資料。
注:如果預覽不出資料,請確認程式碼段裏面定義資料庫連結時 URL 的地址是否正確、資料連結名稱是否正確。如下圖所示: