如何在Access 2010中创建一个表单以将记录插入到两个相关表中?

时间:2015-02-02 22:23:18

标签: ms-access ms-access-2010

我有三个表:一个父表和两个子表。两个子表与父表具有一对一的关系。这种结构的原因是因为两个子表共享一些特征,但它们也有不同之处。我想要完成的是避免直接进入父表并为子表提供表单,然后这些表也会填充父表中的字段(不在子表中的字段)。

P.S。我是Access 2010的新手。

2 个答案:

答案 0 :(得分:1)

这很容易做到。 我将展示一个孩子的案例。然后你可以多次复制它 让我们假设这个结构

父表

  • IDParent - >键
  • PField1
  • PField2 ......

子表

  • IDChild1 - >关键
  • CField1
  • CField2
  • ...
  • Parent_ID - >链接到父 table(IDParent)

通过IDParent - > Parent_ID。

在父和子之间创建关系

所以这是管理记录添加的代码。 在子窗体的AfterInsert事件中,您可以放置​​像这样的代码

Private Sub Form_AfterInsert()
  Dim rsParent As DAO.Recordset
  Dim lngParentID As Long

  '
  ' Creates a recordset from Parent table
  '
  set rsParent = CurrentDb.OpenRecordset("SELECT * FROM tbParent",dbOpenDynaset)                    

  ' Creates a new record in parent table
  With rsParent  
      .AddNew
      .Fields("PField1") = ...              ' Populate fields here
      .Fields("PField2") = ...
      .Update

  End With

  rsParent.MoveLast
  lngParentID = rs.Fields("IDParent)        ' Get IDParent of recently added parent record

  rsParent.Close                            ' Close recordset

  Me.Parent_ID = lngParentID                ' Assign to current record inserted in child table the link to parent record just created  

  Me.Requery                                ' Refresh recordset under child form

End Sub

如果您正在寻找,请告诉我。

再见 WIZ

答案 1 :(得分:0)

您可以通过VBA代码执行此操作,也可以设置正确的关系(数据库关系),以便自动更新信息。

您需要确保所有表都具有将表相互关联的主键,否则没有用于更新表的参考点。

您可能需要查看the MS KB article,并密切关注有关强制执行参照完整性的部分。