反饋已提交
網絡繁忙
同樣的範本樣式,同樣的資料源樣式,希望透過網路報表連結不同資料庫,使用同一個範本樣式,在同一個網路報表裏面顯示結果,但資料來源不同。
透過使用程式網路報表所在類需要繼承 com.fr.web.reportlet 這個抽象類,並且需要實現 createReport(ReportletRequest arg0) 這個方法,並傳回報表物件。
對傳回的報表物件設定新的資料集,透過 putTableData(DSName,tableData) 方法,將定義的資料集新增到報表中,進而改變範本資料,DSName 是定義的資料集名例如 ds1,tableData 是呼叫資料集。
以下範例通程式式網路報表將一個範本的內建資料集取代成一個程式資料源資料。
1)建立一個範本,建立一個內建資料集 ds2,將 ds2 中的欄位拖曳到報表中,設計報表樣式,儲存範本為 1.cpt 。如下圖所示:
點選可下載範本:1.cpt
2)如上範本中資料源用了內建資料集,如果要把內建資料集取代成程式資料集,就需要提前準備程式資料源。
程式資料集可以獲取不同資料庫裏面的值,使用者可以透過 Java 編輯器編譯後存成 class 呼叫。這裏使用已經編譯好的簡單程式資料源 ArrayTableDataDemo 取代範本中的內建資料集 ds2,程式資料源 ArrayTableDataDemo 如何準備可參考:簡單程式資料集
編譯程式前,需先建立一個 Java 工程環境,並且需要一個 Java 編輯器,如 Eclipse 或 idea 。
在編輯器工程中匯入 FineReport 工程 JAR 包。包括使用者自己報表工程
%FR_HOME%/lib下的所有的包,
%FR_HOME%/server/lib 下的所有包,
%FR_HOME%/webapps/webroot/WEB-INF/lib下的所有包,
還要引入 JDK 下的 tools.jar。詳細操作可參考:編譯Java程式
在編輯器中編寫 Java 程式 NewDateDemo.java,其中實現讀取範本 1.cpt 後將其資料源換成 ArrayTableDataDemo 程式資料源。
完整程式碼可參見:
注:修改 Java ,重新編譯生成 class ,取代原有 class 後,必須重啟工程才能生效,否則一直都是展示原來的範本。
注意程式碼中要呼叫 ArrayTableDataDemo 類,所以編譯以下程式時,工程中必須提前編譯了 ArrayTableDataDemo類。
https://code.fanruan.com/demo/example/src/release/10.0/src/main/java/com/fr/demo/NewDateDemo.java
Java 程式編寫完成後,在編譯器中編譯 NewDateDemo.java ,編譯透過後,將會在編譯器對應工程檔案儲存路徑下生成 NewDateDemo.class 類檔案。如下圖所示:
點選下載 class 檔案:NewDateDemo.rar
將編譯後的 NewDateDemo.class 放到報表工程 %FR_HOME%\webapps\webroot\WEB-INF\classes\com\fr\demo目錄下。如下圖所示:
啟動伺服器,在瀏覽器中輸入存取報表工程檔案的路徑,如使用本地設計器工程,啟動後在瀏覽器端輸入http://localhost:8075/webroot/decision/view/report?viewlet=com.fr.demo.NewDateDemo便可以預覽報表。如下圖所示:
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙