以acFormAdd模式通过DoCmd.OpenForm打开的表单能否使用Me.Requery重查询
问题解答
核心结论
直接对acFormAdd模式打开的表单执行Me.Requery无法实现查看全部记录的需求,该操作不会生效。
原理说明
你调用DoCmd.OpenForm "Form_A", acNormal, , , acFormAdd打开表单时,Access会自动将表单的DataEntry属性设置为True。该属性开启时,表单只会展示新增过程中产生的记录,完全过滤历史已存记录,无论是否执行重查询,这个过滤规则都会生效。
实现方案
你只需要先修改DataEntry属性的状态,再配合重查询即可,不需要关闭重启表单,有两种常用实现方式:
- 如果你要在Form_A内部触发该操作(比如给Form_A加一个「查看全部记录」的按钮),按钮点击事件代码如下:
Private Sub btnShowAll_Click() ' 关闭数据新增模式,允许加载历史记录 Me.DataEntry = False ' 执行重查询,拉取table_A的全量最新记录 Me.Requery ' 可选补充:自动定位到你刚新增的记录,不需要可以删除 Me.Recordset.FindFirst "主键字段名 = " & Nz(Me!主键字段名, 0) End Sub
- 如果你要从其他窗体控制已打开的Form_A展示全量记录,调用代码如下:
' 先判断Form_A是否已打开,避免报错 If CurrentProject.AllForms("Form_A").IsLoaded Then Forms!Form_A.DataEntry = False Forms!Form_A.Requery End If
内容的提问来源于stack exchange,提问作者Manuele C
相关产品推荐
相关产品推荐

