【问题标题】:Comparison in reportviewer doesn't work报告查看器中的比较不起作用
【发布时间】:2015-03-04 06:51:12
【问题描述】:

报告中的比较如何工作?我尝试了下一个表达式:

=Iif(IsNothing(Fields!COEF.Value), 0, Fields!SUM.Value - Fields!SUM.Value / Fields!COEF.Value)

它从来都不是 0。然后我更改了我的 sql 查询以在 COEF 为空时使 COEF = 0。

=Iif(Fields!COEF.Value = 0, 0, Fields!SUM.Value - Fields!SUM.Value / Fields!COEF.Value)

但它总是按表达式计算。

【问题讨论】:

  • 结果集中是否有一行 COEF 为零?
  • 当然。但我在那里得到#error。它似乎试图除以零......
  • 如果我用常量更改分隔符,它可以正常工作

标签: c# reportviewer rdlc


【解决方案1】:

问题是 IIf 的真/假部分在获得结果之前进行评估。但是你可以编写自己的简单函数来克服这个限制。

例如- 在您的报告->报告属性->代码中

Public Function SafeDiv(n as decimal, d as decimal) as decimal
  If d = 0
    SafeDiv = 0
  Else
    SafeDiv= n / d
  End If
End Function    

然后在你的财产中

=Fields!SUM.Value - Code.SafeDiv(Fields!SUM.Value, Fields!COEF.Value)

【讨论】:

  • 我又用了一个IIF。=IIF(Fields!COEF.Value <> 0, Fields!SUM.Value - Fields!SUM.Value / IIF(Fields!COEF.Value = 0, 1, Fields!COEF.Value), Nothing)
猜你喜欢
  • 1970-01-01
  • 2017-11-10
  • 2012-03-17
  • 1970-01-01
  • 2021-09-23
  • 2012-08-04
  • 1970-01-01
  • 1970-01-01
  • 2017-04-23
相关资源
最近更新 更多