我遇到了这条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语句中使用了[]但仍然没有快乐?任何帮助,将不胜感激。感谢。
答案 0 :(得分:0)
在SQL字符串中,您需要:
a)将您的表名更改为不是关键字
b)用方括号
包围SQL to Module中的所有引用c)使用别名:选择m。* FROM [Module]作为m
d)将您的表名更改为不是关键字。