MS Access中使用DoCmd对象存值到变量时遇‘预期函数或变量’报错求助
解决MS Access中DoCmd.FindRecord触发“预期函数或变量”错误的问题
嘿,我来帮你搞定这个问题!你遇到的“预期函数或变量”错误,核心原因很明确:DoCmd.FindRecord是一个过程(Sub),它没有返回值,所以你不能用Set chk = ...这种试图接收返回值的写法来调用它。
为什么会出错?
DoCmd.FindRecord的作用是在当前窗体的绑定记录集中定位到匹配的记录,它只执行定位操作,不会返回任何对象或值给你赋值。你想用Set把它的结果存到变量里,VBA就会报错——因为它期待这里是一个能返回值的函数,但你调用的是一个无返回的过程。
正确的做法:检查查找结果
如果你需要判断是否找到了目标记录,可以在执行FindRecord之后,通过当前窗体的记录集来验证:
' 先执行查找操作,这一步不需要赋值 DoCmd.FindRecord "sagar", acAnywhere, True, acSearchAll, False, acAll, True ' 检查是否找到匹配的记录 Dim isFound As Boolean ' Me指代当前窗体,Recordset是窗体绑定的记录集 isFound = Not Me.Recordset.NoMatch ' 后续可以根据结果做处理 If isFound Then MsgBox "找到了记录!" Else MsgBox "没有找到匹配的记录。" End If
额外提示
如果你的代码不是写在窗体模块里(比如标准模块),DoCmd.FindRecord可能无法正常工作,因为它依赖于当前激活的窗体记录集。这种情况下,建议直接打开Recordset对象进行查找,示例如下:
Dim rs As DAO.Recordset Set rs = CurrentDb.OpenRecordset("你的表名或查询名") rs.FindFirst "你的字段名 = 'sagar'" If rs.NoMatch Then MsgBox "未找到记录" Else ' 找到记录后的操作,比如读取字段值 MsgBox "找到的记录ID:" & rs!ID End If rs.Close Set rs = Nothing
内容的提问来源于stack exchange,提问作者sagar
相关产品推荐
相关产品推荐

