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