首页 > 解决方案 > 在 MS Access 中运行 Visual Basic SQL 查询的语法错误

问题描述

我正在尝试在 MS Access 中创建一个日志表,以跟踪对表中日期字段的更改。每次我尝试更改表单中的字段值时,都会收到一条语法错误消息:“查询表达式中的语法错误(缺少运算符)。” 我已经尝试研究如何解决它,但到目前为止我还没有成功。这是我的查询:

    Private Sub Form_BeforeUpdate(Cancel As Integer)
      DoCmd.RunSQL "INSERT INTO DateChangeLog SELECT * FROM Date_table " & _
        "WHERE [Unique Key]=" & [Unique Key]
    End Sub
      

我在这里有什么遗漏吗?谢谢您,这里是新的 MS Access 用户!

标签: sqlvbams-access

解决方案


在没有看到所涉及的数据类型的情况下,我猜这[Unique Key]可能是文本。如果是这种情况,您需要将实际值放在单引号中:

Private Sub Form_BeforeUpdate(Cancel As Integer)
      DoCmd.RunSQL "INSERT INTO DateChangeLog SELECT * FROM Date_table " & _
        "WHERE [Unique Key]='" & [Unique Key] & "'"
    End Sub

作为旁注,INSERT没有列列表的声明SELECT *都是不好的做法。您应该在两者中指定列名。由于我不知道您的列是什么,让我们假设它们是ColA, ColB, 和ColC

Private Sub Form_BeforeUpdate(Cancel As Integer)
      DoCmd.RunSQL "INSERT INTO DateChangeLog(ColA, ColB, ColC) SELECT ColA, ColB, ColC FROM Date_table " & _
        "WHERE [Unique Key]='" & [Unique Key] & "'"
    End Sub

推荐阅读