共用方式為


在 Reporting Services 中使用運算式

新增: 2005 年 12 月 5 日

在 Reporting Services 中,運算式是用來提供動態彈性,以控制報表的內容和外觀。某些運算式會由系統自動為您建立。例如,當您建立新報表,並將欄位從資料集拖曳至報表項目時,系統會自動將文字方塊的值設定給依名稱參考資料集欄位的運算式。在報表處理期間,當報表轉譯時,每個運算式都會評估為取代運算式的單一值。在報表定義中,從頭到尾都會利用運算式來指定或計算以下各項的值:報表項目屬性、文字方塊屬性、參數、查詢、書籤、文件引導模式、篩選及群組和排序定義。

您可以在文字方塊、屬性或對話方塊中輸入文字,在報表項目上建立運算式。運算式是以 Microsoft Visual Basic 撰寫的。運算式的開頭是等號 (=),並由常數、運算子、函數及包含欄位和參數的內建報表全域集合組成。您也可以建立報表處理未涵蓋的 .NET Framework 類別、自訂程式碼及組件的參考。如需有關建立運算式的詳細資訊,請參閱<在 Reporting Services 中建立運算式>。

本主題提供您在何種情況下可在報表定義中使用運算式的概觀。此主題中的範例是以教學課程建立基本報表中建立的 AdventureWorks 資料集為基礎。若要開始使用範例,請參閱<Reporting Services 中的運算式範例>。

使用欄位運算式

您可以利用運算式來參考資料集中的欄位,並在文字方塊中顯示它的值。若要利用報表項目來連結擷取的資料,欄位運算式必須使用 Fields 全域集合、欄位的名稱,以及 Value 屬性。

  • 當您將欄位從資料集視窗拖曳至報表項目時,欄位運算式會自動加入文字方塊中。
    範例:
    =Fields!LastName.Value
    結果:
    Reiter
    Reiter
    Saraiva
  • 您可以結合來自多個欄位或常數的資料。
    範例:
    =Fields!FirstName.Value & " " & Fields!LastName.Value
    結果:
    Tsvi Reiter
    Tsvi Reiter
    Jose Saraiva

如需您可以在運算式中使用的所有參考類型清單,請參閱<在 Reporting Services 中建立運算式>。

使用 Reporting Services 內建函數

您可以利用運算式來參考來自運算式之內建報表函數的主機。從標準彙總函數 (例如:SumMinMaxCount,用來計算資料列群組的值) 到您在詳細資料列中用來提供各資料列值的函數 (例如:RowNumberRunningValue),都是前述函數的範圍。

  • 利用彙總函數 Count 計算名稱為 SalesOrder 之資料集的 LastName 欄位中姓氏的數目。雖然您可以將運算式放在資料表的詳細資料列中,不過,您還是會看到 3906 個資料列的每一個資料列中都輸入了相同的值。彙總函數的設計目的在於摘要詳細資料列,且通常用於資料區域或資料區域群組之頁首或頁尾資料列的文字方塊中。
    範例:
    ="Number of Names: " & Count(Fields!LastName.Value)
    結果:
    Number of Names: 3906
  • 利用彙總函數 Sum 來彙總 TotalDue 欄位。將此結果放在資料表的頁尾資料列中。請注意,值未格式化。
    範例:
    ="Total Sold: " & Sum(Fields!TotalDue.Value)
    結果:
    Total Sold: 108266245.7018
  • 利用 Format 函數和 Microsoft .NET Framework 格式化字串 C 來格式化數值。
    範例:
    ="Total Sold: " & Format(Sum(Fields!TotalDue.Value),"C")
    結果:
    Total Sold: $108,266,245.70
  • 利用 RowNumber 函數來進行資料列編號。
    範例:
    =RowNumber(Nothing)
    結果:
    1
    2
    3
  • 利用 RunningValue 來彙總給定範圍的執行中總數。
    範例:
    =Format(RunningValue(Fields!TotalDue.Value,Sum,Nothing),"C")
    結果:
    $27,231.55
    $28,947.73

如需可從運算式參考之報表內建函數的完整清單,請參閱<在運算式中使用報表功能 (Reporting Services)>。

範圍

由於您可能定義了多個群組,因此,您可以指定彙總函數所要使用的範圍。範圍是一種名稱,您可以將這些名稱傳遞至彙總函數來指出彙總的計算方式。例如,如果是定義多個群組的資料表,您可能需要從內部群組標頭資料列來參考外部群組。Nothing 範圍會告訴函數使用最外層的範圍。如果是未含群組的簡單資料表資料區域,則只有一個範圍。

若要識別對報表項目群組有效的範圍,請選取項目、開啟 [屬性] 對話方塊、按一下 [群組] 索引標籤,然後檢視可用來識別範圍之群組標籤的清單。

使用 .NET Framework 和系統命名空間

您可利用運算式來參考 Microsoft.VisualBasic 執行階段程式庫的內建命名空間,以及 .NET Framework 命名空間 System.ConvertSystem.Math。若要參考其他 .NET Framework CLR (Common Language Runtime) 命名空間,您必須使用完整的命名空間,例如:System.Text.StringBuilder。如果是外部組件的參考,您必須透過報表屬性來識別組件,並確定可在報表伺服器中使用該組件。如需詳細資訊,請參閱<如何:將組件參考加入至報表 (報表設計師)>和<Referencing Assemblies in an RDL File>。

使用自訂程式碼和類別參考

您可以利用運算式來參考您自己的自訂執行個體和類別執行個體。若要完成此作業,您可以透過報表屬性,直接將程式碼加入報表中,或先建立自訂組件,然後從運算式內參考該組件。如需詳細資訊,請參閱<在運算式中使用自訂程式碼參考 (Reporting Services)>。

使用條件式格式化

您可以使用運算式,來控制報表項目的外觀。例如,您可以撰寫文字方塊之 Color 屬性的運算式,依據資料以不同的色彩顯示資料。如果 TotalDue 欄位中的值小於 10000,下列範例會將值顯示成紅色。如果不符合條件,文字會顥示成黑色。

=Iif(Fields!TotalDue.Value < 10000,"Red","Black")

若要輸入報表項目的格式化運算式,請開啟 [屬性] 視窗,然後在您要格式化之屬性的值欄位中輸入運算式。如需有關設定格式化之條件的詳細資訊,請參閱<加入格式化的條件>。

使用查詢運算式

您可以利用運算式來定義資料集內包含的查詢。您可以使用此功能來設計報表,在此報表中會根據使用者的輸入、其他資料集內的資料,或其他變數來變更查詢。如需有關查詢的詳細資訊,請參閱<定義報表資料集>。

使用篩選、群組和排序運算式

您可以利用運算式定義篩選,限制報表中顯示的資料數量和資料類型。從資料來源擷取資料之後,會將篩選套用到資料。您可以在資料集、資料區域和資料區域群組上定義篩選。如需有關篩選的詳細資訊,請參閱<如何:加入篩選 (報表設計師)>和<篩選報表中的資料>。

您可以利用運算式來定義資料區域的群組。您經常要利用運算式來計算分組資料上的彙總。群組是藉由在資料區域上建立群組標頭來定義。如需有關資料分組的詳細資訊,請參閱<在報表中分組資料>和<如何:將群組加入至資料表 (報表設計師)>。

您可以利用運算式來定義資料區域的排序。您可以排序資料集、資料區域上的詳細資料列,以及資料區域上的群組。如需有關排序資料的詳細資訊,請參閱<在報表中排序資料>和<如何:排序資料表中的資料 (報表設計師)>。

使用內建報表集合

您可以利用運算式來參考內建報表集合類別。除了先前討論過的 Fields 集合以外,您還可以建立運算式來參考下列集合中的項目:GlobalsUserParametersReportItemsDataSetsDataSources。當這些集合用於運算式時,它們可以提供存取權給在報表處理期間動態決定的報表屬性和資料。如需詳細資訊,請參閱<在運算式中使用全域集合 (Reporting Services)>。

使用地區設定

若要決定對使用者顯示報表的方式,您可以利用運算式,透過 User.Language 值來參考用戶端電腦上的本機設定。例如,您可以建立報表來使用以本機值為基礎的不同查詢運算式。查詢可能會根據傳回的語言,從不同的資料行擷取當地語系化的資訊。您也可以在報表的語言設定或根據此變數的報表項目中使用運算式。

ms345242.note(zh-tw,SQL.90).gif附註:
變更報表的語言設定時,您必須注意可能會造成的顯示問題。例如,變更報表的地區設定可能會變更報表中的日期格式,也可能會變更貨幣格式。除非有貨幣轉換程序;否則,這可能會造成不正確的貨幣符號在報表中顯示。若要避免這種狀況,請您為每個要變更的項目個別設定其語言資訊,或將項目的貨幣資料設定為特定的語言。

請參閱

工作

如何:加入運算式 (報表設計師)

參考

Reporting Services 中的運算式範例

概念

報表配置的如何主題

其他資源

編輯運算式 (報表設計師)

說明及資訊

取得 SQL Server 2005 協助