報表的一般運算式 (Visual Studio 報表設計工具)
在報表中,有些運算式是共用的。這些包括變更報表中的資料外觀、計算總計,以及變更報表項目的屬性。這個主題說明報表內一般工作所能使用的部份運算式。
報表內的許多運算式都包含函式。您可以撰寫運算式來使用 Microsoft.VisualBasic、System.Convert 和 System.Math 等命名空間的函式,也可以加入對於其他組件或自訂程式碼的參考。也可以使用 Microsoft .NET Framework SDK 中的類別。如需詳細資訊,請參閱 .NET Framework SDK 類別庫文件集。
函式
報表內的大部份函式都是 Microsoft Visual Basic 或內建報表函式。您可以利用這些函式來建立資料格式、套用邏輯,以及存取報表中繼資料。
Visual Basic 函式
您可以利用 Visual Basic 函式來操作文字方塊所顯示的資料,或參數、屬性或報表的其他區域所用的資料。這一節提供這些函式的範例示範。如需 Visual Basic 函式的詳細資訊,請參閱 Visual Basic 文件集。
日期函式
您可以利用 Visual Basic 函式,在報表中提供日期資訊。
下列運算式包含提供目前日期的 Today 函式。您可以在文字方塊中,利用這個運算式將日期顯示在報表或參數中,以根據目前日期來篩選資料:
=Today()
DateAdd 函式可用來提供基於單一參數的日期範圍。下列運算式提供從 StartDate 參數的日期開始,在六個月之後的日期:
=DateAdd(DateInterval.Month, 6, Parameters!StartDate.Value)
下列運算式包含顯示特定日期之年份的 Year 函式。您可以利用這個運算式,將日期放到一個群組中,或將年份顯示為一組日期的標籤。這個運算式會提供給定訂購日期群組的年份:
=Year(Fields!OrderDate.Value)
您也可以利用 Month 函式和其他函式來操作日期。如需詳細資訊,請參閱 Visual Basic 文件集。
字串函式
您可以利用 Visual Basic 函式來操作報表中的字串。
您可以利用 Format 函式來建立字串內之日期和數字的格式。下列運算式會以完整日期格式來顯示 StartDate 和 EndDate 參數的值:
=Format(Parameters!StartDate.Value, "D") & " through " & Format(Parameters!EndDate.Value, "D")
如果文字方塊只包含日期或數字,您應該利用文字方塊的 Format 屬性來套用格式,而不是在文字方塊內使用 Format 函式。
Right、Len 和 InStr 函式用來傳回子字串,例如,將 DOMAIN\username 修剪成只有使用者名稱。下列運算式會從名稱為 User 的參數中,傳回反斜線 (\) 字元右側的字串部份:
=Right(Parameters!User.Value, Len(Parameters!User.Value) - InStr(Parameters!User.Value, "\"))
下列運算式會產生與上一個運算式相同的值,但它是使用 .NET Framework String 類別的成員,而不是 Visual Basic 函式:
=Parameters!User.Value.Substring(Parameters!User.Value.IndexOf("\")+1, Parameters!User.Value.Length-Parameters!User.Value.IndexOf("\")-1)
決策函式
您可以利用 Visual Basic 函式來評估輸入值,並根據結果來傳回另一個值。
Iif 函式會根據運算式是否評估為 true 而傳回兩個值之一。當 LineTotal 的值超過 100 時,下列運算式會使用 Iif 函式來傳回布林值 True。否則,它會傳回 False:
=Iif(Fields!LineTotal.Value > 100, True, False)
下列運算式利用多個 Iif 函式 (也稱為「巢狀 lif」) 來根據 PctComplete 值傳回三個值之一。
=Iif(Fields!PctComplete.Value >= .8, "Green", Iif(Fields!PctComplete.Value >= .5, "Amber", "Red"))
下列運算式也會根據 PctComplete 值來傳回三個值之一,但它改用 Switch 函式,這個函式會傳回評估為 true 的序列中第一個運算式的相關值:
=Switch(Fields!PctComplete.Value >= .8, "Green", Fields!PctComplete.Value >= .5, "Amber", Fields!PctComplete.Value < .5, "Red")
報表函式
SQL Server Reporting Services 提供其他報表函式,供您操作報表內的資料。這一節提供其中兩個函式的範例。如需有關報表函式和範例的詳細資訊,請參閱報表的內建函式 (Visual Studio 報表設計工具)。
Sum 函式可以總計群組或資料區域中的值。資料表群組的頁首或頁尾可以使用這個函式。下列運算式會顯示 Order 群組或資料區域中之資料的總和:
=Sum(Fields!LineTotal.Value, "Order")
包含 RowNumber 函式的運算式,當用在資料區域內的文字方塊時,會顯示每個出現這個運算式的文字方塊執行個體的資料列數。這個函式可用來計算資料表中的資料列數。它也能用在比較複雜的工作中,如根據資料列數來提供分頁符號。如需詳細資訊,請參閱這個主題稍後的「分頁符號」。
下列運算式會顯示最外層資料區域中第一個資料列到最後一個資料列的資料列數。Nothing 關鍵字表示函式開始於最外層資料區域的第一個資料列。若要開始在子系資料區域內計數,請使用資料區域的名稱。
=RowNumber(Nothing)
報表資料的外觀
您可以利用運算式來操作資料在報表中的呈現方式。例如,您可以將兩個欄位的值顯示在單一文字方塊中,顯示報表的相關資訊,或影響分頁符號插入報表的方式。
頁首和頁尾
當設計報表時,您可以在報表頁尾顯示報表的名稱和頁碼。若要執行這個動作,您可以使用下列運算式:
下列運算式提供報表的名稱及其執行時間。它可以放在報表頁尾的文字方塊中,或放在報表主體的文字方塊中。時間格式採用 .NET Framework 的簡短日期格式字串:
=Globals.ReportName & ", dated " & Format(Globals.ExecutionTime, "d")
下列運算式在報表頁尾的文字方塊中,用來提供頁碼和報表總頁數:
=Globals.PageNumber & " of " & Globals.TotalPages
另外,您也可以在報表頁首或頁尾中,參考報表主體中的報表項目。下列範例描述如何在頁首中,顯示頁面的第一個和最後一個值,這類似於您在目錄清單中所見到的情況。這個範例假設包含名稱為 LastName 之文字方塊的資料區域。
下列運算式放在頁首左側文字方塊中,用來提供頁面 LastName 文字方塊的第一個值:
=First(ReportItems!LastName.Value)
下列運算式放在頁面標頭右邊的文字方塊中時,會提供此頁上 LastName 文字方塊的最後一個值:
=Last(ReportItems!LastName.Value)
您可以將彙總套用至頁首或頁尾中的報表項目參考上。(您不能將彙總套用至報表主體中的報表項目參考上。)下列範例描述如何顯示頁面總計。這個範例假設包含名稱為 Cost 之文字方塊的資料區域。
下列運算式放在頁首或頁尾中,用來提供頁面 Cost 文字方塊中各個值的總和:
=Sum(ReportItems!Cost.Value)
附註 頁首或頁尾中每個運算式都只能參考一個報表項目。
分頁符號
在某些報表中,您可以將分頁符號放在指定資料列數結尾,而不是或不只是放在群組或報表項目上。若要執行這個動作,請在資料區域中建立一個群組 (通常是緊接在詳細資料之外的群組),將分頁符號加入群組中,再依指定的資料列數,將群組運算式加入群組中。
當放在群組運算式中,下列運算式會每 25 個一組資料列各指派一個號碼。當定義群組的分頁符號時,每 25 個資料列會產生一個分頁符號。
=Int((RowNumber(Nothing)-1)/25)
屬性
運算式不只用來將資料顯示在文字方塊中。它們也可用來變更報表項目套用屬性的方式。您可以變更報表項目的樣式資訊,或變更它的可見性。
格式化
您可以利用運算式來變更報表中之報表項目的外觀。
當用在文字框的 Color 屬性時,下列運算式會依 Profit 欄位值而變更文字的色彩:
=Iif(Fields!Profit.Value < 0, "Red", "Black")
當用在資料區域中之報表項目的 BackgroundColor 屬性中,下列運算式會替代淡綠色和白色之間每個資料列的背景色彩:
=Iif(RowNumber(Nothing) Mod 2, "PaleGreen", "White")
可見性
您可以利用報表項目的可見性屬性來顯示和隱藏報表中的項目。在資料區域 (如資料表) 中,開始時,您可以根據運算式中的值來隱藏詳細資料列。
當用於群組詳細資料列的初始可見性時,下列運算式會顯示 PctQuota 欄位超出 90% 之所有銷售的詳細資料列:
=Iif(Fields!PctQuota.Value>.9, False, True)
報表參數
您可以在參數中,利用運算式來改變參數的預設值。例如,您可以利用參數,根據用來執行報表的使用者識別碼來篩選特定使用者的資料。
當用來做為參數的預設值時,下列運算式會收集執行報表的人的使用者識別碼:
=User!UserID
自訂程式碼
您可以在報表內使用自訂程式碼。自訂程式碼可能內嵌在報表內,也可能儲存在報表所用的自訂組件中。如需有關自訂程式碼的詳細資訊,請參閱在報表中加入自訂程式碼 (Visual Studio 報表設計工具)。
下列範例會呼叫將 StandardCost 欄位值轉換成美金值的內嵌程式碼方法 ToUSD:
=Code.ToUSD(Fields!StandardCost.Value)
另請參閱
概念
在報表中使用運算式 (Visual Studio 報表設計工具)
在報表中定義報表參數 (Visual Studio 報表設計工具)
在報表中加入頁首和頁尾 (Visual Studio 報表設計工具)
在報表中加入樣式和格式 (Visual Studio 報表設計工具)
在報表中加入互動性、可見性和導覽 (Visual Studio 報表設計工具)