我经常在 Access 2010 数据库中使用以下表达式模式:
IIF(ISNULL(fieldName), Null, myFunction(fieldName))
这里 myFunction 是一个用户定义的函数,它将 fieldName 的值转换为另一种格式(如果存在)。
为了减少一点打字,我尝试定义以下函数:
Function IifIsNull(p AS Variant, v AS Variant) AS Variant
If IsNull(p) Then IifIsNull = p Else IifIsNull = v
End Function
我应该按以下方式使用它:
IifIsNull(fieldName, myFunction(fieldName))
但是它不起作用。当fieldName
为Null时,IifIsNull
的返回值为#Error
,甚至还没有调用IifIsNull
!
是否可以使用用户定义的函数或系统函数来简化给定的代码模式?
更新:
有几个 myFunction
,并且所有这些函数当前都是强类型的,一个简单的示例如下:
Function RemoveSpace(str AS String) AS String
For i=1 to Len(str)
If Mid(str,i,1) <> " " Then RemoveSpace = RemoveSpace + Mid(str,i,1)
Next
End Function
最佳答案
我假设当 fieldName
为 null 时,myFunction(fieldName)
会抛出错误。
当您调用 IifIsNull(fieldName, myFunction(fieldName))
时,首先评估的是 myFunction(fieldName)
。因此,如果 fieldName
为 null,则会出现错误。
关于ms-access - 如何在Access 2010 VBA中封装IIF和ISNULL调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11465977/