表格製作軟件FineReport教程:[7]多源報表?

FineReport報表天然支持多數據源報表。一張報表中可以定義多個數據集,分別取出需要的數據庫表,所取的數據庫表甚至可以來自於不同的數據庫。下面就通過表格製作軟件FineReport來簡單介紹一下。

工具/原料

表格製作軟件FineReport7.1.1

大小:148.2M 適用平臺:windows/linux

簡單多源報表

描述

多數據源,就是在同一張報表當中,顯示的數據來自於多個不同的表或不同的庫。

如下圖一張簡單的多數據源報表,左側藍色部分來自於銷量表,右側黃色部分來自銷售總額表,即數據來自於兩張不同的數據庫表:

表格製作軟件FineReport教程:[7]多源報表

打開單個數據源報表

打開報表%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Primary\CrossReport\Cross.cpt。

新增數據源

再新增一個數據集ds2,其SQL語句為SELECT * FROM [銷售總額]。ds2數據集與ds1數據集都有一個銷售員字段。

綁定數據列

如下圖,將ds2中銷售總額數據列拖拽到單元格中,並設置父格為銷售員所在單元格,使銷售總額跟隨銷售員而擴展:

表格製作軟件FineReport教程:[7]多源報表

設置過濾

此時設計器預覽,效果如下:

表格製作軟件FineReport教程:[7]多源報表

可以看到,擴展出來的每一個銷售員下,都重複顯示銷售總額字段的所有數據。

雖然銷售總額的父格為銷售員數據列,由於他們來自於不同的數據集,因此銷售總額不會將父格銷售員作為條件進行篩選,即不存在附屬關係。

我們需要銷售總額與銷售員一一對應,就需要設置過濾條件,將這兩個數據集的數據通過銷售員關聯起來。

選中銷售總額所在單元格,設置過濾,添加過濾條件:銷售員 等於 'C4',取出與C4單元格中銷售員匹配的數據,如下圖:

表格製作軟件FineReport教程:[7]多源報表

保存並預覽

保存模板,預覽報表,即可看到如上的效果。

多數據源報表優勢

多數據源報表傳統的做法,是通過拼SQL將多源整合為單源。如上例中將銷量表與銷售總額表整合起來:SELECT * FROM 銷量,銷售總額 WHERE 銷量.銷售員 = 銷售總額.銷售員 。若數據庫表比較複雜,且使用的表個數不止2張而是更多時,可以想象,最終的SQL查詢語句將會非常複雜。

FineReport天然支持多數據源的報表,一張報表中可以添加任意多個數據集,每個數據集使用最簡單的SQL語句查詢出需要的表數據,在報表中只需要使用過濾就可以將來自不同表的數據相互關聯起來。使得多數據源報表製作更加簡單。

複雜多源報表

實際應用時,交叉表當中的行列與彙總計算數據,均來自不同數據庫也是很常見的。如下報表:

在這張報表中,項目總數,財政撥款,自有資金及其它資金都是來自於不同的數據集。

表格製作軟件FineReport教程:[7]多源報表

準備數據集

數據庫的數據表是項目ID與項目名稱有一張單獨的表來保存,另有項目數量,財政補貼資金,單位自籌資金,其它資金等四張列表。每張表均通過ID字段與項目名稱表建立關係,以下是五張內置的數據集:

注:在數據集面板中點擊添加按鈕,選擇內置數據集即可新建內置數據集,直接添加數據

項目名稱(項目名稱,ID)--project

表格製作軟件FineReport教程:[7]多源報表

項目總數(ID,項目總數)--zs

表格製作軟件FineReport教程:[7]多源報表

財政撥款(ID,金額)--cz

表格製作軟件FineReport教程:[7]多源報表

單位自籌(ID,金額)--dz

表格製作軟件FineReport教程:[7]多源報表

其它資金(ID,金額)--qt

表格製作軟件FineReport教程:[7]多源報表

表樣設計

如下設計報表:

表格製作軟件FineReport教程:[7]多源報表

綁定數據列及過濾設置

將數據列依次拖拽到單元格中,設置如下:

表格製作軟件FineReport教程:[7]多源報表

編號和公式

在需要添加編號和計算彙總的格子中寫入公式:

表格製作軟件FineReport教程:[7]多源報表

保存並預覽報表

保存模板。設計器中點擊分頁預覽,即如上的效果圖。

多源分片報表

描述

多源就是一張報表的數據來源來自多個數據表,甚至是多個物理數據庫。這裡的“多個”常常不是兩個三個,而是七八個乃至十幾個,無法轉成單源;

分片是指一張報表的縱向或橫向或雙向同時被分成了多個區域,往往每個區域來自不同的數據源;

這樣的報表即多源分片報表,如下圖:

表格製作軟件FineReport教程:[7]多源報表

思路設計

多源分片報表通常有比較複雜的橫表頭與縱表頭,在設計多源分片報表時,可以先將表頭設計好,最後設計中間部分的數據,此時只需要設置好對應的關聯過濾即可,最後進行模板數據字典等顯示設置;

另外一種快速製作多源分片報表的方法是每片單獨設計,如上圖報表,可以先設計分片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 訂單

表樣設計

最終表樣如下:

表格製作軟件FineReport教程:[7]多源報表

分片1製作

分片1按國家與僱員進行分組統計,中間數據受左表頭與上表頭雙重控制:

表格製作軟件FineReport教程:[7]多源報表

分片2製作

分片2直接統計總額與數量,中間數據只受上表頭控制:

表格製作軟件FineReport教程:[7]多源報表

分片3製作

分片3按照僱員職務與僱員進行分組統計,中間數據受左表頭與上表頭雙重控制:

表格製作軟件FineReport教程:[7]多源報表

形態設置

最後我們根據需要,設置數據的顯示樣式、形態、顏色等。

對C4,C6,E2和E3單元格作形態數據字典設置,都採用數據庫表的方式,具體設置如下表:

表格製作軟件FineReport教程:[7]多源報表

保存與預覽

保存模板,設計器中點擊分頁預覽,就可看到如上效果。

教程, 軟件, 數據, 表格, 報表,
相關問題答案