多資料源報表即一張報表中可以定義多個資料集,分别取出需要的資料庫表,所取的資料庫表甚至可以來自于不同的資料庫。本文通過幾個例子說明多個資料集資料如何互相關聯來實作多源報表。
1. 描述
多資料源,就是在同一張報表當中,顯示的資料來自于多個不同的表或不同的庫。
如下圖一張簡單的多資料源報表,左側藍色部分來自于銷量表,右側黃色部分來自銷售總額表,即資料來自于兩張不同的資料庫表:
2. 示例
2.1 打開單個資料源報表
打開報表%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Primary\CrossReport\Cross.cpt。
2.2 新增資料源
再新增一個資料集ds2,其SQL語句為SELECT * FROM [銷售總額]。ds2資料集與ds1資料集都有一個銷售員字段。
2.3 綁定資料列
如下圖,将ds2中銷售總額資料列拖拽到單元格中,并設定父格為銷售員所在單元格,使銷售總額跟随銷售員而擴充:
2.4 設定過濾
此時設計器預覽,效果如下:
可以看到,擴充出來的每一個銷售員下,都重複顯示銷售總額字段的所有資料。
雖然銷售總額的父格為銷售員資料列,由于他們來自于不同的資料集,是以銷售總額不會将父格銷售員作為條件進行篩選,即不存在附屬關系。
我們需要銷售總額與銷售員一一對應,就需要設定過濾條件,将這兩個資料集的資料通過銷售員關聯起來。
選中銷售總額所在單元格,設定過濾,添加過濾條件:銷售員 等于 'C4',取出與C4單元格中銷售員比對的資料,如下圖:
2.5 儲存并預覽
儲存模闆,預覽報表,即可看到如上的效果。
3. 多資料源報表優勢
多資料源報表傳統的做法,是通過拼SQL将多源整合為單源。如上例中将銷量表與銷售總額表整合起來:SELECT * FROM 銷量,銷售總額 WHERE 銷量.銷售員 = 銷售總額.銷售員 。若資料庫表比較複雜,且使用的表個數不止2張而是更多時,可以想象,最終的SQL查詢語句将會非常複雜。
FineReport天然支援多資料源的報表,一張報表中可以添加任意多個資料集,每個資料集使用最簡單的SQL語句查詢出需要的表資料,在報表中隻需要使用過濾就可以将來自不同表的資料互相關聯起來。使得多資料源報表制作更加簡單。