如何防止NaN出现在我的报告中?

时间:2013-04-09 17:58:38

标签: reporting-services

以下代码在没有记录的情况下返回NaN。如何防止在报告中显示此内容?优先选择0。

=FormatNumber(
((
(Code.NullSafeSplit(Fields!AvgLOSC1.Value, 0) * Code.NullSafeSplit(Fields!AvgLOSC1.Value, 1)) + 
(Code.NullSafeSplit(Fields!AvgLOSC2.Value, 0) * Code.NullSafeSplit(Fields!AvgLOSC2.Value, 1)) + 
(Code.NullSafeSplit(Fields!AvgLOSC3.Value, 0) * Code.NullSafeSplit(Fields!AvgLOSC3.Value, 1)) + 
(Code.NullSafeSplit(Fields!AvgLOSC4.Value, 0) * Code.NullSafeSplit(Fields!AvgLOSC4.Value, 1)) + 
(Code.NullSafeSplit(Fields!AvgLOSC5.Value, 0) * Code.NullSafeSplit(Fields!AvgLOSC5.Value, 1))
) / (
CInt(Code.NullSafeSplit(Fields!AvgLOSC1.Value, 1)) + 
CInt(Code.NullSafeSplit(Fields!AvgLOSC2.Value, 1)) + 
CInt(Code.NullSafeSplit(Fields!AvgLOSC3.Value, 1)) + 
CInt(Code.NullSafeSplit(Fields!AvgLOSC4.Value, 1)) + 
CInt(Code.NullSafeSplit(Fields!AvgLOSC5.Value, 1))
))
, 0)

1 个答案:

答案 0 :(得分:0)

我认为下面的公式应该得到它。我没有测试过这个,所以我可能会错过一个括号。当所有条目都为空时,问题可能来自零除。在这种情况下,这会捕获并将除数设置为1.

=FormatNumber(
   (
      (Code.NullSafeSplit(Fields!AvgLOSC1.Value, 0) * Code.NullSafeSplit(Fields!AvgLOSC1.Value, 1)) + 
      (Code.NullSafeSplit(Fields!AvgLOSC2.Value, 0) * Code.NullSafeSplit(Fields!AvgLOSC2.Value, 1)) + 
      (Code.NullSafeSplit(Fields!AvgLOSC3.Value, 0) * Code.NullSafeSplit(Fields!AvgLOSC3.Value, 1)) + 
      (Code.NullSafeSplit(Fields!AvgLOSC4.Value, 0) * Code.NullSafeSplit(Fields!AvgLOSC4.Value, 1)) + 
      (Code.NullSafeSplit(Fields!AvgLOSC5.Value, 0) * Code.NullSafeSplit(Fields!AvgLOSC5.Value, 1))
   )
/
   (
       IIF((
   CInt(Code.NullSafeSplit(Fields!AvgLOSC1.Value, 1)) + 
   CInt(Code.NullSafeSplit(Fields!AvgLOSC2.Value, 1)) + 
   CInt(Code.NullSafeSplit(Fields!AvgLOSC3.Value, 1)) + 
   CInt(Code.NullSafeSplit(Fields!AvgLOSC4.Value, 1)) + 
   CInt(Code.NullSafeSplit(Fields!AvgLOSC5.Value, 1))
      ) = 0,
      1,
      (
   CInt(Code.NullSafeSplit(Fields!AvgLOSC1.Value, 1)) + 
   CInt(Code.NullSafeSplit(Fields!AvgLOSC2.Value, 1)) + 
   CInt(Code.NullSafeSplit(Fields!AvgLOSC3.Value, 1)) + 
   CInt(Code.NullSafeSplit(Fields!AvgLOSC4.Value, 1)) + 
   CInt(Code.NullSafeSplit(Fields!AvgLOSC5.Value, 1))
      )
      )
, 0)