MS Access - 在更改表单中的值后立即写入表

时间:2012-03-01 18:04:29

标签: ms-access

有没有办法在更改表单中的值时立即将Access写入值?现在,我必须更改表单中的值,然后在将值写入相应表之前单击该字段到子表单上。

听起来没什么大不了的,但某些控件需要当前数据才能提供有效选项。如果用户不了解点击子表单,那么他们查看的数据可能已过时。

6 个答案:

答案 0 :(得分:2)

您的要求中的行为是默认要求访问功能。在大多数典型情况下,您的主表单将成为父表,因此在您将子记录添加到此类关系设置之前,必须编写父记录并将其保存到磁盘。

反之而非要求也是访问的默认操作。

换句话说,当焦点从父表单移动到子表单时,不清楚为什么父表单的记录没有写入表格。

因此,您的设置中的内容不正确,或者您必须扩展您正在目击的行为。

默认情况下,将焦点从主窗体更改为子窗体将导致将主窗体记录写入表格,并且从子窗体工具主窗体更改焦点作为一般规则也应该导致子窗体记录写入表格。

答案 1 :(得分:2)

如果要匹配组合框,可以将其用作链接主字段,即控件本身的名称。选择带有组合的票证后,您的子表单应立即更新。

Link Master Fields: Combo1
Link Child Fields:  Field1

答案 2 :(得分:0)

当用户离开Lost_Focus事件中的字段时,您可以强制保存记录。

Private Sub MyField_LostFocus()

    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

End Sub

答案 3 :(得分:0)

我也遇到了同样的问题,但在另一种情况下。我没有子表单,但是在分屏上的同一个表的数据表视图,在保存按钮后没有立即更新。按下DUPLICATE按钮,而不是获取最新记录的重复数据,我将指针转移到第一条记录,然后第一条记录中的数据重复。

插入

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

在数据复制代码之前,我现在立即更新数据,记录指针粘在当前记录上,同一个最后一条记录根据需要重复。

分享经验。

谢谢ChrisPadgham

答案 4 :(得分:0)

只需在表单模型中使用它:

Private Sub {your textbox name her}_AfterUpdate()
    Me.Refresh
End Sub

答案 5 :(得分:0)

本质上:在每个所需控件的AfterUpdate事件中,执行acCmdSaveRecord命令。

所以:

  • 在表单的设计视图中,单击您的控件。
  • 菜单>设计>属性表(以显示控件的属性表)
  • 属性表>事件[标签]>更新后。选择“ [事件过程]”。单击省略号“ ...”以带您进入Code-Behind-Form VBA开发环境。
  • 按如下所示提供您的代码...
Private Sub [Control Name]_AfterUpdate()
    DoCmd.RunCommand acCmdSaveRecord
End Sub

例如

Private Sub cboFinancialYear_AfterUpdate()
    DoCmd.RunCommand acCmdSaveRecord
End Sub
  • 对表单上的每个相关控件重复以上操作。

acCmdSaveRecord避免了对当前表单的不必要的视觉刷新,就像使用Me.Refresh一样(@medjahed mohamed建议)。