【问题标题】:SSRS handle #Error when reportitems textbox = "N/A"当报告项目文本框 =“N/A”时,SSRS 处理 #Error
【发布时间】:2018-09-27 23:32:06
【问题描述】:

当reportitems textbox = "N/A" 时SSRS 处理#Error

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

N/A 来自 iff(isnmeric(以 =FALSE,"N/A" 结尾的查找表达式

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

结果可以只是百分比列中的另一个“N/A”。

当前表达式未处理 #Error..

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

切换? 国际金融协会?

【问题讨论】:

    标签: reporting-services expression


    【解决方案1】:

    #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))
    

    【讨论】:

      【解决方案2】:

      最终使用自定义代码:将 =FALSE, "N/A" 替换为 = FALSE, 0

      Public Function Divide(ByVal 被除数 As Double, ByVal 除数 As Double) As Double If IsNothing(divisor) 或 divisor = 0 或 IsNothing(dividend) 或除数 = 0 则 返回 0 别的 回报股息/除数 万一 结束函数

      表达式:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-15
        • 2014-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多