在SSRS报告中检查文本框中的空值和拆分值

时间:2014-03-03 14:42:46

标签: reporting-services ssrs-2008-r2

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

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

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

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

3 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:1)

iif中分离出来。然后在你的iif中,如果字段为空则创建一个字符串,当拆分时将返回""

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

答案 2 :(得分:0)

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

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

使用测试数据:

enter image description here

一个简单的表格:

enter image description here

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

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

这个新表达式适用于NULL值,空字符串和没有分隔符的字符串:

enter image description here