2013年9月30日 星期一

[SQL Server 2008R2][SSRS] 互動式排序

使用資料集查詢語法加入 Order By 的方式,或是在資料表物件屬性中的「排序」功能指定資料排序都屬於固定式的排序。為了方便使用者用隨時改變欄位排序規則,可使用互動式排序功能。

製作一個銷售報表,將工具列中「資料表」物件拖拉至報表區。

將報表資料區資料集中的「產品大類」拖拉至資料列群組中「詳細資料」的上方,做為群組。


再將報表資料區資料集中的銷售數量及銷售金額,拖拉至「資料表」物件中的相關位置。
將表格美化一下,並修改標題,並將銷售數量及銷售金額的 Format 設為 D0,結果如下。

準備好以上基本報表後,點選銷售數量按右鍵,選取文字方塊屬性。

勾選「啟動此文字方塊上的互動式排序」 ,並在「選擇排序依據」中點選「群組」,並於下拉選單中選取「PRODUCTCATEGORY_NAME」群組。

完成後預覽一下結果,可看到標頭的地方會出現兩個小三角型圖示,只要點選就可以切換排序。



特別注意事項:
互動式排序的重點在文字方塊屬性中「互動式排序」選項內「排序依據」的值及資料集是如何的資料

如果資料集的資料是經過 Group By 來 Sum 銷售數量及銷售金額,在資料表物件中,並不需要再設定群組


此時在文字方塊屬性設定如下:
選擇排序依據:詳細資料列 ( 因為沒有設定群組 )
排序依據:由下拉選單中選擇 [SALES_QTY]

即完成互動式排序的設定

若資料集的資料是較細的資料,在資料表物件中需進行群組的設定,如下圖所示。


此時在文字方塊屬性設定如下:
選擇排序依據:群組 ( 由下拉選單中選取產品大類的群組 )
排序依據:由下拉選單中選擇 [SALES_QTY]

雖然完成了設定,切換至預覽時,銷售數量的互動式排序並非如想像一樣
由於排序的基礎是「群組」而不是詳細資料,因此不能直接使用下拉式選單直接選取,否則系統會依照明細資料內容的值來排序,而造成排序錯誤。須將排序依據資料表物件中相對欄位的值 ( =Sum(Fields!SALES_QTY.Value) ) 來設定。

點選排序依據下拉選單旁的 fx 按鈕,輸入 =Sum(Fields!SALES_QTY.Value) 運算式。


如此設定才能正常顯示排序。

除了針對資料區域內部進行排序外,如果一個資料集被多個不同資料區域共用時,也可以利用同步互動式排序的功能,讓共用同一個資料集的不同資料區域進行排序的同步。這個功能大多是應用在資料表 / 矩陣以及圖表間的互動。
開啟文字方塊屬性,請勾選「同時套用此排序至下列範圍內的其他群組集資料區域」。並於下方下拉式選單中直接輸入兩個資料區域共用的資料集名稱,即可完成同步互動式排序設定。
如果要使用互動式排序,Tablix 物件或者是群組物件內不可以設定「排序」,因為系統會優先使用「排序」的設定,而造成無法達到互動式排序的結果。

沒有留言: