空参数值的 s-s-rS 表达式返回 #Error

Posted

技术标签:

【中文标题】空参数值的 s-s-rS 表达式返回 #Error【英文标题】:s-s-rS expression for empty parameter value returns #Error 【发布时间】:2016-04-22 06:16:02 【问题描述】:

我在报告中有一个参数,我最近将其更改为接受NULL 值。它以前是必需的参数,但现在不是必需的。报告中的标题具有以下表达式以从参数值中读取数据。自从我修改参数以接受NULLvalues 后,它就出错了。它在标题中显示#Error。即使参数为“NULL”,我也尝试修改表达式以显示结果,但到目前为止没有任何效果。我几乎被困在这里。这是我在 s-s-rS 中使用的表达式:

=IIF(Code.MultipleValues(Parameters!ProductID.Value(0))="True"
,IIF(IsNothing(First(Fields!ProductName.Value, "ProductHeader")),""
,First(Fields!ProductName.Value, "ProductHeader")).ToString
,IIF(Len(Parameters!ProductID.Value(0)) > 0
,IIF(First(Fields!ProductName.Value, "ProductHeader") is nothing,""
,First(Fields!ProductName.Value, "ProductHeader")),"All Products Selected"))

我认为该错误与报告中的 VB 自定义代码有关。我对代码不太熟悉,因此无法对其进行故障排除。 VB代码:

Public Function MultipleValues(ByVal str As String) As String
If str.Contains(",")
Return "True"
Else
Return "False"
End If
End Function

关于如何在 s-s-rS 中处理 #Error 有什么建议吗?谢谢

【问题讨论】:

为什么是Parameters!ProductID.Value(0) - 如果您使用多个值,那么您可以使用 Join 来检查您的情况。类似Join(Parameters!ProductID.Value,",") 我不知道为什么这样做。我正在修复别人的工作 这一行IIF(First(Fields!ProductName.Value, "ProductHeader") is nothing应该是IIF(ISNOTHING(First(Fields!ProductName.Value, "ProductHeader")) 这可能不是问题,但IIF(Code.MultipleValues(Parameters!ProductID.Value(0))="True" 可以替换为IIF(Parameters!ProductID.Count > 1。代码只是检查是否有超过 1 个值。 感谢您的帮助。我已经完全删除了表达式并在 sql 中提取了 null 逻辑。现在工作正常。表达方式非常混乱和不必要。 【参考方案1】:

替换

Code.MultipleValues(Parameters!ProductID.Value(0))="True"

IndexOf(Parameters!ProductID.Value(0).ToString(),",") >= 0

【讨论】:

感谢您的回答。报告中还有使用此代码的其他参数。如果我改变它,我会通过其他参数出错。你能解释一下你的答案吗? 调用 IndexOf - 一个内置函数 - 而不是转到 Code.MultipleValues 会更有效。先复制一份,然后到实际代码中查找替换。【参考方案2】:

不是函数,能不能把IsNothing检查放在参数前面?

=IIF(Code.MultipleValues(IsNothing(Parameters!ProductID.Value(0),""))="True"

【讨论】:

以上是关于空参数值的 s-s-rS 表达式返回 #Error的主要内容,如果未能解决你的问题,请参考以下文章

如何在 s-s-rS 的任何列中过滤具有空值的行

图像的 s-s-rS 表达式

JAVA语言中 有返回值的方法和无返回值的方法有啥区别啊 请举例子说明!!

s-s-rS - 多值参数表达式

整理随笔

COALESCE函数