RDLC报告中显示#Error

时间:2013-11-08 07:08:03

标签: c# winforms rdlc

我正在尝试使用表达式进行计算。

实际上我有一个公式来验证用于计算的报表项是否为0,这是因为如果两个报表项都是 0 ,则不允许分割。因此,如果两个报表项都为0,则将为该列分配0.00,而不是处理计算。

这是我的表达式,即使我做了IIf,仍会在报告栏中显示#错误

=IIf((ReportItems!TotalQty.Value = "0.000" And ReportItems!Textbox40.Value = "0.000"),  ReportItems!Textbox6.Value="0.00", FormatNumber((ReportItems!TotalQty.Value / ReportItems!Textbox40.Value * 100), 2))

enter image description here

* ReportItems!Textbox40.value是TotalQty的Grandtotal

有谁知道如何更正此错误。

请帮忙指导。提前谢谢。

1 个答案:

答案 0 :(得分:1)

  1. 如果TextBox40.Value = 0,则IIf()函数的“ else”值将始终为#Error(因为除以零)。我用Val()函数将您的值比较为零,而不是文本。如果TextBox40.Value等于“ abc”或“”(空格)或“”(空字符串),则Val(TextBox40.Value)也为零。
  2. IIf()函数的第二个和第三个参数是取决于第一个参数的结果,您的第二个参数看起来不正确。
  3. IIf()函数在返回结果之前先计算所有参数,因此第3个参数(其中可能被零除)会给您#Error结果。最好使用If()函数。
  4. 在Tablix中设置字段格式比使用FormatNumber()函数更好-代码更清晰。

表达式应为(imho)

=If(Val(ReportItems!Textbox40.Value) = 0,  
    0.00, 
    ReportItems!TotalQty.Value / ReportItems!Textbox40.Value * 100
   )