Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reporting services 在SSRS报告的文本框中选中空值和拆分值_Reporting Services_Ssrs 2008 R2 - Fatal编程技术网

Reporting services 在SSRS报告的文本框中选中空值和拆分值

Reporting services 在SSRS报告的文本框中选中空值和拆分值,reporting-services,ssrs-2008-r2,Reporting Services,Ssrs 2008 R2,我面临着一个非常简单的问题,但并没有得到解决。 我的ssrs报告中有文本框,我正在向它传递值“1;prashant”或null。现在,如果我将值“1;prashant”传递给textbox,那么textbox应该只显示“prashant”,如果我不传递任何内容,那么它应该是空的 I have tried following IIF condition: =IIF(IsNothing(FieldS!WIAPPORVER.Value),"",Split(Fields!WIAPPORVER.Value

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

I have tried following IIF condition:
=IIF(IsNothing(FieldS!WIAPPORVER.Value),"",Split(Fields!WIAPPORVER.Value,"#")(1).ToString())
但是,如果我传递空值,上面的代码将给出一个错误[“#error”显示在文本框中]

请让我知道,我错在哪里。
谢谢

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

=IIF(
    IsNothing(Fields!WIAPPROVER.Value)
    ,""
    ,Right(Fields!WIAPPROVER.Value,Len(Fields!WIAPPROVER.Value) -InStr(Fields!WIAPPROVER.Value,";"))
)
我相信SSRS正在试图在运行时计算报表中的所有内容,因此在您的例子中,它仍然在尝试从数组中获取索引1,即使其中没有任何内容,并且它会崩溃


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

您依赖于
IIf
表达式短路,但是SSRS
IIf
表达式不会短路-表达式将尝试并计算出
拆分(Fields!wiappserver.Value,“#”)(1)。ToString()
用于所有行,当该值不存在时失败

您可以通过使用文本表达式来实现这一点,而文本表达式不会出现此错误

使用测试数据:

还有一张简单的表格:

我已使用现有表达式和新表达式添加了列:

=Right(Fields!WIAPPORVER.Value, Len(Fields!WIAPPORVER.Value) - InStr(Fields!WIAPPORVER.Value, "#"))
此新表达式适用于空值、空字符串和不存在分隔符的字符串:


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


此解决方案依赖于使用另一个完全不同的工具(SQL)完全放弃SSRS问题。90%的时间都不可能,而且当SSR无法进行正确的短路时,在另一个工具上重新启动相当麻烦。您好,@user3285866。对不起,我不明白你的评论。建议的解决方案是SSRS表达式,而不是SQL;包含SQL只是为了显示示例数据集是如何生成的。
=Split(IIF(IsNothing(FieldS!WIAPPORVER.Value),"#", Fields!WIAPPORVER.Value),"#")(1)