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

Access使用INSERT INTO VALUES语句报运行时错误3078问题求助

错误根因

你拼接SQL字符串时在外层额外多加了两层双引号,导致最终传给Access数据库引擎的是被双引号包裹的整段SQL文本,引擎无法识别这是可执行的SQL语句,会直接将其当作表/查询的名称去查找,因此触发3078错误。

修复方案

基础修复(字符串拼接写法)

首先移除最外层多余的""",同时给所有字符串类型的字段值包裹单引号,还要转义字段值中自带的单引号避免语法报错,修复后代码如下:

Dim strSQL As String
        
strSQL = "INSERT INTO tblVolunteers " & vbCrLf & _
            "VALUES ('" & Replace([txtTitle], "'", "''") & "','" & Replace([txtFirstName], "'", "''") & "','" & Replace([txtMiddle], "'", "''") & "','" & Replace([txtLastName], "'", "''") & "','" & Replace([txtEmail], "'", "''") & _
            "','" & Replace([txtPhone], "'", "''") & "','" & Replace([txtChurch], "'", "''") & "','" & Replace([txtGroup], "'", "''") & "','" & Replace([txtCouncil], "'", "''") & "'," & [chkParCo] & ",'" & _
            Replace([txtMailAdd], "'", "''") & ");"
    
' 调试:按Ctrl+G可在VBA编辑器立即窗口查看拼接完成的完整SQL,方便排查问题
Debug.Print strSQL
CurrentDb.Execute strSQL, dbFailOnError

更安全的优化方案(参数化查询)

字符串拼接写法容易出现语法问题、存在SQL注入风险,更推荐使用参数化查询,不需要处理符号转义,代码更稳定:

Dim qdf As DAO.QueryDef
Dim strSQL As String
' 字段名请和你实际表tblVolunteers的字段名保持一致
strSQL = "INSERT INTO tblVolunteers (title, firstName, middle, lastName, email, phone, church, groupName, council, parCo, mailAdd) " & _
         "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
Set qdf = CurrentDb.CreateQueryDef("", strSQL)
' 按SQL中参数的顺序依次赋值
qdf.Parameters(0) = [txtTitle]
qdf.Parameters(1) = [txtFirstName]
qdf.Parameters(2) = [txtMiddle]
qdf.Parameters(3) = [txtLastName]
qdf.Parameters(4) = [txtEmail]
qdf.Parameters(5) = [txtPhone]
qdf.Parameters(6) = [txtChurch]
qdf.Parameters(7) = [txtGroup]
qdf.Parameters(8) = [txtCouncil]
qdf.Parameters(9) = [chkParCo]
qdf.Parameters(10) = [txtMailAdd]
qdf.Execute dbFailOnError
Set qdf = Nothing

内容的提问来源于stack exchange,提问作者Michael E. Ehinger

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:15:03