【发布时间】:2017-12-18 14:32:52
【问题描述】:
出于各种原因,我想在我的表单上设置一个自定义按钮来保存当前记录。我使用导航表单并希望在保存条目时触发相同的过程(完整性检查、用户输入等),因此每当用户按下“保存”按钮或切换到另一个表单时。将有条件地要求用户确认该过程,因此也可以取消它。
一切运行顺利,但有一个非常奇怪和烦人的异常:每当我点击 new 记录上的保存按钮并在“BeforeUpdate”事件中提示一条消息时,我都会收到
RTE 3021(“没有当前记录”)
没有 MsgBox,一切都很好。更奇怪的是: 当我通过使用导航表单切换到另一个表单来触发保存过程时(或简单地按用于数据输入的表单“外部”),一切都很好。
这是一个极简示例(与 DoCmd.Save、Requery 或 acCmdSaveRecord 类似的结果):
Private Sub vt_save_Click()
Me.Dirty = False
End Sub
Private Form_BeforeUpdate(Cancel As Integer)
Cancel = True
MsgBox "Test"
End Sub
有什么想法吗?我根本无法解决这个错误。
【问题讨论】:
-
应该展示什么简约示例?可能错误来自在
BeforeUpdate触发器中调用的 other 代码(即完整性检查、用户输入),无法在新记录上运行。请发布更完整的代码。 -
我从未使用过更新前事件的表单。我在按钮 Click 事件中进行数据验证。
-
@Parfait 这个简约的例子向您展示了所描述的内容。新建一个数据库,一张表,一张表格。创建记录,输入数据并按下按钮。等等 - 你会得到错误。
-
@June7:是的,这就是解决方法。不过,由于(基本上)有两种保存条目的方法(按下按钮或切换到另一种形式),我想将这两个函数放在一个代码中。