【问题标题】:Creating a record in related tables simultaneously in accessaccess中同时在相关表中创建记录
【发布时间】:2015-08-30 01:12:39
【问题描述】:

我有我的主表:tbl1Order_Model 和 2 个相关表 tbl2Order_Pairstbl2Order_Customer

我在数据表视图中有一个表单,Pairs 和“客户”字段是“超链接”(不是真正的超链接,只是一个触发并打开这些相关表单的 On GotFocus 事件。

因此,当我的用户在主表单中填写新记录并将选项卡添加到下一个字段时,该字段恰好是 Pairs 一个新的模态/弹出表单打开以指定对的确切详细信息(大小等) .然后这些加起来,在主窗体上只显示Total 数字。

我使用DSUM 函数来找出这个总数 - DSum("[35]+[36]+[37]+[38]+[39]+[40]+[41]+[42]+[43]+[44]+[45]+[46]", "tbl2Order_Pairs", "Order_ID = " & Order_ID)

对于Customer 详细信息也是如此 - 显示更深入的表格以填写客户详细信息和规格。

这非常适用于旧记录(即,当我想更改已经存在的数据时)。但是,当我想创建一条新记录时,我(还)不能在子表中创建它,因为该记录在主表中还不存在。关系是一对一的,参照完整性,更改时更新和删除。

我想保留这个(这样当记录从tbl1OrdeR_Model 中删除时,它也会从相关表中删除)。

有什么方法可以做到这一点?

【问题讨论】:

  • 您可以在“Pairs”表单打开之前添加一些代码来检查“Model”表中是否存在记录,如果没有找到,则保存它。根据您的设计,如果您有一个“取消”按钮,那么您需要删除任何不需要的记录(或提示询问他们是否要丢弃)。
  • 我确实有,基本上在我打开表单之前我会执行“CurrentDb.Execute INSERT ...”但问题是该记录尚未在主表中创建,因为它是 1 -1 关系,它还不能添加到子表中。
  • 假设您的表单使用绑定控件,然后按照@ypicot 的建议进行操作。使用“.Execute”语句不会与表单“对话”,因此表单仍然会设置 Dirty 标志。

标签: vba ms-access


【解决方案1】:

要将表单中的数据刷新到表中,请执行 Me.Dirty = False

类似:

Sub txtMyControl_OnFocus()
    Me.Dirty = False
    DoCmd.FormOpen "mysubform"
End Sub

【讨论】:

  • Me.Dirty = False 究竟在这里实现了什么?
  • 它将您的数据从表单刷新到表中。因此,您的弹出窗口可以使用表格中的更新数据。
猜你喜欢
  • 2016-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-07
相关资源
最近更新 更多