【发布时间】:2017-09-05 07:50:51
【问题描述】:
我在 MS Access 中使用组合框导航到数据条目,并希望 msgbox 询问用户对当前条目所做的更改是否应保存、撤消或是否应取消更新过程。 我在更新前运行的代码如下所示:
If Me.Dirty = True Then
Select Case MsgBox("Keep changes?", vbYesNoCancel)
Case vbYes
DoCmd.Save
Case vbNo
Me.Undo
Case vbCancel
Cancel = True
End Select
End If
“是”和“否”选项按预期工作。虽然,出于某种原因,我无法绕开我的头,但 Me.undo 阻止事件更新,就好像 Cancel 将设置为 True - 意思是: 表单停留在当前数据,而不是选择数据。
组合框的 AfterUpdate 事件只是运行
DoCmd.SearchForRecord , "", acFirst, "[ID] = " & Str(Nz(Screen.ActiveControl, 0))
我也试过手动控制 Cancel = False 没有任何效果。
【问题讨论】:
-
首先只有两个选项。要么保存,要么不保存。 2> 使用 form_before_update 事件。
-
嗯,我认为这是个人喜好问题。我的第一个想法就是这样做并在表单中添加一个“撤消”按钮。不过,按照我现在尝试的方式,这应该是可能的。
-
我希望因为如果您撤消,则数据不会发生任何变化,因此无需更新任何内容并且事件中止。显然,如果 BeforeUpdate 没有执行,则 AfterUpdate 不会触发。为什么你认为“应该”是可能的?只能有两条路径 - 正如@krish KM 所说 - 保存或不保存。
标签: ms-access combobox vba undo