【问题标题】:Check null and split value in textbox in SSRS report检查 SSRS 报告中文本框中的空值和拆分值
【发布时间】:2014-03-03 14:42:45
【问题描述】:

我面临一个非常简单的问题,但没有得到解决方案。 我的 ssrs 报告中有文本框,我将值“1;prashant”或 null 传递给它。现在,如果我将值“1;prashant”传递给文本框,那么文本框应该只显示“prashant”,如果我什么也没传递,那么它应该是空白的。

I have tried following IIF condition:
=IIF(IsNothing(FieldS!WIAPPORVER.Value),"",Split(Fields!WIAPPORVER.Value,"#")(1).ToString())

但是,如果我传递空白值,我上面的代码会给出错误 ["#error" 显示在文本框中]。

请告诉我,我在哪里错了。 谢谢

【问题讨论】:

    标签: reporting-services ssrs-2008-r2


    【解决方案1】:

    可能有更好的方法可以做到这一点,但这是我当时想到的:

    =IIF(
        IsNothing(Fields!WIAPPROVER.Value)
        ,""
        ,Right(Fields!WIAPPROVER.Value,Len(Fields!WIAPPROVER.Value) -InStr(Fields!WIAPPROVER.Value,";"))
    )
    

    我相信 SSRS 正在尝试在运行时计算报告中的所有内容,因此在您的情况下,它仍在尝试从数组中获取索引 1,即使其中没​​有任何内容并且它崩溃了。

    编辑:将参数更改为字段。我创建了一个参数来重新解决我身边的问题。

    【讨论】:

      【解决方案2】:

      只需从iif 中拆分出来即可。然后在您的iif 中,如果字段没有,则创建一个字符串,当拆分时将返回“”

      =Split(IIF(IsNothing(FieldS!WIAPPORVER.Value),"#", Fields!WIAPPORVER.Value),"#")(1)
      

      【讨论】:

        【解决方案3】:

        您依赖于 IIf 表达式短路,但 SSRS IIf 表达式不会短路 - 表达式将尝试为所有行计算 Split(Fields!WIAPPORVER.Value,"#")(1).ToString(),并在此值不存在时失败。

        您可以通过使用文本表达式来解决此问题,不会出现此错误。

        有测试数据:

        还有一个简单的表格:

        我添加了包含您现有表达式和新表达式的列:

        =Right(Fields!WIAPPORVER.Value, Len(Fields!WIAPPORVER.Value) - InStr(Fields!WIAPPORVER.Value, "#"))
        

        这个新表达式适用于 NULL 值、空字符串和不存在分隔符的字符串:

        【讨论】:

        • 此解决方案依赖于完全放弃 SSRS 问题,使用另一种完全不同的工具,即 SQL。当 SSRS 无法进行适当的短路时,90% 的时间都不可能,并且依赖其他工具相当麻烦。
        • 嗨,@user3285866。我不明白你的评论,对不起。建议的解决方案是 SSRS 表达式,而不是 SQL;包含 SQL 仅用于显示示例数据集是如何生成的。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多