Access 2013:尝试使用表单中的数据填充文本框时收到错误消息“对象'_Recordset'的方法'打开'失败”

Posted

技术标签:

【中文标题】Access 2013:尝试使用表单中的数据填充文本框时收到错误消息“对象\'_Recordset\'的方法\'打开\'失败”【英文标题】:Access 2013: Getting error message "Method 'Open' of object' _Recordset' failed " when trying to populate text boxes with data in a formAccess 2013:尝试使用表单中的数据填充文本框时收到错误消息“对象'_Recordset'的方法'打开'失败” 【发布时间】:2013-11-27 18:32:02 【问题描述】:

我对这段 VBA 代码有疑问。我正在尝试使用名为 Module 的表中的数据填充 Access 2013 中表单上的文本框。一旦用户从组合框中选择可用模块并单击名为“btnSelectmodule”的按钮,相关数据应输入文本框。相反,我得到了一个错误; "对象'_Recordset'的方法'打开'失败"

Private Sub btnSelectmodule_Click()

Dim strmoduleid As String
Dim rstmodule As New ADODB.Recordset

strmoduleid = CVar(cmbSelectmodule)

rstmodule.Open "SELECT Module.ModuleID, Module.ModuleName, 
Module.ModuleShortCode, Module.Level, Module.Semester, Module.CATPoints,
Module.FacultyCode, Module.Active, Module.Type FROM [Module] 
WHERE (((CVar([ModuleID]))='" & CVar(strmoduleid) & "'));", 
CurrentProject.Connection, adOpenKeyset, adLockOptimistic

If (rstmodule("ModuleID") <> "") Then

txtmoduleid.Value = rstmodule("ModuleID")
txtmodulename.Value = rstmodule("ModuleName")
txtmoduleshortcode.Value = rstmodule("ModuleShortCode")
cmblevel.Value = rstmodule("Level")
cmbsemester.Value = rstmodule("Semester")
cmbcatpoints.Value = rstmodule("CATPoints")
Active.Value = rstmodule("Active")
txttype.Value = rstmodule("Type")

End If

End Sub

此代码在我的其他三个表单上完美运行。他们虽然从不同的表中填充数据。这个问题可能与被称为模块的表有关吗?因为我在 SQL 语句中使用了 [ ] 但仍然不高兴?任何帮助,将不胜感激。谢谢。

【问题讨论】:

【参考方案1】:

在 SQL 字符串中,您需要:

a) 将您的表名更改为不是关键字

b) 用方括号将 SQL 中对 Module 的所有引用括起来

c) 使用别名:Select m.* FROM [Module] as m

d) 将您的表名更改为不是关键字。

【讨论】:

非常感谢。我遇到了这个问题,原来我的表名是导致所有这些问题的关键字。

以上是关于Access 2013:尝试使用表单中的数据填充文本框时收到错误消息“对象'_Recordset'的方法'打开'失败”的主要内容,如果未能解决你的问题,请参考以下文章

在 Access 2013 中将两个报表合并为一个

如何使用 Excel 电子表格中的数据在 Access 中自动填充表单

Access 子表单中的字段名称填充了 vba 记录集

使用 Access VBA 使用循环填充 Word 表单

如何在 HTML 表单中“预填充”文本区域的值? [复制]

Microsoft Access 2013 - 表数据中的变量