Access 2013表单Requery问题:如何避免参数查询重复索要ID?
解决Access表单Requery时重复索要ID的问题
嘿,这个问题我之前帮不少人解决过——每次Requery都弹参数框确实很烦!核心问题是你的参数查询还在依赖用户手动输入ID,而不是自动抓取当前表单里的记录ID。给你几个简单的调整步骤,马上就能搞定:
1. 修改参数查询的SQL,绑定表单当前ID
打开你的参数查询,把原来需要用户输入的参数部分,替换成直接引用表单上的ID控件。比如:
原来的SQL(会弹出输入框):
SELECT * FROM 你的表名 WHERE ID = [请输入ID编号];
修改后的SQL(自动取当前表单ID):
SELECT * FROM 你的表名 WHERE ID = Forms!你的表单名称!txtID;
注意:把
你的表单名称换成你实际的表单名,txtID换成表单上绑定到ID字段的控件名(不管是文本框还是隐藏控件都行,只要它绑定了当前记录的ID)。
2. 处理表单未加载时的查询报错(可选但推荐)
如果有人直接打开这个查询(不通过表单),上面的SQL会报错,因为表单没加载。可以加个判断,让查询在表单未加载时返回空或者提示:
SELECT * FROM 你的表名 WHERE ID = IIf(CurrentProject.AllForms("你的表单名称").IsLoaded, Forms!你的表单名称!txtID, Null);
这样直接打开查询时会返回空记录,不会报错。
3. 保持按钮的Requery逻辑不变
你的按钮核心代码Me.SRStatu...执行完后,直接调用Me.Requery就可以了——现在查询会自动抓取表单当前显示的记录ID,不会再弹出输入框。
额外注意事项
- 如果你的表单是子表单,引用路径要调整成:
Forms!主表单名!子表单控件名.Form!txtID - 确保ID控件确实绑定了记录源的ID字段,这样它的值才会随着当前记录变化而更新
内容的提问来源于stack exchange,提问作者Gaz71
相关产品推荐
相关产品推荐

