gpt4 book ai didi

ms-access - 如何在 Access 2010 VBA 中封装 IIF 和 ISNULL 调用?

转载 作者:行者123 更新时间:2023-12-04 18:17:07 25 4
gpt4 key购买 nike

我经常在我的 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 s,并且所有这些函数目前都是强类型的,一个简单的例子如下:
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

最佳答案

我假设 myFunction(fieldName)fieldName 时抛出错误一片空白。

当您调用 IifIsNull(fieldName, myFunction(fieldName)) ,首先得到评估的是myFunction(fieldName) .所以如果 fieldName为空,你得到一个错误。

关于ms-access - 如何在 Access 2010 VBA 中封装 IIF 和 ISNULL 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11465977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com