Я часто использую следующий шаблон выражения в моей базе данных 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