Sql server 检查多值参数的索引值
我有一个多值参数,如何在iif条件下检查idex的值是否为null 现在,我使用这个表达式 IIF(IsNothing(参数!FR.Value(0)),“”和“Test”) 我的参数是隐藏的,有些东西它有4个值,有些时间小于4Sql server 检查多值参数的索引值,sql-server,reporting-services,Sql Server,Reporting Services,我有一个多值参数,如何在iif条件下检查idex的值是否为null 现在,我使用这个表达式 IIF(IsNothing(参数!FR.Value(0)),“”和“Test”) 我的参数是隐藏的,有些东西它有4个值,有些时间小于4 当我检查索引3的值是否为(3)时,该索引中没有值。我显示出错误。如何检查参数的索引值。第一个问题是索引3中没有对象,而不是对象的值为Nothing,因此,尝试访问不存在的对象的值属性时会出错 第二个问题是,IIF是一个函数,而不是一个语言构造,因此在调用函数之前,不管布尔
当我检查索引3的值是否为(3)时,该索引中没有值。我显示出错误。如何检查参数的索引值。第一个问题是索引3中没有对象,而不是对象的值为
Nothing
,因此,尝试访问不存在的对象的值
属性时会出错
第二个问题是,IIF
是一个函数,而不是一个语言构造,因此在调用函数之前,不管布尔条件的值是多少,都会计算所有参数。如果IIF
函数不存在,我无法尝试访问Value(3)
属性。你可以试试这样复杂的东西:
=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)
请记住,索引是以零为基础的,因此第一个
值是索引0。嗨,克里斯,谢谢你的回答。我想问一下我在ssrs报告中在哪里编写此函数。在Visual Studio中,使用报告
菜单并选择报告属性…
。在该对话框中,选择code
窗口并将代码粘贴到上面。然后,您将能够访问表达式中的代码,如所述。我认为这也有一些用处: