2015-04-17 43 views
2

我試過將strSQL重新放回到一個字段中,一切正常。只要我添加第二個字段,我開始收到錯誤。這告訴我參考是正確的。我已經嘗試了很多不同的()的空間,沒有運氣。INSERT INTO語句中的語法錯誤RTE'-2147217900(80040e14)':

?strSQL 
INSERT INTO tbl_buyer_column (ship_id, aels_id, buyer_wss, column, date_created)VALUES(23, 13, K, 1, #04/17/2015#) 



Public Sub fun_insert_into(lngship_id As Long, lngAels_id As Long, strBuyer_wss As String, lngColumn As Long, datDate_created As Date) 

Dim strSQL As String 
Dim adoCon As ADODB.Connection 
Dim adoCmd As ADODB.Command 
Set adoCon = CurrentProject.Connection 
Set adoCmd = New ADODB.Command 

strSQL = "INSERT INTO tbl_buyer_column (ship_id, aels_id, buyer_wss, column, date_created)" & _ 
    "VALUES(" & lngship_id & ", " & lngAels_id & ", " & strBuyer_wss & ", " & lngColumn & ", " & SQLDate(datDate_created) & ")" 

    With adoCmd 
     .ActiveConnection = adoCon 
     .CommandType = adCmdText 
     .CommandText = strSQL 
     .Execute 
    End With 

adoCon.Close 
Set adoCon = Nothing 
Set adoCmd = Nothing 
End Sub 

回答

3

Columnreserved word。這可能是語法錯誤的根源。而且,如果是這樣,您可以通過將字段名稱放在方括號中來避免該錯誤。更好的是,如果可能的話,用非保留字重新命名字段。

如果這個建議的確消除了第一個錯誤,你可以通過在VALUES列表周圍的字符加上引號ķ避免再次在稍後的錯誤。

將其作爲Access查詢設計器中的新查詢進行測試。如果工作正常,請調整您的VBA代碼以生成相同的INSERT聲明文本。

INSERT INTO tbl_buyer_column (ship_id, aels_id, buyer_wss, [column], date_created) 
VALUES (23, 13, 'K', 1, #04/17/2015#) 

另外請注意,你可以使用參數查詢爲INSERT。這種方法的一個好處是你可以避免由於價值分隔符造成的問題。

+2

不要不同意你所說的任何話,但在大多數情況下,最好避免首先使用保留字。 – Casey

+0

需要[]和'around buyer_wss。 – Kaw4Life

相關問題