这个查询一直告诉我在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] & ";"
我只是想让这项工作成功。我选择和插入的值是相同的。
答案 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] & ";"
在这种情况下,列命名应该相同 最好的祝福 马丁