【问题标题】:Simple SQL query in Access fails with a missing semicolon errorAccess 中的简单 SQL 查询因缺少分号错误而失败
【发布时间】:2009-10-06 14:51:54
【问题描述】:

所以,我同时学习 Access 2007、Visual Basic 和 SQL。不理想。

我将此代码附加到标准向导生成界面中的按钮上。我正在尝试将一行从 tblA 复制到 tblB。每次执行代码时,我都会收到消息,“运行时错误 '3137' 在 SQL 语句末尾缺少分号 (;)。”

我猜它期望 SQL 语句在 WHERE? 之前提前终止。但是如果没有 WHERE,我如何将添加附加到特定的行 ID?

Private Sub buttonAdd_Click()
Dim strSQL As String
strSQL = "INSERT INTO [tblB]" & _
    "VALUES (ID, [Name], [Some value], [Some other value])" & _
    "SELECT * FROM tblA" & _
    "WHERE ID = '" & Me.ID & "' " & _
    ";"

DoCmd.RunSQL strSQL
End Sub

【问题讨论】:

    标签: sql ms-access vba


    【解决方案1】:

    语法错误,您需要删除“VALUES”关键字。
    这是假设 ID、[Name]、[Some value] 和 [Some other value] 是 tblB 的列名(我有些犹豫,最后两个名称具有“值”)。
    VALUES() SQL 语法用于提供即时值,但由于您从 tblA 获取值,因此查询应如下所示:

    strSQL = "INSERT INTO [tblB] " & _
        "(ID, [Name], [Some value], [Some other value]) " & _
        "SELECT * FROM tblA " & _
        "WHERE ID = '" & Me.ID & "' " & _
        ";"
    

    编辑:我还在标记之间添加了空格。很好地抓住尼克 D,感谢您注意到这一点!

    【讨论】:

      【解决方案2】:

      您已将字段名称放在 values 子句中,而不是放在表名称之后,并且 tbla 和 where 之间缺少空格。 select后面的value子句和缺少的空格都可能自己导致错误消息。

      strSQL = "INSERT INTO [tblB] (ID, [Name], [Some value], [Some other value])" & _
         "SELECT * FROM tblA " & _
         "WHERE ID = '" & Me.ID & "'"
      

      现在不需要末尾的分号。如果您一次运行多个查询,则只需要它来分隔查询。

      此外,如果 ID 字段是数字,则不应在值周围使用撇号:

      strSQL = "INSERT INTO [tblB] (ID, [Name], [Some value], [Some other value])" & _
         "SELECT * FROM tblA " & _
         "WHERE ID = " & Me.ID
      

      【讨论】:

        【解决方案3】:

        mjv 是正确的。您必须删除 VALUES 关键字,并且您应该在关键字之间放置空格,即:

        "SELECT * FROM tblA" & _
        "WHERE ID = '" & Me.ID & "' " & _
        

        以上将加入"...FROM tblAWHERE ID..."

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-01-17
          • 2015-09-27
          • 2013-08-24
          • 1970-01-01
          • 2023-01-31
          • 2019-11-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多