【问题标题】:MS Access query assistance INSERTMS Access 查询帮助 INSERT
【发布时间】:2016-06-30 01:43:56
【问题描述】:

这个查询一直告诉我我在 SQL 语句的末尾缺少一个分号,但是当我添加它时,它告诉我在 SQL 语句的末尾找到了一个字符,这里有什么问题?我习惯于使用 SQL Server,所以这让我很困惑。我不确定为什么 Access 需要使用“;”关闭查询。我只是不确定在哪里包含它。

strSQL = "Insert Into [tempCaseMgmt]Values([planID],[EdId],[OrID],[TheDate],  [TypeID],[UserID],[TimeStart],[TimeEnd],[Unitsled],[Unitsid],[ClientID],  [GenderID])" _
 & " Select * from [dbo_tempDetail] where [userid]= " & [Forms]![frmx]! [txtClientID] & ";"

我只是在努力完成这项工作。我选择和插入的值是相同的。

【问题讨论】:

    标签: sql vba ms-access select


    【解决方案1】:

    正如@Martin 在其中一个 cmets 中对他的回答所建议的那样,您正在混淆INSERT INTO 的两种形式,具体来说,

    INSERT INTO ... VALUES ...
    

    INSERT INTO ... SELECT ...
    

    在我自己的简化示例中,失败并显示“运行时错误'3137':SQL 语句末尾缺少分号 (;)。”

    Dim strSQL As String
    strSQL = "Insert Into [tempCaseMgmt]Values([planID],[UserID])" _
            & " Select * from [dbo_tempDetail] where [userid]=1" & ";"
    Dim cdb As DAO.Database
    Set cdb = CurrentDb
    cdb.Execute strSQL, dbFailOnError
    

    这是可行的

    Dim strSQL As String
    strSQL = "Insert Into [tempCaseMgmt] ([planID],[UserID])" _
            & " Select * from [dbo_tempDetail] where [userid]=1" & ";"
    Dim cdb As DAO.Database
    Set cdb = CurrentDb
    cdb.Execute strSQL, dbFailOnError
    

    请注意,Values 关键字已被省略。

    【讨论】:

      【解决方案2】:

      不用太深入研究,我会说,您在 select 语句前面缺少一个空格。

      更新:

      您错过了“值”关键字前面的第二个空格。你是复制粘贴了这个查询,还是直接写进去了?

      我会说,您尝试对 Insert Into 语句使用混合语句语法。值用于单个记录追加。这意味着你应该在右括号后加一个分号。对于解释器来说,Select 是一个全新的语句。我说那不是你想要的。

      使用多记录语法插入:

      "Insert Into [tempCaseMgmt] \n
      Select * from [dbo_tempDetail] where [userid]= " & [Forms]![frmx]![txtClientID] & ";"
      

      在这种情况下,列命名应该相同 最好的祝福 马丁

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多