使用運算式中的報表和群組變數集合參考 (報表產生器 3.0 和 SSRS)

當您要進行的複雜計算在報表的運算式中使用一次以上時,建議您建立一個變數。您可以建立報表變數或群組變數。根據預設,報表變數只要設定一次,就可以供整份報表的運算式使用。報表變數預設是唯讀的。您可以變更預設值,將報表變數啟用為讀寫。報表變數中的值會在整個工作階段中保留,直到再次處理報表。群組變數則是針對每個唯一的群組值設定一次,且可用於群組階層的目前等級或以下等級的運算式中。無法將群組變數設定讀寫。

[!附註]

您可以在 Business Intelligence Development Studio 中的報表產生器 3.0 及報表設計師中建立及修改報表定義 (.rdl)。每一個撰寫環境都提供了不同的方式讓您建立、開啟,以及儲存報表和相關的項目。如需詳細資訊,請參閱在報表設計師及報表產生器 3.0 (SSRS) 中設計報表,位於 microsoft.com 網站上。

報表變數

報表變數可用來保存與時間相依之計算的值,例如貨幣匯率或時間戳記,或已多次參考的複雜計算。變數初始化之後,整個報表工作階段的值都保持不變。

若要加入報表變數,請開啟 [報表屬性] 對話方塊,按一下 [變數],然後提供名稱及值。

若要參考運算式中的變數,請使用全域集合語法,例如 =Variables!CustomTimeStamp.Value。此值會在設計介面的文字方塊中顯示為 <<Expr>>。

您可以透過以下方式來使用報表變數:

  • 唯讀使用:設定一次某個值,以建立報表工作階段的常數,例如,用來建立時間戳記。

    文字方塊中的運算式會在使用者逐頁檢視報表時視需要進行評估,因此,動態值 (例如,包含 Now() 函數的運算式,此函數會傳回當日時間) 可能會在您向後一頁之後,使用 [上一頁] 按鈕返回時傳回不同的值。您可藉由將報表變數的值設定為運算式 =Now(),然後將該變數加入至您的運算式,來確保在整個報表處理時都會使用相同的值。

  • 讀寫使用:設定一次某個值,然後在報表工作階段中序列化該值。變數的讀寫選項會比在報表定義的程式碼區塊中使用靜態變數提供更好的替代方案。

    當您清除變數的 [唯讀] 選項時,變數的 Writable 屬性會設為 true。若要更新運算式的值,請使用 SetValue 方法,例如,=Variables!MyVariable.SetValue("123")。

    [!附註]

    您無法控制報表處理器初始化變數,或評估更新變數之運算式的時間。系統未定義變數初始化的執行順序。

如需有關工作階段的詳細資訊,請參閱<在報表產生器 3.0 中預覽報表>。

群組變數

群組變數可用來計算群組範圍內的值。群組變數只有在群組及其子群組的範圍內有效。

例如,假設資料區針對不同稅率類別目錄的貨品顯示存貨資料,而您想要為每個類別目錄套用不同的稅率。您會根據 Category 將資料分組,並在父群組上定義 Tax 變數。然後再針對每個稅率類別目錄定義 ItemTax 的群組變數,然後再將每個不同的 Category 子群組指派給正確的群組變數。例如:

  • 對於以 [Category] 為基礎的父群組,定義具有 [Tax] 值的 Tax 變數。假設類別目錄值為 Food 和 Clothing。

  • 對於以 [Subcategory] 為基礎的子群組,則將 ItemsTax 變數定義為 =Variables!Tax.Value * Sum(Fields!Price.Value)。假設 Food 類別目錄的子類別目錄值為 Beverages 和 Bread。假設 Clothing 的子類別目錄值為 Shirts 和 Hats。

  • 針對子群組中資料列的文字方塊,加入 =Variables!ItemsTax.Value 運算式。

    該文字方塊會使用 Food 稅率顯示 Beverages 和 Bread 的總稅額,而使用 Clothing 稅率顯示 Shirts 和 Hats 的總稅額。

若要加入群組變數,請開啟 [Tablix 群組屬性] 對話方塊,按一下 [變數],然後提供名稱及值。群組變數會針對每個唯一的群組值計算一次。

若要參考運算式中的變數,請使用全域集合語法,例如 =Variables!GroupDescription.Value。此值會在設計介面的文字方塊中顯示為 <<Expr>>。