星期一, 9月 23, 2013

[SSRS] 分頁頁碼

閱讀 MSDN 文章 Reporting Services 中的分頁 時有點霧煞煞,Google 些資料來了解並實作練習此主題

DataSet T-SQL 語法

利用 AdventureWorks2012,找出人員所屬部門
SELECT 
    D.DepartmentID AS DepID , 
    D.Name AS DepName , 
    P.LastName , 
    P.FirstName  , 
    A.EmailAddress
FROM Person.Person AS P
    JOIN Person.EmailAddress AS A ON P.BusinessEntityID = A.BusinessEntityID
    JOIN HumanResources.EmployeeDepartmentHistory AS H ON P.BusinessEntityID = H.BusinessEntityID
    JOIN HumanResources.Department AS D ON H.DepartmentID = D.DepartmentID
WHERE H.EndDate IS NULL

建立父群組

資料列 => 右鍵滑鼠 => 加入群組 => 父群組


群組依據為 DepID 並勾選 [加入群組頁首]


DepID 欄位 =>滑鼠右鍵 => 刪除資料行,因為沒有要使用該群組欄位,故意把它刪除


微調版面

把 DepID 和 DepName 資料,放在群組頁首

PageBreak 相關設定

資料列群組欄位 => 內點選 DepID 群組 => 屬性 => Group => PageBreak 相關設定 => 設定如下
  1. BreakLocation => BETWEEN
  2. Disable => False
  3. ResetPageNumber => True
  4. PageName => Fields!DepName.Value
各屬性說明
  1. BreakLocation:會針對啟用分頁的報表元素,提供分頁的位置:開頭、結尾,或開頭和結尾。 若是群組,BreakLocation 可以位於群組之間
  2. Disabled:會指出是否將分頁套用至報表元素。 如果這個屬性評估為 True,則會忽略分頁。 如果使用這個屬性,可以根據報表執行時的運算式,以動態方式停用分頁
  3. ResetPageNumber:會指出分頁時,是否應該將頁碼重設為 1。 如果這個屬性評估為 True,則會重設頁碼。
  4. PageName:針對分頁所造成的新頁面,提供新的頁面名稱
頁首設定

頁碼只能在頁首或頁尾設定


在頁首新增文字方塊


文字方塊的運算式內輸入

= "全部分頁號碼:" & Globals!OverallPageNumber & "/" & Globals!OverallTotalPages & "(OverPageNumber/OverallTotalPages)"
同樣步驟再建立一個文字方塊並在運算式內輸入
= "群組分頁號碼:" & Globals!PageName & " - " & Globals.PageNumber & "/" & Globals.TotalPages & "(PageName - PageNumber/TotalPages)"

調整版面並預覽結果

從下圖可以看出全部資料共分 19 頁,此畫面為第 5 頁, purchasing 群組,總共是 1 頁,此為群組第 1 頁。


從下圖可以看出全部資料共分 19 頁,此畫面為第 7 頁, Production 群組,總共是 4 頁,此為群組第 1 頁。

2 則留言:

  1. 你好,我有個也是關於顯示筆數的問題想請教你,若你有閒餘時間,期望你能撥空幫我想想

    我的問題如下:

    我的報表內需要顯示兩個欄位,並顯示在同一行;其中主要的欄位是品名,另一欄位則是品名的雜項支出,雜項支出顯示在每個品名的下面緊鄰著品名;目前我的品名是直接顯示在父報表內,雜項支出我是用子報表顯示於品名下方。
    Question:請問我可以控制品名和雜項支出一頁只顯示六筆,超過就放下一頁。

    回覆刪除
  2. Hi ~~
    請參考這兩篇筆記
    [SSRS] 群組分頁 http://jengting.blogspot.tw/2013/09/group-page-break.html
    [SSRS] 強迫分頁 http://jengting.blogspot.tw/2015/01/ssrs.html

    回覆刪除