代码中Me![SetupMenuID]字段引用失败,如何解决?
嘿,我来帮你搞定这个找不到字段引用的麻烦!你遇到的Me![SetupMenuID]报错,大概率是当前代码所在的对象(比如窗体)里没有这个控件/字段,或者引用方式不对。下面是几个实用的修复方案,你可以一步步排查:
先确认当前窗体有没有
SetupMenuID控件/字段
首先得搞清楚这段代码是写在哪个窗体的事件里的。打开那个窗体的设计视图,仔细看看有没有名为SetupMenuID的控件(比如文本框、组合框),或者这个窗体的数据源里是否包含SetupMenuID字段。要是没有的话,要么是你把控件名称写错了,要么得先添加对应的控件并绑定到数据源的这个字段上。调整字段引用的写法
Access里引用控件/字段有几种方式,你可以换个写法试试:- 用
.代替!:Me.SetupMenuID(这种写法对控件和窗体属性更友好,不容易出错) - 明确指定控件集合:
Me.Controls("SetupMenuID") - 如果
SetupMenuID是窗体数据源的字段但没做控件,直接用记录集引用:Me.Recordset.Fields("SetupMenuID").Value
- 用
检查窗体的数据源是否正确
要是你的窗体没绑定到包含SetupMenuID字段的表或查询,那Me对象肯定找不到这个字段。去窗体的属性面板里看看“记录源”选项,确认关联的数据源里确实有SetupMenuID这个字段。改成参数化查询(既解决问题又更安全)
你现在的SQL语句是直接拼接变量,不仅容易出引用问题,还存在SQL注入风险。换成参数化查询就能一举两得,示例代码如下:Dim con As Object Dim rs As Object Dim cmd As Object Dim stSql As String On Error GoTo SetupButtonClick_Err Set con = Application.CurrentProject.Connection Set cmd = CreateObject("ADODB.Command") cmd.ActiveConnection = con ' 用占位符?代替直接拼接变量 stSql = "SELECT * FROM [Setup Sheet Items] WHERE [SetupMenuID] = ? AND [SetupItemNumber] = ?" cmd.CommandText = stSql ' 添加参数(注意根据字段实际类型调整,这里假设是整数) cmd.Parameters.Append cmd.CreateParameter(, 3, 1, , Me.SetupMenuID) ' 3=adInteger, 1=adParamInput cmd.Parameters.Append cmd.CreateParameter(, 3, 1, , numBtn) Set rs = cmd.Execute用调试工具定位问题
你可以在出错的代码前面加一句Debug.Print Me![SetupMenuID],然后打开Access的立即窗口(按Ctrl+G),运行代码看看能不能输出值。如果这一步就报错,那肯定是引用的问题,回到前面的步骤仔细排查就行。
内容的提问来源于stack exchange,提问作者Alessandro Gagliardi
相关产品推荐
相关产品推荐

