反饋已提交

網絡繁忙

帶參程式資料集

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;

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

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 的地址是否正確、資料連結名稱是否正確。如下圖所示:

3. 注意事項

3.1 決策報表中程式資料集參數名衝突

問題描述:

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

原因分析:

決策報表中如果多個程式資料集的參數名一樣,會產生衝突。

解決方案:

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


附件列表


主題: 二次開發
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

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

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

不再提示

10s後關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙