IIF 内部的 SSRS 分部聚合
SSRS-Division Aggregation Inside IIF
我已经写了一个简单的表达式来显示 0 当我除以 0 作为异常:
我使用 Visual Studio 2008 和 Visual Studio 2019
=IIF ( Sum(Fields!STUDENTCOUNT.Value) = 0, 0 , Sum(Fields!CONTINUINGSTUDENTCOUNT.Value) /
Sum(Fields!STUDENTCOUNT.Value) )
你没有很好地解释问题,但我可以从表达中看出问题所在。对于 IIF
语句,一旦执行到单元格,就会对整个语句求值。这意味着无论您如何尝试避免此表达式中的被零除错误,它仍然会评估 false 条件并生成错误。我将从 this answer 那里借用一些自定义代码来为您提供解决方案。
Public Function Divide (ByVal Dividend As Double, ByVal Divisor As Double)
If IsNothing(Divisor) Or Divisor = 0
Return 0
Else
Return Dividend/Divisor
End If
End Function
要将其添加到您的代码中,请在设计器 window 中的报表外部右键单击并转到 Report Properties
。单击代码选项卡并将之前的代码输入到编辑器中。然后,要调用代码,您将使用以下表达式。
=Code.Divide(Sum(Fields!CONTINUINGSTUDENTCOUNT.Value), Sum(Fields!STUDENTCOUNT.Value))
我已经写了一个简单的表达式来显示 0 当我除以 0 作为异常:
我使用 Visual Studio 2008 和 Visual Studio 2019
=IIF ( Sum(Fields!STUDENTCOUNT.Value) = 0, 0 , Sum(Fields!CONTINUINGSTUDENTCOUNT.Value) / Sum(Fields!STUDENTCOUNT.Value) )
你没有很好地解释问题,但我可以从表达中看出问题所在。对于 IIF
语句,一旦执行到单元格,就会对整个语句求值。这意味着无论您如何尝试避免此表达式中的被零除错误,它仍然会评估 false 条件并生成错误。我将从 this answer 那里借用一些自定义代码来为您提供解决方案。
Public Function Divide (ByVal Dividend As Double, ByVal Divisor As Double) If IsNothing(Divisor) Or Divisor = 0 Return 0 Else Return Dividend/Divisor End If End Function
要将其添加到您的代码中,请在设计器 window 中的报表外部右键单击并转到 Report Properties
。单击代码选项卡并将之前的代码输入到编辑器中。然后,要调用代码,您将使用以下表达式。
=Code.Divide(Sum(Fields!CONTINUINGSTUDENTCOUNT.Value), Sum(Fields!STUDENTCOUNT.Value))