对象如何既null又不为null?

时间:2014-09-17 15:20:58

标签: vba access-vba

所以我认为我对VBA编程有一个体面的(让我们说中级)了解,但这让我感到难过......

上下文:我继承的MS-Access应用程序的一些VBA编程。此应用程序是FE / BE分隔的,BE是存储在网络服务器上的数据库文件。

我最初的问题与未能打开记录集时的丑陋异常有关,在谷歌先生的帮助下觅食后,我选择使用GetAttr()方法来测试对BE目录的访问。 / p>

On Error goto ErrConnect

a = GetAttr("\\server-name\directory\")
   If (a <> Null) Then
       MsgBox "is connected"
    ElseIf (a = Null) Then
       MsgBox "not connected"
    Else
       MsgBox "this is interesting..."
   End If

ErrConnect:
    MsgBox "Failed to open remote database at \\server-name\directory\"
    Resume Next

当然“Resume Next”并没有任何意义,但我很好奇我的变量“a”如何既可以是Null也可以是非Null ...(我总是得到“有趣的“消息当然”。

这不是很奇怪吗?

修改(有关信息,在“a”上设置观看表示它为空)

2 个答案:

答案 0 :(得分:0)

Null不是可以对其执行算术运算的值。

? Null = Null 
Null
? Null <> Null
Null

因为你可以看到你不能使用Null作为If。它不会是真或假,所以你的理由总是被执行。如果你这样做了。

If a <> 0 Then
    MsgBox "Connected"
Else
    MsgBox "Not Connected"
End If

那会有用。

答案 1 :(得分:0)

不在c#中。似乎真正存储值为null和非null将需要计算机存储基于电子状态的数据。然后,在您评估它之前,它可以为null并且不为null。一旦观察到数据,就会被迫崩溃到一个或另一个州。