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
我目前在 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