Previous 函數 (報表產生器及 SSRS)
傳回某個項目在指定之範圍內上一個執行個體的值或指定的彙總值。
[!附註]
您可以在報表產生器以及 SQL Server Data Tools 的報表設計師中建立和修改報表定義 (.rdl)。每種撰寫環境都會提供不同的方式來建立、開啟和儲存報表與相關的項目。如需詳細資訊,請參閱 microsoft.com 網站上的<在報表設計師及報表產生器中設計報表 (SSRS)>。
語法
Previous(expression, scope)
參數
expression
(Variant 或 Binary) 用來識別資料及擷取資料上一個值的運算式,例如,Fields!Fieldname.Value 或 Sum(Fields!Fieldname.Value)。scope
(String) 選擇性。 群組或資料區域的名稱,或為 Null (在 Visual Basic 中為 Nothing),指定範圍以從其擷取 expression 所指定的上一個值。
傳回類型
傳回 Variant 或 Binary。
備註
Previous 函數會在套用過所有的排序和篩選之後,針對在指定範圍內評估的運算式傳回上一個值。
如果 expression 未包含彙總,則 Previous 函數會預設為報表項目的目前範圍。
在詳細資料群組中,請使用 Previous 來指定上一個詳細資料列執行個體中欄位參考的值。
[!附註]
Previous 函數只支援詳細資料群組中的欄位參考。 例如,在詳細資料群組的文字方塊中,=Previous(Fields!Quantity.Value) 會從上一個資料列傳回 Quantity 欄位的資料。 在第一個資料列中,這個運算式會傳回 Null (在 Visual Basic 中為 Nothing)。
如果 expression 包含使用預設範圍的彙總函式,則 Previous 會將彙總函式呼叫所指定範圍的上一個執行個體內的資料加以彙總。
如果 expression 包含的彙總函式指定預設外的範圍,則 Previous 函數的 scope 參數的範圍必須包含彙總函式呼叫所指定的範圍。
Level、InScope、Aggregate 和 Previous 函數不可用於 expression 參數。 不支援為任何彙總函式指定 recursive 參數。
如需詳細資訊,請參閱<彙總函式參考 (報表產生器及 SSRS)>和<總計、彙總與內建集合的運算式範圍 (報表產生器及 SSRS)>。
範例
說明
下列程式碼範例如果置於資料區域的預設資料列中,會為上一個資料列的 LineTotal 欄位提供值。
程式碼
=Previous(Fields!LineTotal.Value)
說明
下列程式碼範例顯示的運算式會計算月中特定日的銷售總和,以及該日在去年度的上一個值。 運算式會加到屬於子群組 GroupbyDay 的資料列中的儲存格。 該群組的父群組為 GroupbyMonth,這個群組的父群組又為 GroupbyYear。 運算式會顯示 GroupbyDay (預設範圍) 的結果,然後再顯示 GroupbyYear (GroupbyDay 父群組 GroupbyMonth 的父代) 的結果。
例如,如果資料區域具有名為 Year 的父群組,而其子群組名為 Month,該子群組的子群組又名為 Day (3 個巢狀層級)。 與群組 Day 相關資料列中的運算式 =Previous(Sum(Fields!Sales.Value,"Day"),"Year") 會針對去年度的同一日期和月份傳回銷售值。
程式碼
=Sum(Fields!Sales.Value) & " " & Previous(Sum(Fields!Sales.Value,"GroupbyDay"),"GroupbyYear")