2013年10月8日 星期二

[SQL Server 2008R2][SSRS] 鑽研式報表 ( Drill Through )

鑽研式報表 ( Drill Through ) 的觀念來自於多維度分析,這和下鑽式報表 ( Drill Down ) 是不相同的。所謂鑽研式報表是由母子報表 ( 兩張獨立的報表 )所構成的,在母報表中先定義某些區域經點選後可以呼叫子報表,使用者藉由觸發母報表定義好的儲存格,以導向定義好的子報表。同時在母報表連結至子報表的過程中,可以根據點選母報表儲存格的位置,截取欄位資訊轉換為報表參數自動輸入至子報表中

先要有一張母報表,通常為彙總的資料,而另一張子報表為明細資料。( 先設計好兩張報表 )
子報表是包含銷售明細資料的報表,存其資料集中需要加入對應的報表參數 ( 銷售年、銷售月、產品大類、產品中類 )。單獨預覽子報表時如下圖所示。


選取母報表中與產品中類交叉的「銷售金額」內的儲存格。按滑鼠右鍵選取「文字方塊屬性」,切換至「動作」頁籤,選擇「移至報表」,並在下拉式選單中選取設計好的子報表名稱。


接著在下方的「使用這些參數執行報表」,點選「加入」按鈕,在「名稱」下拉式選單中選擇子報表的參數名稱,並且在「值」的下拉式選單中選擇母報表中欲傳遞出去的參數欄位 ( 可以是欄位、參數、內建欄位或是運算式 ),即完成設定。

帶至子報表的年資料是由使用者輸入的,所以「值」是帶入「參數」。


其餘的帶至子報表的參數是使用母報表中的「欄位」資料,至於與產品中類交叉的銷售金額儲存格,因為沒有細到產品中類,因此應夠傳遞的參數自然也不同,所以必須要選取全部的產品中類,因此子報表的參數才會以之前介紹過的全選的方式撰寫。

為了讓子報表中可以全選,特別使用下列的語法。
WHERE 
YEAR(TRX_DTE)=@YEAR
AND  MONTH(TRX_DTE)=@MONTH
AND C.PRODUCTCATEGORY_KEY=@PRODUCTCATEGORY
AND( B.PRODUCTSUBCATEGORY_KEY=@PRODUCTSUBCATEGORY OR -1=@PRODUCTSUBCATEGORY )

所以在產品大類的銷售金額儲存格,可以如下圖設定 PRODUCTSUBCATEGORY的值為 -1


可在使用鑽研功能後的子報表上方看到系統自動帶入的參數內容。


如果參數值不希望使用者有機會修改,可在子報表的參數的「選取可見性」設為「隱藏」。


 如此一來,瀏覽者在子報表中就看不到這些參數的輸入介面。相對的,使用者無法直接使用子報表 ( 因無法輸入參數 ),只能透過母報表傳遞參數過來查看子報表內容。

利用儲存格 Action 屬性的設定,可以透過表內部來開啟網頁、報表或是跳到同一張報表預埋書籤的部分,目前 SSRS 提供 Action 屬性有以下三種:
  • 跳至報表
  • 跳至書籤
  • 跳至 URL

至於跳至 URL 是點選設定過的文字方塊可以透過超連結開啟網頁或是放在網站上的圖片,在此處設定的 URL 可以是固定的字串或者是運算式,因此如果報表需要加入動態的網頁查詢時,「跳至 URL」是很方便的功能
目前 SSRS 提供文字方塊以及影像圖檔設定「跳至 URL」,可以透過這項功能在報表上設計與其他網頁的互相連結。

沒有留言: