字符串函數
(1)使用串聯運算符和 Visual Basic 常量可將多個字段組合在一起。以下表達式返回兩個字段,它們分別位於同一文本框的不同行中:
=Fields!FirstName.Value & vbCrLf & Fields!LastName.Value
(2)使用 Format 函數可設置字符串中日期和數字的格式。下面的表達式以長日期格式顯示 StartDate 和 EndDate 參數的值:
=Format(Parameters!StartDate.Value, "D") & " through " & Format(Parameters!EndDate.Value, "D")
(3)如果文本框僅包含日期或數字,則應使用文本框的 Format 屬性來應用格式設置,而不應在文本框中使用 Format 函數。
Right、Len 和 InStr 函數可用於返回子字符串,例如,修整 DOMAIN\username 以便僅返回用戶名。下面的表達式從名為 User 的參數返回反斜杠 (\) 字符右側的字符串部分:
=Right(Parameters!User.Value, Len(Parameters!User.Value) - InStr(Parameters!User.Value, "\"))
(4)下面的表達式使用 .NET Framework System.String 類的成員而不是 Visual Basic 函數,可得到與上一個表達式相同的值:
=Parameters!User.Value.Substring(Parameters!User.Value.IndexOf("\")+1, Parameters!User.Value.Length-Parameters!User.Value.IndexOf("\")-1)
(5)顯示多值參數的所選值。下面的示例使用 Join 函數,將參數 MySelection 的所選值串聯到單個字符串中,該字符串可設置為報表項中文本框值的表達式:
= Join(Parameters!MySelection.Value)
(6).NET Framework System.Text.RegularExpressions 中的 Regex 函數對更改現有字符串的格式很有用,例如設置電話號碼格式。下面的表達式使用 Replace 函數,將字段中的 10 位電話號碼格式從“nnn-nnn-nnnn”更改為“(nnn) nnn-nnnn”:
=System.Text.RegularExpressions.Regex.Replace(Fields!Phone.Value, "(\d{3})[ -.]*(\d{3})[ -.]*(\d{4})", "($1) $2-$3")
(7)注意:
驗證 Fields!Phone.Value 的值沒有多余的空格並且類型為 System.String。
轉換函數
使用 Visual Basic 函數可以將字段從一種數據類型轉換為另一種不同的數據類型。轉換函數可用於將字段的默認數據類型轉換為計算所需的數據類型或用於組合文本。
(1)下面的表達式將常量 500 轉換為 Decimal 類型,以將其與篩選表達式 Value 字段中的 Transact-SQL money 數據類型進行比較。
=CDec(500)
(2)下面的表達式顯示為多值參數 MySelection 選擇的值的數目。
=CStr(Parameters!MySelection.Count)
決策函數
(1)Iif 函數可根據表達式的計算結果(True 或 False)返回兩個值中的一個。下面的表達式使用 Iif 函數在 LineTotal 的值超過 100 時返回布爾值 True。否則,它將返回 False:
=IIF(Fields!LineTotal.Value > 100, True, False)
(2)使用多個 IIF 函數(也稱為“嵌套 IIF”)可以根據 PctComplete 的值返回三個值中的一個。
①下面的表達式可放置在文本框的填充顏色中,從而根據文本框中的值更改背景色。
=IIF(Fields!PctComplete.Value >= 10, "Green", IIF(Fields!PctComplete.Value >= 1, "Blue", "Red"))
值大於或等於 10 時,顯示綠色背景;介於 1 和 9 之間時,顯示藍色背景;小於 1 時,顯示紅色背景。
②還有另一種方法可以實現相同功能,即使用 Switch 函數。如果您要測試三個或更多條件,Switch 函數將非常有用。Switch 函數可返回與序列中計算結果為 True 的第一個表達式相關聯的值:
=Switch(Fields!PctComplete.Value >= 10, "Green", Fields!PctComplete.Value >= 1, "Blue", Fields!PctComplete.Value = 1, "Yellow", Fields!PctComplete.Value <= 0, "Red",)
值大於或等於 10 時,顯示綠色背景;介於 1 和 9 之間時,顯示藍色背景;等於 1 時顯示黃色背景;小於或等於 0 時,顯示紅色背景。
③第三種可以實現相同功能的方法是使用 Choose 函數。Choose 函數將第一個參數用作其中一個剩余函數參數的索引。第一個參數必須是整數。如果將表中某文本框的背景色設置為此表達式,則 MyIndex 的值控制該顏色。
=Choose(Fields!MyIndex.Value,"Red","Green","Yellow")
例如,當 MyIndex 為 1 時,背景色為“Red”。在查詢結果集中,驗證 MyIndex 的數據沒有超出參數列表的范圍。
Ⅰ、測試 ImportantDate 字段的值,如果該值大於一周,則返回“Red”;否則返回“Blue”。此表達式可用於控制報表項中的文本框的 Color 屬性:
=IIF(DateDiff("d",Fields!ImportantDate.Value, Now())>7,"Red","Blue")
Ⅱ、測試 PhoneNumber 字段的值,如果為 null(在 Visual Basic 中為 Nothing),則返回“無值”;否則返回電話號碼值。此表達式可用於控制報表項中的文本框的值。
=IIF(Fields!PhoneNumber.Value Is Nothing,"No Value",Fields!PhoneNumber.Value)
Ⅲ、測試 Department 字段的值,然后返回子報表名稱或 null(在 Visual Basic 中為 Nothing)。此表達式可用於條件性鑽取子報表。
=IIF(Fields!Department.Value = "Development", "EmployeeReport", Nothing)
Ⅳ、測試字段值是否為空。此表達式可用於控制圖像報表項的 Hidden 屬性。在下面的示例中,字段 [LargePhoto] 指定的圖像僅當字段值非空時才會顯示。
=IIF(IsNothing(Fields!LargePhoto.Value),True,False)