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

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

=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

关于如何在 SSRS 中处理 #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 逻辑。现在工作正常。表达方式非常混乱和不必要。

标签: sql-server vb.net reporting-services ssrs-2008 ssrs-2012


【解决方案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"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    相关资源
    最近更新 更多