检查多值参数的索引值

时间:2014-01-22 06:54:22

标签: sql-server reporting-services

我有一个多值参数,我如何在iif条件下检查idex的值是否为null 现在,我正在使用这个表达式

  

IIF(IsNothing(参数!FR.Value(0)),“”,“测试”)

我的参数是隐藏的,有些东西有4个值,或者有时间小于4个。

当我检查索引3的值(3)并且此索引中没有值时。我显示错误。我如何检查参数的索引值。

1 个答案:

答案 0 :(得分:2)

第一个问题是索引3没有对象,而不是对象的值是Nothing,因此在尝试访问对象的Value属性时会出错不存在。

第二个问题是IIF是一个函数而不是语言构造,因此在调用函数之前评估所有参数,而不管布尔条件的值如何。我看不到尝试访问Value(3)属性的方法,如果不存在IIF功能,那么你的脸就会爆炸。你可以试试像这样令人费解的东西:

=IIF(Parameters!FR.Count >= 4, Parameters!FR.Value(IIF(Parameters!FR.Count >= 4, 3, 0)), "")

但是当没有选择任何参数值时,会在你脸上爆炸。

最简单,最安全的方法是创建一个自定义代码函数,您可以向其传递多值参数和所需的索引:

Function Get_FR_by_Index(ByVal parameter As Parameter, ByVal index As Integer) AS String
  Dim Result As String
  Result = ""
  If parameter.IsMultiValue Then
    If parameter.Count >= index+1 Then
      Result = CStr(parameter.Value(index))
    End If 
  End If 

  Return Result
End Function

然后使用此函数访问结果:

=Code.Get_FR_by_Index(Parameters!FR, 3)

请记住,索引是从零开始的,因此第一个Value是索引0。