2016-03-14 151 views
1

此查詢不斷告訴我我在SQL語句末尾丟失了一個分號,但是當我添加它時,它告訴我在SQL語句末尾有一個字符,出了什麼問題這裏?我習慣於使用SQL Server,所以這對我來說簡直令人困惑。我不確定爲什麼Access需要使用「;」關閉查詢。我只是不確定在哪裏包括它。MS Access查詢幫助INSERT

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

正如在評論他的回答的一個建議由@馬丁,你是這兩種形式的混合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

不用太深入,我會說,你在選擇語句前面缺少一個空格。

更新:

你錯過了在「值」關鍵詞的前第二次的白空間。你複製粘貼了這個查詢,還是剛剛寫入?

我會說,你嘗試爲Insert Into Statement使用混合語句語法。值用於單個記錄追加。這意味着在右括號後面應該有一個分號。對於口譯員來說,Select是一個全新的陳述。我去那不是你想要的。

使用多記錄語法INSERT INTO:

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

在這種情況下,列命名應該是相同 問候 馬丁

+0

我錯過了一個分號,但無所謂,我把它放在哪裏,我不斷收到錯誤 – FatBoySlim7

+1

這是否有幫助:http://stackoverflow.com/questions/74162/how-to-do-insert-into-a -table-records-extracted-from-another-table – 2016-03-14 20:46:54

+0

不,它不是 - 不同的情況。 – FatBoySlim7