MS Access查询帮助INSERT

时间:2016-03-14 20:25:27

标签: sql vba ms-access select

这个查询一直告诉我在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] & ";"

我只是想让这项工作成功。我选择和插入的值是相同的。

2 个答案:

答案 0 :(得分:2)

正如@Martin在其回答的一条评论中所建议的那样,你混淆了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关键字已被省略。

答案 1 :(得分:1)

如果不深入研究,我会说,您在选择声明前面缺少一个空格。

<强>更新

你在&#34;价值观&#34;前面错过了第二个空白区域。关键词。您是否复制粘贴此查询,或者您刚刚将其写入?

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

使用多记录语法插入:

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

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