星期二, 9月 17, 2013

[SSRS] 群組分頁

利用 SSRS 的 RowNumber() 內鍵函數來建立資料群組,再根據此群組來分頁,也可以說是每 X 筆資料就分頁的效果。

DataSet T-SQL 語法

使用 AdventureWorks2012 來捉取資料,並利用 ROW_NUMBER() 把資料順序號碼 show 出來,方便報表產生時,可以拿來比較
SELECT         
    ROW_NUMBER() OVER (ORDER BY E.BirthDate) AS ROWNO ,
    P.LastName, 
    P.FirstName, 
    E.JobTitle, 
    E.BirthDate, 
    A.EmailAddress
FROM Person.Person AS P 
  INNER JOIN HumanResources.Employee AS E ON P.BusinessEntityID = E.BusinessEntityID 
  INNER JOIN Person.EmailAddress AS A ON P.BusinessEntityID = A.BusinessEntityID

建立群組
  • 新增一個資料列父群組
  • 父群組分類條件
此條件文章內一律稱為 RowNumber() 條件
= INT((ROWNUMBER(NOTHING) - 1) / 10)
  • 設定群組屬性
[資料列群組]內,可以看見新增的父群組(Group1),點選右邊向下箭頭,再點選[群組屬性]
群組屬性 => 一般 => 修改群組名稱為 GroupPageBreak,方便自己辨識;群組對象則是新增父群組時,所輸入的 RowNumber() 條件,不需要再修改。
群組屬性 => 分頁符號 => 勾選[在群組的每個執行個體之間]
群組屬性 => 排序,RowNumber() 條件在新增時,也會是排序依據, SSRS 無法在排序時,使用 RowNumber() 函數,因此排序條件要設成其他條件或就不要有排序,要不然預覽時就會出現錯誤
  • 預覽報表
從 GroupNO 和 RowNO 兩欄位來觀看設定是否異常,GroupNO 是從 0 開始
移除 GroupNO 欄位

GroupNO 欄位是為了方便檢視設定 RowNumber() 條件才存在,實際設計報表不需要出現

點選 GroupNO 欄位 => 滑鼠右鍵 => 刪除資料行
選擇[只刪除資料行]
預覽報表

沒有留言:

張貼留言