MS Access从表赋值变量报错:Object Required
解决MS Access中从表取值时“Object Required”错误的问题
嗨,这个问题我之前处理过,根源是你直接用表名访问字段的方式不对——Access里的表名称本身不是可直接调用字段的对象,得用正确的方法从表中读取数据才行。
错误原因
你写的代码:
Dim VarOutPut As String VarOutPut = CurrentSt.StCurr
这里的CurrentSt只是数据库里的表名,不是一个实例化的记录对象,Access无法通过表名直接访问字段内容,所以抛出了“Object Required”错误。而直接赋值固定字符串(比如"1000")时,变量拿到的是明确的字符串值,自然不会有问题。
两种可行的解决方案
因为你的CurrentSt表只有1条记录,以下两种方法都适用:
方法1:使用DLookup函数(最简单)
DLookup是Access专门用来从表/查询中获取单个字段值的函数,适合这种单条记录的场景:
Dim VarOutPut As String ' 第一个参数是目标字段名,第二个参数是表名 VarOutPut = DLookup("StCurr", "CurrentSt")
不需要额外的对象操作,一行代码就能拿到字段值。
方法2:使用DAO记录集(更灵活)
如果以后你的表可能增加记录,或者需要更复杂的数据操作,用DAO记录集的方式更通用:
Dim VarOutPut As String Dim rs As DAO.Recordset ' 打开CurrentSt表的记录集 Set rs = CurrentDb.OpenRecordset("CurrentSt") ' 检查记录集是否有数据(这里因为只有1条,肯定会进入分支) If Not rs.EOF Then VarOutPut = rs!StCurr ' 或者用 rs("StCurr") 也可以 End If ' 关闭记录集并释放资源 rs.Close Set rs = Nothing
这种方式通过实例化记录集对象来访问字段,是VBA操作Access数据表的标准方式。
修改后,变量VarOutPut就能正确获取到CurrentSt表中StCurr字段的值,导出操作应该就能正常运行了。
内容的提问来源于stack exchange,提问作者vfreeman
相关产品推荐
相关产品推荐

