如何在VBA DAO记录集中检查null?

Tim*_*her 15 null ms-access vba dao access-vba

我在数据库中有一个可选字段,我使用DAO记录集提取.在将其与其他字段连接之前,我需要检查字段是否已设置.到目前为止,我有下面的代码片段,我已经与两个尝试Is=(这是显然错误的语法[[Is | =]])无济于事.看来,如果我使用=它将无法正确比较,Null如果我使用Is它然后抱怨它不是与对象比较.

While Not rs.EOF
    If rs.Fields("MiddleInitial") [[Is | =]] Null Then thisMiddleInitial = "" Else thisMiddleInitial = rs.Fields("MiddleInitial")
    If prettyName(myLastName, myFirstName, myMiddleInitial) = prettyName(rs.Fields("LastName"), rs.Fields("FirstName"), thisMiddleInitial) Then
        MsgBox "Yay!"
    End If
    rs.MoveNext
Wend
Run Code Online (Sandbox Code Playgroud)

如果有一个更简单的方法,我完全愿意接受它.prettyName需要3个字符串作为参数,最初我只是尝试直接传递rs.Fields("MiddleName"),但它以Null值抛出.我更愿意做更直接的事情,但这是我能想到的最好的事情.

Ham*_*ith 32

怎么样:

IsNull(rs.Fields("MiddleInitial").Value)
Run Code Online (Sandbox Code Playgroud)

您还可以查看本文,其中介绍了Access VBA应用程序中的Null值以及如何处理它们.


Fio*_*ala 8

对于你展示的例子,Nz会工作:

    thisMiddleInitial = Nz(rs!MiddleInitial,"")
Run Code Online (Sandbox Code Playgroud)

或者简单地将字符串与空字符串连接:

    thisMiddleInitial = rs!MiddleInitial & ""
Run Code Online (Sandbox Code Playgroud)