MS Access 2010:阻止在移动到子窗体时保存在主窗体中



绑定的主表单有一些子表单,允许用户选择数据,然后在主表单的相关字段中为他们输入数据。

但是,当焦点转移到子窗体或返回到主窗体时,主窗体的"更新之前"和"更新后"事件将触发。这是一个问题,因为 BeforeUpdate 具有验证代码来检查是否已输入必填字段。此时,用户仍在从子窗体中"选择"数据以输入主窗体的记录,因此现在尝试验证还为时过早。

有什么方法可以防止主窗体尝试保存吗?

这是

ACCESS中一个棘手的部分。一般来说,如果您远离脏表单,则将提交所有未提交的更改(边界表单)。但在此之前,forms_OnbeforeUpdate事件将触发。在您的情况下,一种方法是放置一个命令按钮并仅通过命令按钮保存它。或者在该 onBeforeUpdate 事件中使用任何验证检查。

想法是使用onBeforeUpdate_event来检查保存是有意的还是自动的。 您可以执行以下任一检查:

  • 如果验证失败,请不要保存(取消 = true)
  • 如果通过查看任何变量有意保存。

插入一个命令按钮和一个称为

Dim iCanSave as boolean 

使用命令按钮将 iCanSave 变量设置为True并执行

iCanSave = True
Docmd.runCommand accmdSAveRecord

在您的Form_onBeforeUpdate事件中检查iCanSave是否为真,如果是,则保存是有意的,因此允许保存..如果不丢弃保存。像这样:

form_onBeforeUpdate(cancel....)
    if not (iCanSAve) then
        cancel = true
    End if

No.这是设计使然。

您可以禁用甚至隐藏子窗体,直到在父窗体中输入和验证足够的信息。

最新更新