【问题标题】:MS Access - Data Entered in a Form Automatically saves when i close the formMS Access - 在表单中输入的数据在我关闭表单时自动保存
【发布时间】:2016-10-01 07:20:50
【问题描述】:

我的任务是更新 MS Access 数据库及其表单。 每个表单似乎都链接到一个查询。如果我在表单上的文本框中输入数据,然后在不按“保存记录”按钮的情况下关闭表单,则新记录仍会添加到数据库中,这没有任何意义。

任何见解都会很棒,我是一名程序员,但很少有使用 Access 表单和数据库的经验。

谢谢。

【问题讨论】:

    标签: ms-access vba ms-access-2010


    【解决方案1】:

    默认情况下,Microsoft Access 将表单绑定到数据,并在您在记录之间移动或关闭正在处理的表单时自动保存数据。对于普通用户来说,这实际上是一件好事,因为即使您在编辑后不小心关闭了表单,也很难丢失数据。

    如果此功能不是您想要的,我建议从表单中删除绑定,即将 Record Source 属性设置为空白,然后使用未绑定控件处理代码中的所有数据。它更加繁琐,但它为您提供了更多控制权。

    另一种选择是使用表单的 BeforeUpdate 事件来询问用户是否要在允许他们通过之前保存他们的更改。

    如果您主要担心意外添加新记录,请将 Allow Additions 属性设置为 false,并以编程方式创建新记录。

    更新前事件过程的示例(相同的代码适用于 BeforeInsert 事件):

    Private Sub Form_BeforeUpdate(Cancel As Integer)
    
      Dim intAns As Integer
    
      intAns = MsgBox("Are you sure you want to save this record?", vbQuestion + vbYesNo, "Save Record")
      If intAns = vbNo Then Cancel = 1
    
    End Sub
    

    如果您要使用上述方法,并且用户单击“否”,他们将不得不单击 ESC 键来撤消他们输入的更改。否则,当他们离开记录时,它会继续显示对话。

    【讨论】:

    • 太棒了,非常感谢,这正是我想要弄清楚的。我可能会使用您提到的 BeforeUpdate 方法。再次感谢!
    • 如果我要使用更新前标志,那么使用该事件向数据库添加新数据的最佳方法是什么?
    • 我添加了一个更新前事件过程的示例,它可能会有所帮助。您可以对 BeforeInsert 事件过程使用相同的代码,该过程会在添加新记录之前询问用户。在这两种情况下,如果用户选择“否”,他们将无法移出记录,直到他们使用 hte ESC 键撤消更改。添加新记录时您可能会考虑的另一件事是使用命令按钮将表单的 DataEntry 属性临时更改为 true。不过,正确地做会有点复杂。
    • 非常感谢,这几乎就是我的代码的样子。我在“否”条件下添加了“撤消”属性,这基本上取消了提交查询。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-11
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    相关资源
    最近更新 更多