Reporting services 在SSRS报告的文本框中选中空值和拆分值
我面临着一个非常简单的问题,但并没有得到解决。 我的ssrs报告中有文本框,我正在向它传递值“1;prashant”或null。现在,如果我将值“1;prashant”传递给textbox,那么textbox应该只显示“prashant”,如果我不传递任何内容,那么它应该是空的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
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
表达式短路,但是SSRSIIf
表达式不会短路-表达式将尝试并计算出拆分(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)