我在说我拉出使用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

如果有一个简单的方法来做到这一点,我将它完全开放。 prettyName需要3个字符串作为参数,最初我只是想直接传递rs.Fields(“中间名”),但它为空值,扔了。我更愿意做一些更直接的那样,但是这是我能拿出最好的。

有帮助吗?

解决方案

如何:

IsNull(rs.Fields("MiddleInitial").Value)

您也可以看看的其具有约Null值在Access VBA应用一些解释以及如何处理它们。这篇文章

其他提示

有关您显示示例,NZ将工作:

    thisMiddleInitial = Nz(rs!MiddleInitial,"")

或者简单级联字符串以空字符串:

    thisMiddleInitial = rs!MiddleInitial & ""

您的问题已被Remou回答,在我看来,但它发生,我认为你可能只是试图让姓名字段的正确链接。在这种情况下,可以使用中等()和Null传播在VBA来获取结果。

我不使用单独的中间初始场,所以我的常用名称级联公式是:

Mid(("12" + LastName) & (", " + FirstName), 3)

在“12”的字符串的开头将被倒去如果名字不为空并且忽略,如果它的空值,因为+连接运算符传播空值。

要扩展这对包括中间intials看起来像这样:

Mid(("12" + LastName) & (", " + FirstName) & (" " + MiddleInitial), 3)

假设你的UDF没有做某种复杂的清理绰号/缩写/等,这可能完全取代它,在我看来。

If rst.Fields("MiddleInitial").Value = "Null" Then

这对我的作品。我使用MS SQL数据库。

我觉得NOMATCH选项可能在这种情况下工作:

如果rs.NoMatch = TRUE,则

我更喜欢使用的下面以考虑null和空字符串值。这是一个很好的检查工作,你必须形式收集用户的价值。

If Trim(rs.Fields("MiddleInitial") & "") = "" then
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top