Forms 访问:切换记录时触发宏

Forms 访问:切换记录时触发宏,forms,ms-access,Forms,Ms Access,在我的访问表单中,我有一个宏来确认表单填写正确。如果用户单击另一条记录,宏将运行,如有必要,会弹出一个消息框,提示“是否要保留在此页面?”。如果“否”,则进入下一条记录,如果“是”,则保持在同一条记录上。无论哪种方式,用户所做的任何更改都将保留 我不确定应该将此宏绑定到哪个窗体事件,以及是否应该使用CancelEvent保留在同一记录上 AfterUpdate似乎是最接近的,但CancelEvent将它保持在同一条记录上,无论我按Yes还是No (如果宏在用户未更改任何内容时运行(或不运行),例

在我的访问表单中,我有一个宏来确认表单填写正确。如果用户单击另一条记录,宏将运行,如有必要,会弹出一个消息框,提示“是否要保留在此页面?”。如果“否”,则进入下一条记录,如果“是”,则保持在同一条记录上。无论哪种方式,用户所做的任何更改都将保留

我不确定应该将此宏绑定到哪个窗体事件,以及是否应该使用CancelEvent保留在同一记录上

AfterUpdate似乎是最接近的,但CancelEvent将它保持在同一条记录上,无论我按Yes还是No

(如果宏在用户未更改任何内容时运行(或不运行),例如在扫描记录时,也可以。以较容易的为准。)


PS:我希望继续使用此宏,但如果必须使用VBA,我可能会使用此解决方案:

这就是如何使用VBA在更新前使用表单
事件(请参见代码中的注释):

Private子表单\u更新前(取消为整数)
'如果当前记录中未进行任何挂起的编辑,
'让用户移动到另一个记录。
如果不是我,那就退出潜艇
'您可以在此处检查用户条目,如果一切正常
'只需退出sub,用户就可以移动到另一条记录
'(挂起的编辑将自动保存)。
“这只是一个例子:
如果Me.Field1=“a”和Me.Field2=“b”,则退出子系统
'如果用户不想保留当前记录,
'让他移动到另一条记录(待定编辑将自动保存)。
如果MsgBox(“是否要保留在此页面上?”,则vbYesNo+vbDefaultButton1_
“注意”)=vbNo然后退出Sub
'取消移动到另一个记录。
取消=真
端接头

表单代码中使用的VBA中的
Me
指向当前表单实例。

这就是如何在VBA中使用表单
更新之前
事件(请参见代码中的注释):

Private子表单\u更新前(取消为整数)
'如果当前记录中未进行任何挂起的编辑,
'让用户移动到另一个记录。
如果不是我,那就退出潜艇
'您可以在此处检查用户条目,如果一切正常
'只需退出sub,用户就可以移动到另一条记录
'(挂起的编辑将自动保存)。
“这只是一个例子:
如果Me.Field1=“a”和Me.Field2=“b”,则退出子系统
'如果用户不想保留当前记录,
'让他移动到另一条记录(待定编辑将自动保存)。
如果MsgBox(“是否要保留在此页面上?”,则vbYesNo+vbDefaultButton1_
“注意”)=vbNo然后退出Sub
'取消移动到另一个记录。
取消=真
端接头

表单代码中使用的VBA中的
Me
指向当前表单实例。

更新后没有取消。使用BeforeUpdate事件验证记录数据。VBA或宏。CancelEvent是一个宏命令。你是说它不能取消AfterUpdate事件吗?假设我使用BeforeUpdate。无论用户选择是还是否,我如何更新记录?如果选择“是”,如何使当前记录保持当前记录?更新后没有取消。使用BeforeUpdate事件验证记录数据。VBA或宏。CancelEvent是一个宏命令。你是说它不能取消AfterUpdate事件吗?假设我使用BeforeUpdate。无论用户选择是还是否,我如何更新记录?如果选择“是”,如何使当前记录保持当前记录?如果处理过程一直进行到取消,用户所做的更改是否会撤消或保存?此时的状态与用户不会尝试移动到其他记录时的状态相同:任何挂起的编辑仍然存在且未保存。然后用户可以/必须保存编辑或撤消编辑。我确实在寻找宏(非VBA)解决方案,因为我已经编写了宏,但您让我意识到我在哪里错误地编写了宏。现在它在BeforeUpdate事件中工作。谢谢!如果处理一直进行到取消,用户所做的更改是否会撤消或保存?此时的状态与用户不会尝试移动到其他记录时的状态相同:任何挂起的编辑仍然存在且未保存。然后用户可以/必须保存编辑或撤消编辑。我确实在寻找宏(非VBA)解决方案,因为我已经编写了宏,但您让我意识到我在哪里错误地编写了宏。现在它在BeforeUpdate事件中工作。谢谢!