我有一个多值参数,我如何在iif条件下检查idex的值是否为null 现在,我正在使用这个表达式
IIF(IsNothing(参数!FR.Value(0)),“”,“测试”)
我的参数是隐藏的,有些东西有4个值,或者有时间小于4个。
当我检查索引3的值(3)并且此索引中没有值时。我显示错误。我如何检查参数的索引值。
答案 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。