VBA 代码的重复记录 运行 时间错误

Duplicate Record run time error for VBA code

我目前在 Access 2013 中工作。

我遇到的问题是,我试图通过按钮将记录从主窗体复制到子窗体。

我的表格包括:

tbl40_1                      tbl40_1_changes

ID (PK)                      ID (PK)
System_Name                  40_1_ID (FK)
Configuration_Type           System_Name
Configuration_ID             Configuration_Type
Reference_Document           Configuration_ID 
Approval_Authority           Reference_Document
Approval_Mechanism           Approval_Authority
Item_Location                Approval_Mechanism 
Custodian                    Item_Location  
                             Custodian              

我当前的按钮代码包括:

Private Sub Duplicate_Click()

Dim strInsert
Dim db As DAO.Database

StrInsert = "INSERT INTO tbl40_1_changes_subform (ID, [System_Name], [Configuration_Type], [Configuration_ID], [Reference_Document], [Approval_Authority], [Approval_Mechanism], [Item_Location], [Custodian]" & _
            "SELECT ID, [System_Name], [Configuration_Type], [Configuration_ID], [Reference_Document], [Approval_Authority], [Approval_Mechanism], [Item_Location], [Custodian]" & _
            "FROM frm40_1" & _
            "WHERE [40_1_ID] = " & Me.tbl40_1_changes_subform.Form.txt40_1_ID

Set db = CurrentDb()

db.Execute strInsert, dbFailOnError
Set db = Nothing


End Sub

当我点击按钮时,[StrInsert = "INSERT INTO"、"Select"、"From"、"Where" 出现 运行 次错误].我不确定这段代码有什么问题,因为它突出了整段代码。

您的换行符处缺少空格。

加个Debug.Print StrInsert看看吧

而且,正如 Hynek Bernard 所写,INSERT 子句缺少结尾 )

尝试

StrInsert = "INSERT INTO tbl40_1_changes (ID, [System_Name], [Configuration_Type], [Configuration_ID], [Reference_Document], [Approval_Authority], [Approval_Mechanism], [Item_Location], [Custodian])" & _
            " SELECT ID, [System_Name], [Configuration_Type], [Configuration_ID], [Reference_Document], [Approval_Authority], [Approval_Mechanism], [Item_Location], [Custodian]" & _
            " FROM frm40_1" & _
            " WHERE [40_1_ID] = " & Me.tbl40_1_changes_subform.Form.txt40_1_ID

Debug.Print StrInsert   ' Ctrl+G shows Debug output

编辑

我认为你的 WHERE 子句很不对。您正在从 frm40_1(在主窗体上)复制到子窗体上的 tbl40_1_changes,对吗?

如果 tbl40_1_changes.ID 是自动编号,则无法设置。

然后你需要像

这样的东西
StrInsert = "INSERT INTO tbl40_1_changes (40_1_ID, [System_Name], [Configuration_Type], [Configuration_ID], [Reference_Document], [Approval_Authority], [Approval_Mechanism], [Item_Location], [Custodian])" & _
            " SELECT ID, [System_Name], [Configuration_Type], [Configuration_ID], [Reference_Document], [Approval_Authority], [Approval_Mechanism], [Item_Location], [Custodian]" & _
            " FROM tbl40_1" & _
            " WHERE ID = " & Me.ID