【发布时间】: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