如何返回0而不是#Error?

时间:2013-04-04 14:47:22

标签: reporting-services

我有以下表达式。

=Fields!AvgLOSC4.Value.Split("|"c)(0)

有时,它会返回#Error而不是值。如果上述表达式导致错误,请如何返回0而不是显示#Error

2 个答案:

答案 0 :(得分:1)

SplitIIf检查不起作用,因为SSRS不会在这些检查上发生短路,如果任何部分未能解决整个表达错误。

您可以使用自定义代码解决此问题。将以下代码添加到您的报告中:

Function FirstSplit(fieldValue As String) As String
  If IsDBNull(fieldValue) OrElse IsNothing(fieldValue) Then
    FirstSplit = "0"
  Else
    FirstSplit = fieldValue.Split("|")(0)
  End If
End Function

使用以下命令调用单元格中的代码:

=Code.FirstSplit(Fields!AvgLOSC4.Value)

使用以下数据生成数据集:

select AvgLOSC4 = '1|2'
union all select AvgLOSC4 = '1'
union all select AvgLOSC4 = null

您可以生成以下报告:

enter image description here

答案 1 :(得分:0)

在分割值

之前检查字段是否为NULL
=Iif(IsNothing(Fields!AvgLOSC4.Value),"Display NULL",
                                      Fields!AvgLOSC4.Value.Split("|"c)(0))