【问题标题】:Inserting into multiple tables at once based on a value you insert into one table first根据您首先插入一个表的值一次插入多个表
【发布时间】:2019-05-26 07:33:21
【问题描述】:

我正在尝试一次在多个表中创建一行。我遇到的问题是除了第一个表之外的所有表都需要第一个 INSERT 语句中的自动编号/主键。我不完全确定在第一个表之外的表中输入什么值。非常感谢您的帮助!

这是我正在使用的代码:

Private Sub cmdCreate_Click()

    If DCount("*", "[tblRegSR]", "[WorkOrderID] = " & Me![txtID]) > 0 Then
        MsgBox "This record already exists", vbOKOnly + vbExclamation, "Duplicate Record"
    Else
        DoCmd.RunSQL "INSERT INTO tblRegSR (WorkOrderID, CustomerID) VALUES (Me!txtID.Value, Me!Customer.Value)"
        DoCmd.RunSQL "INSERT INTO tbFirstSR (ServiceRecordID) VALUES (WhatGoesHere)"

    End If
End Sub

WhatGoesHere 通常是我插入数据的第一个表的 ID 字段。

【问题讨论】:

    标签: sql database vba ms-access insert


    【解决方案1】:
    DoCmd.RunSQL "INSERT INTO tblRegSR (WorkOrderID, CustomerID) VALUES (Me!txtID.Value, Me!Customer.Value)"
    

    假设您在 tblRegSR 中有一个名为 ID 的字段作为自动编号,您可以像这样将其插入到第二个表中:

    DoCmd.RunSQL "Insert into tblFirstSR (ServiceRecordID) Select Max(ID) from tblRegSR "
    

    【讨论】:

    • 这行得通,但是它带来了更多的错误,呃。这可能是无关的,所以如果需要,我会专门为此发布一个新问题。当我单击该按钮时,它会询问我 Me!txtID 和 Me!Customer 的值。它们都存在于表单上(这是另一个表单中的子表单 - 但按钮位于子表单本身上)。 txtID 是一个简单的文本框,Customer 是一个组合框,其中第 0 列绑定到 ID 但不显示。然后,在附加记录的通知之后,它告诉我它不能附加第一个表 (tblRegSR),说明存在密钥违规。
    • 键违规与在主键字段中插入重复项有关。您可能将 ServiceReocrdID 保存为 PrimaryKey。很难说我什么时候看不到你的桌子是什么样子的。看看这个以获得一些帮助:techrepublic.com/blog/microsoft-office/…
    • 我将 ServiceRecordID 列设置为 NUMBER(索引 - 重复确定)。我在任何表中的唯一主键是 ID 字段。对于在按钮控件所在的同一表单上引用的控件,我是否需要做任何特别的事情?我以为它只是一个 Me!txtID,但也许我错了。
    • 您说您的控件位于子表单中。尝试使用以下语法:Forms![FormName]![SubformName].Form![ControlName]。否则发布一个新问题
    猜你喜欢
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 2017-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多