在實(shí)際應(yīng)用中,可能需要根據(jù)表名動(dòng)態(tài)地改變數(shù)據(jù)源,比如在程序數(shù)據(jù)集中,通過傳進(jìn)的表名參數(shù),到數(shù)據(jù)庫取出對(duì)應(yīng)的表作為數(shù)據(jù)源。例如,F(xiàn)ineReport是通過AbstractTableData抽象類來讀取數(shù)據(jù)源的,而上述所有的數(shù)據(jù)來源都繼承實(shí)現(xiàn)其抽象方法,因此用戶只要實(shí)現(xiàn)了AbstractTableData抽象類,也就可以用自定義類型的數(shù)據(jù)源了(程序數(shù)據(jù)集),這是帶參程序數(shù)據(jù)集連接的方法。
FineReport報(bào)表引擎就能夠讀取定義的數(shù)據(jù)源作為報(bào)表數(shù)據(jù)源使用,原理就是繼承AbstractTableData。
1、定義參數(shù)
定義一個(gè)參數(shù),并定義數(shù)據(jù)表結(jié)構(gòu),代碼如下:
2、設(shè)置數(shù)據(jù)
將數(shù)據(jù)放入到定義的表中,代碼如下:
3、完整的數(shù)據(jù)集代碼
整的帶參程序數(shù)據(jù)集的代碼如下
編譯ParamTableDataDemo.java ,將生成的ParamTableDataDemo.class類文件拷貝到報(bào)表工程/WEB-INF/classes目錄下。由于該類是在com.fr.data包中的,因此最終應(yīng)該將該類放在/WEB-INF/classes/com/fr/data下面。此時(shí)該程序數(shù)據(jù)源便定義好了。
4、配置程序數(shù)據(jù)集
新建報(bào)表,在報(bào)表數(shù)據(jù)集中新建程序數(shù)據(jù)源,選擇我們定義好的程序數(shù)據(jù)集,如下圖,名字可以自定義,如divtable
5、使用程序數(shù)據(jù)集
配置好程序數(shù)據(jù)源后便可以使用定義的程序數(shù)據(jù)集了,選中該數(shù)據(jù)集點(diǎn)擊預(yù)覽
按鈕,即可以輸入表名動(dòng)態(tài)地獲取相應(yīng)的數(shù)據(jù)表,并制作模板,如下圖
如果預(yù)覽不出數(shù)據(jù),請(qǐng)確認(rèn)代碼段里面定義數(shù)據(jù)庫連接時(shí)URL的地址是否正確。
可以看到,STSCORE表中的數(shù)據(jù)已經(jīng)提取至程序數(shù)據(jù)集表中,像其他類型的數(shù)據(jù)集一樣,可以通過拖拽方法實(shí)現(xiàn)單元格數(shù)據(jù)列綁定。
posted on 2016-08-01 11:16 喝水居然長肉 閱讀(99) 評(píng)論(0) 編輯 收藏
Powered by: BlogJava Copyright © 喝水居然長肉