字符串函数
使用串联运算符和 Visual Basic 常量可将多个字段组合在一起。以下表达式返回两个字段,它们分别位于同一文本框的不同行中:复制代码
=Fields!FirstName.Value & vbCrLf & Fields!LastName.Value
使用 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 System.String 类的成员而不是 Visual Basic 函数,可得到与上一个表达式相同的值:
复制代码
=Parameters!User.Value.Substring(Parameters!User.Value.IndexOf("/")+1, Parameters!User.Value.Length-Parameters!User.Value.IndexOf("/")-1)
显示多值参数的所选值。下面的示例使用 Join 函数,将参数 MySelection 的所选值串联到单个字符串中,该字符串可设置为报表项中文本框值的表达式:复制代码
= Join(Parameters!MySelection.Value)
.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")
注意:
验证 Fields!Phone.Value 的值没有多余的空格并且类型为 System.String。
转换函数
使用 Visual Basic 函数可以将字段从一种数据类型转换为另一种不同的数据类型。转换函数可用于将字段的默认数据类型转换为计算所需的数据类型或用于组合文本。
下面的表达式将常量 500 转换为 Decimal 类型,以将其与筛选表达式 Value 字段中的 Transact-SQL money 数据类型进行比较。复制代码
=CDec(500)
下面的表达式显示为多值参数 MySelection 选择的值的数目。复制代码
=CStr(Parameters!MySelection.Count)
决策函数
Iif 函数可根据表达式的计算结果(True 或 False)返回两个值中的一个。下面的表达式使用 Iif 函数在 LineTotal 的值超过 100 时返回布尔值 True。否则,它将返回 False:复制代码
=IIF(Fields!LineTotal.Value > 100, True, False)
使用多个 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)