You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Access 2007-2016窗体报错:当前记录中找不到指定列表框字段(错误2109)

Access 2007-2016窗体报错:当前记录中找不到指定列表框字段(错误2109)

嘿,我来帮你搞定这个Access的报错问题!首先得说,错误2109的核心原因很明确:你的宏里Requery动作指定的控件名称要么拼写不对,要么引用路径搞错了,导致Access找不到这个列表框控件。

给你几个针对性的解决步骤,按顺序来排查:

  • 先死磕控件名称的准确性
    别光凭记忆写控件名,打开窗体的设计视图,右键点击你的列表框,选「属性」,切换到「其他」选项卡,看「名称」那一栏的内容——这才是你在宏里必须严格照搬的名字!比如如果列表框的实际名称是lstFieldBResults,你宏里写成List Box A(带空格)肯定就会报错,哪怕差一个字符都不行。Access虽然不区分大小写,但空格、特殊符号必须完全匹配。

  • 确认控件的引用路径(尤其是子窗体里的情况)
    如果你的列表框是放在子窗体里的,那直接写控件名Access根本找不到!这时候得用完整的引用路径,格式是:Forms!主窗体名称!子窗体容器名称.Form!列表框名称。注意这里的「子窗体容器名称」是指主窗体上承载子窗体的那个控件的名字,不是子窗体本身的名称,别搞混了。

  • 不如换成VBA代码,比宏靠谱多了
    宏有时候在控件引用上容易踩坑,换成VBA代码反而更直观不容易出错。操作方法很简单:

    1. 打开窗体设计视图,右键点击你的组合框,选「事件生成器」,再选「代码生成器」;
    2. 在弹出的VBA编辑器里,找到AfterUpdate事件,写下这段代码:
      ' 直接重新查询列表框,Me代表当前窗体,不用纠结路径
      Me.你的列表框实际名称.Requery
      

    比如你的列表框叫lstFieldB,就写Me.lstFieldB.Requery就行。另外,你的查询如果是引用组合框的值来筛选的,记得把查询的条件设为FieldA = [Forms]![你的窗体名称]![组合框名称],这样代码运行时就能自动拿到组合框的选中值,更新列表框内容。

  • 顺带检查查询的参数是否正确
    虽然你现在的错误是找不到控件,但如果查询本身没正确引用组合框的值,就算Requery成功了列表框也不会有内容。所以确认下查询的条件是不是准确指向了你的组合框,别写错窗体名或组合框名。

备注:内容来源于stack exchange,提问作者Matthew Davis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 12:54:37