1. 概述
1.1 版本
報表伺服器版本 |
---|
11.0 |
1.2 預期效果
在前面學習了簡單多源報表、複雜多源報表、多源分片報表,如果希望在多源報表中實現過濾該如何實現呢?
例如想要篩選「銷售總額」為 1869 的資料,如下圖所示:
1.3 實現思路
在儲存格中的主表儲存格里進行過濾。
2. 範例
2.1 資料準備
建立資料集 ds1 , SQL 查詢語句為:SELECT * FROM [銷量]
建立資料集 ds2,SQL 查詢語句為:
SELECT * FROM 銷售總額 where 1=1
${if(len(銷售總額)=0,""," and 銷售總額 = '"+銷售總額+"'")}
2.2 報表設計
如下圖設計表格,將資料集中的欄位分別拖曳到對應儲存格中。
儲存格設定如下表所示:
儲存格 | 設定 |
---|---|
B2、B3 | 合併 B2、B3 儲存格,輸入正文:地區 |
C2、C3 | 合併 C2、C3 儲存格,輸入正文:銷售員 |
E2、E3 | 合併 E2、E3 儲存格,輸入正文:銷售總額 |
D2 | 拖入資料列:ds1 產品類型,橫向擴展,父格為預設 |
D3 | 拖入資料列:ds1 產品,橫向擴展,父格為預設 |
B4、C4、D4 | 分別拖入對應的資料列:ds1 地區、ds1 銷售員、ds1 銷量;縱向擴展 |
E4 | 拖入資料列:ds2 銷售總額;縱向擴展;左父格為 C4 |
2.3 過濾條件設定
1)雙擊 B4 儲存格,設定過濾條件:
條件一:普通條件,ds1 銷售員資料列等於 ds2 銷售員資料列; or 條件二:公式條件:len($銷售總額) =0,以實現參數為空選擇全部的效果。如下圖所示:
ds2 資料集中已經實現了這個效果,但是儲存格 B4 的資料來自於 ds1資料集, ds1 資料集中可能包含 ds2 資料集中沒有的資料。因此必須加上條件二,才不會導致參數為空時主表的資料減少。
2)雙擊 E4 儲存格,設定過濾條件:銷售員等於 C4 儲存格,如下圖所示:
2.4 參數面板設定
進入參數面板編輯介面,選擇「全部新增」進參數面板,設定其元件為「數字元件」,如下圖所示:
2.5 效果預覽
2.5.1 PC 端
儲存報表,點選「分頁預覽」,效果如下圖所示:
2.5.2 行動端
App 和 HTML5 端均支援,效果如下圖所示:
3. 範本下載
已完成範本可參見:%FR_HOME%\webroot\WEB-INF\reportlets\doctw\Advanced\Multidatasource\多源報表非主表實現資料過濾.cpt
點選下載範本:多源報表實現資料過濾.cpt