MS ACCESS - 如何在按钮单击事件上保存表单的记录值,避免 control.lostfocus 上的正常自动保存

MSACCESS - How to save form's record values on buttonClick event avoiding normal auto save on a control.lostfocus

我有一个表单,其中包含一些链接到查询的文本框。 正常行为是当我更改其中一个文本框的值并切换到另一个控件时, 记录会自动更新为新值。

我想避免这种行为并要求 buttonClick 事件记录保存过程。

我尝试使用表单的 wait for post processing 属性 但它不起作用.. 帮助

实际上,不,编辑表单上的值和文本框不会触及或将记录写回基础表单数据源。 Access 中的术语称为绑定表单。

记录是从 table 中提取的,数据填写了表单上的控件。此时,您可以编辑数据,但表单数据尚未写回 table。

按 Tab 键退出控件通常不会将数据写回 table。

但是,如果窗体上的控件是最后一个控件,并且您按了 Tab 键?

嗯,如果您移动到下一条记录,Access 会保存该记录。

因此,按 Tab 键只会移动到下一个控件,而不会保存您刚刚输入到该文本框(或任何绑定控件)中的数据。

但是: 如果您位于窗体及其选项卡上的最后一个控件上? 接下来会发生什么取决于您的表单设置。 如果您使用默认值,则按 tab 键将移动到下一条记录。现在当然,如果您移动到下一条记录,那么数据将被保存并写回 table.

因此,只有在您处于表单的最后一个控件时,选项卡才会保存数据。

但是,您可以在最后一个控件上更改制表键 WHEN 的设置。

在表格 属性 sheet 的“其他”选项卡中,您有所谓的循环 属性。

此设置:

那么,如果您将此作为“所有记录”? 然后,为了便于数据输入,您可以在表单上进行编辑,然后点击下一个控件的选项卡。但是当在窗体上的最后一个控件上时,如果您点击 Tab,则会移动到下一条记录。因此用户可以只用键盘编辑数据,对于大量的数据输入来说,这是一个很棒的功能。 在连续的表格(多个项目)上,然后在最后一行时,点击选项卡将移动到下一条记录,因此移动到下一行。同样,编辑数据的一个很棒的功能。

那么,如果您不希望选项卡保存您的数据?

然后把上面的改成当前记录。会发生什么情况是当用户点击选项卡时,而你在最后一个控件上?光标将跳回到表格的顶部,并且不会将数据保存或写入 table.

实际上,点击 Tab 键将在 CURRENT 记录上永远循环。

因此,选项卡不会将数据保存到 table 除非在表单的最后一个控件上。

编辑数据、复选框、组合框等。不保存也不将表单数据写回 table。

现在,如果你搬走记录?那么是的,确实会发生自动保存。但是,通过改变这个周期,用户就不会意外地离开 reocrd。

如果您关闭表单,当前记录的数据也会被保存。

表单上保存数据的按钮怎么样?

您可以在表单上放置一个按钮,然后使用以下代码将表单数据保存(写入)到 table:

if me.Dirty = True then me.Dirty = False

所以,以上是你如何可以将表单上的按钮write/save的数据传送到table。

但只是点击标签不会保存数据。例外当然是如果你在最后一个控件上,并且表单循环 属性 是 = All Records.

如果您将其更改为当前记录,那么他们可以连续数小时整天点击 Tab,并且不会保存表单数据,也不会写入 table。