你怎么能在VBA的DAO记录集检查空?
-
21-08-2019 - |
题
我在说我拉出使用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(“中间名”),但它为空值,扔了。我更愿意做一些更直接的那样,但是这是我能拿出最好的。
解决方案
其他提示
有关您显示示例,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
不隶属于 StackOverflow