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

时间:2013-11-27 18:32:02

标签: sql database vba access-vba recordset

我遇到了这条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 个答案:

答案 0 :(得分:0)

在SQL字符串中,您需要:

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

b)用方括号

包围SQL to Module中的所有引用

c)使用别名:选择m。* FROM [Module]作为m

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