在SSRS 2008报告中除以零/空变通方法

jsm*_*ith 13 sql reporting-services ssrs-2008

我有一个字段的报告,其值为表达式:

Fields!TotalPrice.Value/Fields!TotalSlots.Value
Run Code Online (Sandbox Code Playgroud)

虽然有时TotalSlots是空白的,因此我得到零除运行时错误.所以我把表达式改为:

=IIF(Fields!TotalSlots.Value > 0, Fields!TotalPrice.Value/Fields!TotalSlots.Value,"unknown")
Run Code Online (Sandbox Code Playgroud)

但我仍然得到零误差.我如何解决这个零除数问题.

Nat*_*ths 24

Jamie F的回答是正确的.作为提示,您可以向报表代码添加一个函数,以便在多个单元格中更容易实现除法,例如

Public Function Divider (ByVal Dividend As Double, ByVal Divisor As Double)
If IsNothing(Divisor) Or Divisor = 0
  Return 0
Else
  Return Dividend/Divisor
End If
End Function 
Run Code Online (Sandbox Code Playgroud)

然后你可以在这样的单元格中调用它:

=Code.Divider(Fields!FieldA.Value, Fields!FieldB.Value)
Run Code Online (Sandbox Code Playgroud)


Jam*_*e F 16

VB IIF 评估所有参数,因此如果任何参数抛出错误,它将抛出错误:

您的公式可以写成:

=IIF(Fields!TotalSlots.Value > 0,
   Fields!TotalPrice.Value /
   IIF(Fields!TotalSlots.Value > 0,
       Fields!TotalSlots.Value,
       1 ),
   "unknown")
Run Code Online (Sandbox Code Playgroud)

然后,即使TotalSlots为零,该公式仍然不会遇到除法问题.

  • 将"> 0"的出现替换为"<> 0",你应该适用于否定除数. (2认同)