You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Access中使用VBA查找字段值为空的记录?

解决VBA Recordset.FindFirst查找空字段(Null值)失败的问题

我之前也踩过这个一模一样的坑!在Access/VBA里处理数据表的空字段(也就是Null值)时,不能用咱们直觉里的等于判断,这也是你找不到那条FieldTwo为空的记录的原因。

问题根源

在Jet SQL(Access/VBA用的查询语法)里,Null不等于任何值,包括它自己。如果你像下面这样写,肯定找不到目标记录:

' 错误写法1:用空字符串匹配Null
myDatasheet.Recordset.FindFirst "FieldTwo = ''"

' 错误写法2:直接等于Null
myDatasheet.Recordset.FindFirst "FieldTwo = Null"

正确的写法

要匹配Null值,必须用Is Null这个专门的判断语法:

' 查找所有FieldTwo为空(Null)的记录
myDatasheet.Recordset.FindFirst "FieldTwo Is Null"

' 如果你要精准定位FieldOne为456且FieldTwo为空的记录
myDatasheet.Recordset.FindFirst "FieldOne = '456' AND FieldTwo Is Null"

额外提醒:区分Null和空字符串

这里要注意,短文本字段里的Null值和**空字符串("")**是两个不同的概念:

  • 如果字段是Null,意味着这个字段没有任何值(没输入过内容)
  • 空字符串是输入了但删除了内容,字段有一个长度为0的字符串

如果你的FieldTwo存的是空字符串而不是Null,那才用FieldTwo = ''来匹配,但根据你的描述,那条记录应该是Null值,所以用Is Null就对了。

验证是否找到记录

执行FindFirst之后,一定要检查Recordset的NoMatch属性来确认是否成功定位:

With myDatasheet.Recordset
    .FindFirst "FieldTwo Is Null"
    If .NoMatch Then
        MsgBox "没找到符合条件的记录哦"
    Else
        ' 定位到找到的记录
        myDatasheet.Bookmark = .Bookmark
    End If
End With

内容的提问来源于stack exchange,提问作者Pangu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 07:03:43