【问题标题】:Adding Records to multiple tables with a button使用按钮将记录添加到多个表
【发布时间】:2015-08-06 01:25:35
【问题描述】:

我在表单上创建了一个按钮以添加到多个表中。所以我和下面的表是多对多的关系:

  • tblComputer(计算机)
  • tblHDD(硬盘)
  • tblComputer-HDD(计算机,硬盘)

在表单上,​​我有两个文本框:txtComputer 和 txtHDD。当我单击按钮时,记录将被添加到所有表中。如果 tblComputer 或 tblHDD 的记录存在,那么它只会将它添加到 tblComputer-HDD 中。任何帮助都会很棒!我还在以下链接中提供了数据库:

Add Item database

这也是我的 vba 代码:

Private Sub btnAdd_Click()
  Dim db As Database
  Dim Computer As Recordset
  Dim CompHDD As Recordset
  Dim HDD As Recordset

  Set db = CurrentDb
  Set Computer = db.OpenRecordset("Select * from [tblComputer]")
  Set CompHDD = db.OpenRecordset("Select * from [tblComputer-HDD]")
  Set HDD = db.OpenRecordset("Select * from [tblHDD]")

  If Computer.NoMatch = True Then
    Computer.AddNew
    Computer("Computer") = Me.txtComputer
    Computer.Update

  ElseIf HDD.NoMatch = True Then
    HDD.AddNew
    HDD("HDD") = Me.txtHDD
    HDD.Update

  Else
    CompHDD.AddNew
    CompHDD("Computer") = Me.txtComputer
    CompHDD("HDD") = Me.txtHDD
    CompHDD.Update
  End If

  txtComputer.Value = ""
  txtHDD.Value = ""

  Set Computer = Nothing
  Set CompHDD = Nothing
  Set HDD = Nothing
  Set db = Nothing
End Sub

【问题讨论】:

    标签: ms-access vba many-to-many add


    【解决方案1】:

    如果您在所有三个表上都放置了一个主键,那么您可以简单地附加这些值。 PK 将防止添加重复项。

    我将使用以下命令将计算机和 HDD 对添加到 tblComputer-HDD 表中。您应该能够更改语法以处理此示例中的其他两个表追加。

    DoCmd.SetWarnings False
    DoCmd.Execute "INSERT INTO [tblComputer-HDD] ([Computer], [HDD]) VALUES ('" & Me.txtComputer & "', '" & Me.txtHDD & "')"
    'Other Code
    DoCmd.SetWarnings True
    

    【讨论】:

    • 我有点困惑。因此,对于 tblComputer,我的 PK 是计算机,对于 tblHDD,我的 PK 是 HDD。所以你的意思是我应该删除 tblComputer-HDD 上的复合键并创建自己的 PK 对吗?
    • 谢谢!我明白你想说什么了!此外,在我单击按钮后,它一直给我一条消息,说“您将要追加 1 行。一旦单击是,您就不能使用撤消命令来撤消更改。您确定要追加选定的行?”我可以删除它吗?
    • 更新答案以禁用这些提示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-04
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    相关资源
    最近更新 更多