我正在循环记录集中的行,并根据当前行中的字段值为变量分配值。我不断收到错误
无效使用空
调试时,我发现此问题在以下行
TurnoverPTD = rsPeriod.Fields(0)
为了解决这个问题,我将其更改为以下内容
If rsPeriod.Fields(0) = Null Then
TurnoverPTD = 0
Else
TurnoverPTD = rsPeriod.Fields(0)
End If
然而,我仍然遇到同样的错误。调试时,将光标悬停在顶行上会显示工具提示中的rsPeriod.Fields(0) = Null
,但是我不确定这是否只是表明这就是代码行所说的?
我还能如何检查 Null,为什么我的方法不起作用?
有一种方法类似于 mthod 存在于 VB.NET
中的IsDBNull
。
该方法IsNull
接受一个参数 (rsPeriod.Fields(0)
) 并返回一个布尔值。
您可以在If
语句中使用此方法,如下所示。
If IsNull(rsPeriod.Fields(0)) Then
TurnoverPTD = 0
Else
TurnoverPTD = rsPeriod.Fields(0)
End If
最好使用它而不是像代码中那样If x = Null
,IsNull
检查值是否为 null。 使用 = 运算符意味着它将尝试比较值 - 但不能以这种方式将值与 Null 进行比较。
因此,在比较RecordSet
字段时,这是最好的方法。
我会使用:
If IsNull(rsPeriod.Fields(0).Value) Then
不要依赖默认属性,也不需要测试是否True = True
.
将其更改为:
If rsPeriod.Fields(0) Is Nothing Then
TurnoverPTD = 0
Else
TurnoverPTD = rsPeriod.Fields(0)
End If