在null检查中未检测到Recordset Null Value

时间:2017-10-20 11:12:45

标签: null vb6

我循环遍历记录集中的行,并根据当前行中字段的值分配我的变量值。我一直收到错误

  

无效使用Null

调试时我发现此问题出在以下一行

TurnoverPTD = rsPeriod.Fields(0)

要解决此问题,我将其更改为以下

If rsPeriod.Fields(0) = Null Then
   TurnoverPTD = 0
Else
   TurnoverPTD = rsPeriod.Fields(0)
End If

然而,我仍然得到同样的错误。调试时,将光标放在顶行显示工具提示中的rsPeriod.Fields(0) = Null,但是我不确定这是否只是表示代码行说的是什么?

我如何检查Null以及为什么我的方法不起作用?

3 个答案:

答案 0 :(得分:3)

IsDBNull中存在类似于VB.NET方法的方法。

方法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字段时,这是最好的方法。

答案 1 :(得分:0)

我会用:

If IsNull(rsPeriod.Fields(0).Value) Then

不要依赖默认属性,也不需要测试True = True

答案 2 :(得分:-1)

将其更改为:

HList