SSRS - 如果为 null,则表达式返回错误
SSRS - Expression returning error if null
我希望只有名字出现在日历上,如果它们存在,则什么也没有。
我创建了一个表达式,其中 returns 仅使用逗号作为分隔符的人的姓氏。
我现在的表情:
=iif(IsNothing(Fields!EmployeeName.Value), nothing, Left(Fields!EmployeeName.Value,-1 + InStr(Fields!EmployeeName.Value, ",")))
如果名称不存在则出现#Error 的当前结果:
发生错误是因为您将小于 0 的数字传递给左侧函数。当您的字符串中没有逗号时,您将传入 -1。
为了处理这个问题,我在表达式中添加了两个 if 语句。如果第一个逗号的索引为 0,第一个将 return 整个字符串。第二个检查 -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, ",")))
)
)
我希望只有名字出现在日历上,如果它们存在,则什么也没有。
我创建了一个表达式,其中 returns 仅使用逗号作为分隔符的人的姓氏。
我现在的表情:
=iif(IsNothing(Fields!EmployeeName.Value), nothing, Left(Fields!EmployeeName.Value,-1 + InStr(Fields!EmployeeName.Value, ",")))
如果名称不存在则出现#Error 的当前结果:
发生错误是因为您将小于 0 的数字传递给左侧函数。当您的字符串中没有逗号时,您将传入 -1。
为了处理这个问题,我在表达式中添加了两个 if 语句。如果第一个逗号的索引为 0,第一个将 return 整个字符串。第二个检查 -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, ",")))
)
)