Vba 当代码不应';不可处决

Vba 当代码不应';不可处决,vba,ms-access,Vba,Ms Access,我对这件事有意见 无效地使用null 错误。我知道如何用Nz避免它,但它不能解决我的问题 我有一个函数,它基于记录集中的数据构建sql查询。下面是一个(伪)代码: 代码生成NULL值,因此我认为它不需要执行MyFunction函数,但在运行期间我收到了上述错误,这是由MyFunction内部引起的-为什么?如,VBA的IIf函数将始终计算truepart和falsepart 如果要避免执行falsepart,则需要在VBA中使用实际的If-Then-Else块或Select-Case语句。您可以

我对这件事有意见

无效地使用null

错误。我知道如何用
Nz
避免它,但它不能解决我的问题

我有一个函数,它基于记录集中的数据构建sql查询。下面是一个(伪)代码:


代码生成
NULL
值,因此我认为它不需要执行
MyFunction
函数,但在运行期间我收到了上述错误,这是由
MyFunction
内部引起的-为什么?

如,VBA的
IIf
函数将始终计算truepart和falsepart

如果要避免执行falsepart,则需要在VBA中使用实际的If-Then-Else块或Select-Case语句。

您可以修改为:

Dim NullValue As Variant

NullValue = <some value that will not cause MyFunction to fail>
string = IIf(IsNull(rst.Fields(0).Value), "NULL", MyFunction(Nz(rst.Fields(0).Value, NullValue))
Dim NullValue作为变量
空值=
string=IIf(IsNull(rst.Fields(0.Value),“NULL”,MyFunction(Nz(rst.Fields(0.Value,NullValue))

这里的信息确实不够:当您得到错误时,
rst.Fields(0).value
的值是多少?以及
MyFunction
的定义到底是什么?您是否将变量定义为字符串?如果是,您不能在字符串中放入空值。请将变量定义为变量。
Dim NullValue As Variant

NullValue = <some value that will not cause MyFunction to fail>
string = IIf(IsNull(rst.Fields(0).Value), "NULL", MyFunction(Nz(rst.Fields(0).Value, NullValue))