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

Access VBA执行Insert Into Select语句时出现3134语法错误

解决运行时错误'3134'的方案

错误原因及修正点:

  • 保留字未转义:Order是Access的保留字,必须用方括号[]包裹,否则会触发语法错误。
  • SELECT语句多余括号:SELECT子句后的列名不需要加括号,直接列出即可。
  • WHERE条件逻辑错误:直接用<> Me!ItemScheduleSub.Order无法和子窗体的多条记录对比,需要用NOT IN子查询排除已存在的ORDER_NO。
  • 子窗体字段引用问题:若要引用子窗体字段,需通过Form属性,且保留字同样要转义,不过更稳妥的方式是直接查询目标表排除重复。

修正后的代码:

Private Sub cmdFetch_Click()
    If MsgBox("Do you wish to add more records of this item?", vbYesNo, "Add Confirmation") = vbYes Then
        Dim sSQL As String
        sSQL = "INSERT INTO ItemSchedule (Item, [Order], DueDate)" & _
               "SELECT Item, ORDER_NO, DUE_DATE " & _
               "FROM q_ItemFetch " & _
               "WHERE q_ItemFetch.ORDER_NO NOT IN (SELECT [Order] FROM ItemSchedule);"
        DoCmd.RunSQL sSQL
        Me!ItemScheduleSub.Requery
    End If
End Sub

额外说明:

如果你的需求是排除当前子窗体中显示的特定记录(而非整个表的重复项),可将WHERE子句调整为:

"WHERE q_ItemFetch.ORDER_NO NOT IN (SELECT [Order] FROM ItemSchedule WHERE [关联字段] = Me!当前窗体关联值);"

需根据实际业务逻辑替换[关联字段]和Me!当前窗体关联值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 01:57:16