在使用acFormAdd打开的表单上执行Requery会创建一个新记录

时间:2013-08-24 17:22:40

标签: ms-access access-vba

假设用户想要创建新记录,并且这样做会打开表单。用

打开表单时
DoCmd.OpenForm "FormName", acNormal, "", "", acFormAdd, acDialog

Access将打开表单,并在新/空记录上设置数据指针。用户现在可以填写表单某些用户操作可能需要Me.Requery才能进行。如果这样做,表单“丢失”当前创建和修改的记录上的数据指针并跳转到新的空记录。在requery之前,即使是Me.Dirty = False也不会阻止Access这样做。我很确定这种行为来自参数acFormAdd

相反,用

打开表单
DoCmd.OpenForm "FormName", acNormal, "", "WHERE-CLAUSE", acFormEdit, acDialog

解决了该行为,但仅适用于现有记录。

你可以想象这种未经请求的行为不是我所期待的,因为它迫使我实施一个丑陋的解决方法,在完成某些条件时关闭并重新打开。

所以,我想知道是否有一种更简单的方法可以帮助我避免上述的行为。我非常感谢你的帮助!

2 个答案:

答案 0 :(得分:2)

查看重新查看选定的表单控件是否可以完成您所需的操作而不必重新查看整个表单。

例如,要重新查询名为 cboUserID 的组合框,您可以执行此操作...

Me.cboUserID.Requery

答案 1 :(得分:0)

也许更好的解决方案可能是使用.recalc。

DoCmd.Save
Me.recalc