You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA从非绑定窗体向表插入数据时遇3134语法运行时错误求助

解决Runtime Error 3134的问题

你的SQL语法错误根源是表名包含&特殊字符,Access SQL里遇到带特殊字符(&、空格、关键字等)的对象名,必须用方括号[]包裹,否则会被解析成语法错误。另外你的DCount语句里也存在同样的表名问题,还有日期字段的条件没加#,这些都得修正。

修复现有SQL代码

把所有tbl_R&R改成[tbl_R&R],同时修正DCount里日期字段的条件:

On Error GoTo Err_Handler

Dim strSQL As String

' 修正表名和日期条件的格式
If DCount("EmpDBID", "[tbl_R&R]", "EmpDBID=" & Me!EmpDBID) > 0 _
And DCount("RR_Emp_ID", "[tbl_R&R]", "RR_Emp_ID=" & Me!RR_DBID) > 0 _
And DCount("Rewarded_Date", "[tbl_R&R]", "Rewarded_Date=#" & Me!Rewarded_Date & "#") > 0 Then
    MsgBox "This data has already been entered into the Database"
    Exit Sub
Else
    ' 表名用方括号包裹
    strSQL = "INSERT INTO [tbl_R&R] (EmpDBID, Rewarded_Date, RR_DBID, Nominated_by) VALUES (" & Me!EmpDBID & ", #" & Me!Rewarded_Date & "#, " & Me!RR_DBID & ", " & Me!Nominated_by & ");"
    DoCmd.RunSQL strSQL
End If
Exit Sub

Err_Handler:
MsgBox "Error has occurred: " & Err.Description ' 加上错误描述更便于排查
End Sub

更安全的替代方法:用DAO记录集插入数据

拼接SQL容易遇到类型转换、特殊字符的问题,用DAO记录集可以避免这些麻烦,步骤如下:

  1. 确保引用了Microsoft DAO Object Library(VBA编辑器→工具→引用)
  2. 使用以下代码:
On Error GoTo Err_Handler

Dim rs As DAO.Recordset

' 打开表的记录集
Set rs = CurrentDb.OpenRecordset("[tbl_R&R]", dbOpenDynaset)

' 检查重复(改成组合条件判断,逻辑更准确)
If DCount("EmpDBID", "[tbl_R&R]", "EmpDBID=" & Me!EmpDBID & " AND RR_Emp_ID=" & Me!RR_DBID & " AND Rewarded_Date=#" & Me!Rewarded_Date & "#") > 0 Then
    MsgBox "This data has already been entered into the Database"
    rs.Close
    Set rs = Nothing
    Exit Sub
End If

' 添加新记录
rs.AddNew
rs!EmpDBID = Me!EmpDBID
rs!Rewarded_Date = Me!Rewarded_Date
rs!RR_DBID = Me!RR_DBID
rs!Nominated_by = Me!Nominated_by
rs.Update

' 关闭记录集
rs.Close
Set rs = Nothing
Exit Sub

Err_Handler:
MsgBox "Error has occurred: " & Err.Description
If Not rs Is Nothing Then
    If rs.State = dbOpen Then rs.Close
    Set rs = Nothing
End If
End Sub

这个方法不用手动拼接SQL,直接赋值字段,减少语法错误的概率,也更易维护。

内容的提问来源于stack exchange,提问作者mrk777

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 15:05:25