SSRS - 表达式返回错误,如果为null

时间:2016-12-13 15:48:44

标签: reporting-services ssrs-2008-r2

我希望只有名字才会出现在日历上(如果它们存在的话),如果它们不存在则没有。

我创建了一个表达式,它只使用逗号作为分隔符返回人的姓氏。

我目前的表达方式:

=iif(IsNothing(Fields!EmployeeName.Value), nothing, Left(Fields!EmployeeName.Value,-1 + InStr(Fields!EmployeeName.Value, ",")))

如果名称不存在,则出现#Error的当前结果:

enter image description here

1 个答案:

答案 0 :(得分:2)

由于您向左侧函数传递小于0的数字,因此发生错误。如果您的字符串中没有逗号,则传入-1。

为了解决这个问题,我在表达式中添加了两个if语句。如果第一个逗号的索引为0,则第一个将返回整个字符串。第二个将检查-1条件,并在发生时将0传递给左侧函数。

=
iif(
    IsNothing(Fields!EmployeeName.Value), 
    nothing, 
    iif(
        InStr(Fields!EmployeeName.Value, ",") = 0, 
        Fields!EmployeeName.Value, 
        Left(Fields!EmployeeName.Value,iif(-1 + InStr(Fields!EmployeeName.Value, ",") < 0, 0, -1 + InStr(Fields!EmployeeName.Value, ",")))
        )
    )