报告项目文本框=“ N / A”时,SSRS处理#Error

时间:2018-09-26 19:58:02

标签: reporting-services expression

当报告项文本框=“ N / A”时,SSRS句柄#Error

当Textbox88 = N / A时,我在%单元格/列中收到#Error。

N / A来自iff(isnmeric(查找表达式,以= FALSE,“ N / A”

如何修改下面的表达式以处理其他字段中的“ N / A”?

结果可以简单地是百分比列中的另一个“不适用”。

当前表达式未处理#Error。

=(ReportItems!Textbox55.Value - ReportItems!Textbox88.Value) / ReportItems!Textbox88.Value

切换? IIF?

2 个答案:

答案 0 :(得分:0)

#Error是通常由冲突数据类型引起的编译器错误。在上面的示例中,您似乎正在尝试在数学方程式中使用字符串“ N / A”。

首先,我建议每个人都将数据转换为所需的数据,而不是预期的数据。您可以使用CSTR()-字符串,CINT()-整数和CDEC()-十进制函数来完成此操作。

例如:

=(CINT(ReportItems!Textbox55.Value) - CINT(ReportItems!Textbox88.Value)) / CINT(ReportItems!Textbox88.Value)

这可以通过将文本框的数据类型强制为整数来解决您的问题。但是,您仍然可能会遇到#Error,因为该函数将为没有数字的字符串返回0,并且您将得到除以零的错误。

因此,我们可以使用IIF进行错误检查:

=IIF(ReportItems!Textbox55.Value = "N/A" or ReportItems!Textbox88.Value = "N/A", "N/A", (CINT(ReportItems!Textbox55.Value) - CINT(ReportItems!Textbox88.Value)) / CINT(ReportItems!Textbox88.Value))

答案 1 :(得分:0)

使用自定义代码结束:用= FALSE,0代替了= FALSE,“ N / A”

公共函数除法(ByVal除数为Double,ByVal除数为Double)为Double    如果IsNothing(除数)或除数= 0或IsNothing(除数)或除数= 0然后       返回0    其他       回报股息/除数    万一 结束功能

表达式:

= Code.Divide(((ReportItems!Textbox55.Value-ReportItems!Textbox88.Value),ReportItems!Textbox88.Value)