Access 2010搜索组合框弹出输入参数值,执行Requery时报运行时错误2001
解决Access 2010中组合框参数提示与Requery运行时错误2001的问题
我来帮你拆解这个问题——你遇到的「输入参数值」提示和运行时错误2001其实是关联的,大概率都是数据源或控件引用出了问题,咱们一步步排查:
先确认子窗体控件的引用是否正确
运行时错误2001(“取消了操作”)最常见的原因就是你代码里的tbl_detailsubform1不是主窗体上的子窗体容器控件名称。很多人会把子窗体对象的名字和承载它的控件名字搞混——你得打开主窗体的设计视图,选中子窗体那个框,看属性表的「名称」字段,确保代码里写的和这个名称完全一致,大小写也要注意(Access虽然不严格,但有时候会坑人)。排查组合框的数据源问题
即使你确认拼写没错,也得检查这几点:- 组合框的「行来源」如果是查询,打开这个查询单独运行,看是不是也弹「输入参数值」。如果是,说明查询里引用了不存在的字段、控件,或者用了Access保留字(比如
Date、Name)作为字段名,记得给这类字段加方括号[Date]。 - 检查组合框的「控件来源」是不是绑定到了子窗体里不存在的字段,或者绑定的字段类型不匹配。
- 组合框的「行来源」如果是查询,打开这个查询单独运行,看是不是也弹「输入参数值」。如果是,说明查询里引用了不存在的字段、控件,或者用了Access保留字(比如
验证子窗体本身的可用性
单独打开子窗体,看能不能正常加载数据。如果子窗体打开时也弹参数提示,那问题根源在子窗体的数据源,先把这个解决掉——比如子窗体的查询里有没有引用主窗体上还没加载的控件,或者引用路径写错了(比如Forms!主窗体名!控件名里的主窗体名写错了)。优化Requery的执行时机
如果是在组合框的After Update事件里执行Requery,可能子窗体还没完全加载,导致触发错误。可以加个判断确保子窗体已加载:If Me.tbl_detailsubform1.IsLoaded Then Me.tbl_detailsubform1.Form.Requery End If检查特殊字符与命名规范
组合框或查询里的字段名如果有空格、中文标点,一定要用方括号括起来,比如[订单编号]而不是订单编号,否则Access可能会把它当成未定义的参数。
一般来说,先解决子窗体控件的引用问题,再排查数据源的参数提示,这两个问题就能一起搞定了。
内容的提问来源于stack exchange,提问作者Shevy
相关产品推荐
相关产品推荐

