FineReport報表天然支持多數據源報表。一張報表中可以定義多個數據集,分別取出需要的數據庫表,所取的數據庫表甚至可以來自於不同的數據庫。下面就通過表格製作軟件FineReport來簡單介紹一下。
工具/原料
表格製作軟件FineReport7.1.1
大小:148.2M 適用平臺:windows/linux
簡單多源報表
描述
多數據源,就是在同一張報表當中,顯示的數據來自於多個不同的表或不同的庫。
如下圖一張簡單的多數據源報表,左側藍色部分來自於銷量表,右側黃色部分來自銷售總額表,即數據來自於兩張不同的數據庫表:
打開單個數據源報表
打開報表%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Primary\CrossReport\Cross.cpt。
新增數據源
再新增一個數據集ds2,其SQL語句為SELECT * FROM [銷售總額]。ds2數據集與ds1數據集都有一個銷售員字段。
綁定數據列
如下圖,將ds2中銷售總額數據列拖拽到單元格中,並設置父格為銷售員所在單元格,使銷售總額跟隨銷售員而擴展:
設置過濾
此時設計器預覽,效果如下:
可以看到,擴展出來的每一個銷售員下,都重複顯示銷售總額字段的所有數據。
雖然銷售總額的父格為銷售員數據列,由於他們來自於不同的數據集,因此銷售總額不會將父格銷售員作為條件進行篩選,即不存在附屬關係。
我們需要銷售總額與銷售員一一對應,就需要設置過濾條件,將這兩個數據集的數據通過銷售員關聯起來。
選中銷售總額所在單元格,設置過濾,添加過濾條件:銷售員 等於 'C4',取出與C4單元格中銷售員匹配的數據,如下圖:
保存並預覽
保存模板,預覽報表,即可看到如上的效果。
多數據源報表優勢
多數據源報表傳統的做法,是通過拼SQL將多源整合為單源。如上例中將銷量表與銷售總額表整合起來:SELECT * FROM 銷量,銷售總額 WHERE 銷量.銷售員 = 銷售總額.銷售員 。若數據庫表比較複雜,且使用的表個數不止2張而是更多時,可以想象,最終的SQL查詢語句將會非常複雜。
FineReport天然支持多數據源的報表,一張報表中可以添加任意多個數據集,每個數據集使用最簡單的SQL語句查詢出需要的表數據,在報表中只需要使用過濾就可以將來自不同表的數據相互關聯起來。使得多數據源報表製作更加簡單。
複雜多源報表
實際應用時,交叉表當中的行列與彙總計算數據,均來自不同數據庫也是很常見的。如下報表:
在這張報表中,項目總數,財政撥款,自有資金及其它資金都是來自於不同的數據集。
準備數據集
數據庫的數據表是項目ID與項目名稱有一張單獨的表來保存,另有項目數量,財政補貼資金,單位自籌資金,其它資金等四張列表。每張表均通過ID字段與項目名稱表建立關係,以下是五張內置的數據集:
注:在數據集面板中點擊添加按鈕,選擇內置數據集即可新建內置數據集,直接添加數據
項目名稱(項目名稱,ID)--project
項目總數(ID,項目總數)--zs
財政撥款(ID,金額)--cz
單位自籌(ID,金額)--dz
其它資金(ID,金額)--qt
表樣設計
如下設計報表:
綁定數據列及過濾設置
將數據列依次拖拽到單元格中,設置如下:
編號和公式
在需要添加編號和計算彙總的格子中寫入公式:
保存並預覽報表
保存模板。設計器中點擊分頁預覽,即如上的效果圖。
多源分片報表
描述
多源就是一張報表的數據來源來自多個數據表,甚至是多個物理數據庫。這裡的“多個”常常不是兩個三個,而是七八個乃至十幾個,無法轉成單源;
分片是指一張報表的縱向或橫向或雙向同時被分成了多個區域,往往每個區域來自不同的數據源;
這樣的報表即多源分片報表,如下圖:
思路設計
多源分片報表通常有比較複雜的橫表頭與縱表頭,在設計多源分片報表時,可以先將表頭設計好,最後設計中間部分的數據,此時只需要設置好對應的關聯過濾即可,最後進行模板數據字典等顯示設置;
另外一種快速製作多源分片報表的方法是每片單獨設計,如上圖報表,可以先設計分片1,確認無誤後再設計分片2,如此類推,同樣最後進行模板數據字典等顯示設置。
準備數據
連接數據庫FRDemo,新建四個數據集,數據集名分別為僱員、產品、訂單信息和訂單對應的sql語句如下:
僱員的SQL語句: SELECT 僱員ID,職務 FROM 僱員
產品的SQL語句: SELECT 產品ID,類別ID FROM 產品 where 類別ID =1 or 類別ID =2
訂單信息的SQL語句: SELECT 訂單.訂單ID,僱員ID,產品ID,數量,(數量*單價) AS 總額 FROM 訂單,訂單明細 WHERE 訂單.訂單ID=訂單明細.訂單ID
訂單的SQL語句: select * from 訂單
表樣設計
最終表樣如下:
分片1製作
分片1按國家與僱員進行分組統計,中間數據受左表頭與上表頭雙重控制:
分片2製作
分片2直接統計總額與數量,中間數據只受上表頭控制:
分片3製作
分片3按照僱員職務與僱員進行分組統計,中間數據受左表頭與上表頭雙重控制:
形態設置
最後我們根據需要,設置數據的顯示樣式、形態、顏色等。
對C4,C6,E2和E3單元格作形態數據字典設置,都採用數據庫表的方式,具體設置如下表:
保存與預覽
保存模板,設計器中點擊分頁預覽,就可看到如上效果。