多數據源報表即一張報表中能夠定義多個數據集,分別取出須要的數據庫表,所取的數據庫表甚至能夠來自於不一樣的數據庫。本文經過幾個例子說明多個數據集數據如何相互關聯來實現多源報表。數據庫
多數據源,就是在同一張報表當中,顯示的數據來自於多個不一樣的表或不一樣的庫。設計
以下圖一張簡單的多數據源報表,左側藍色部分來自於銷量表,右側黃色部分來自銷售總額表,即數據來自於兩張不一樣的數據庫表:模板
打開報表%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語句查詢出須要的表數據,在報表中只須要使用過濾就能夠未來自不一樣表的數據相互關聯起來。使得多數據源報表製做更加簡單。