首先在資料庫的資料要有兩個欄位用來關聯階層關係
上圖的範例資料表是以EmployeeKey與ParentEmployeeKey兩個欄位作為ParentChild階層關聯。
接著使用sql cte的cte實作出資料表中資料的階層。
然後拉入一個資料表物件,並把EmployeeName、EmployeeLevel與SalesAmount拉入到資料表物件中。
拉入後增加一個以EmployeeKey的群組。
在把之前新增群組的所產生的資料行刪除。
接著在資料列群組刪除詳細資料。
然後在group1的advanced頁面的Recursive parent選擇ParentEmployeeKey。
選完後在SalesAmount這個欄位按右鍵點選運算式
在運算式的頁面輸入=Sum(Fields!SalesAmount.Value,"Group1",Recursive)
然後在EmployeeName屬性方塊設定欄位文字的間距
設定欄位文字的間距
在運算式中輸入=20*Level()+5 & "pt"做為欄位間距規則。
瀏覽一下內容
看起來還真漂亮。不過如果在加上可以drilldwon的效果那就更棒了。為了加上drilldwon的效果我們必需在群組做設定。
我們進入群組屬性的頁面
在可見性的頁籤中點選隱藏(H),並在勾選此報表項目可以切換顯示後,在下拉式選單選擇EmployeeName。
預覽報表,發現有drilldwon的效果。
不過這份報表有一個缺點,就是T1與T2中都是在同一階層,但是T2卻沒有收合的符號,這樣會造成T2的階層筆T1還低的錯覺,除非T2下面也有子階層,這時候T1與T2的對其位置才會相同。
為了解決這個問題,我想了一個折衷的方法,就是除了最底階層外,其他階層的
EmployeeName都給予粗體字,這樣就可以用來識別T2不是最底層的問題。
首先在EmployeeName的欄位點選右鍵進入預留位置屬性編輯頁面
進入後在字型的頁籤點一下粗體的運算式
在運算式輸入判斷欄位是不是最底層的程式碼,如果是的話就不會顯示粗體字,不是的話就會顯示粗體字。
最後瀏覽結果發現T2有粗體字型而TT2沒有,這表示T2不是最底下的階層,這樣就不會有T2的階層是最底層的錯覺。
呼~搞定收工。
沒有留言:
張貼留言