INSERT INTO语句RTE' -2147217900(80040e14)'中的语法错误:

时间:2015-04-17 16:44:09

标签: ms-access access-vba ms-access-2010

我已经尝试将strSQL恢复到只有一个字段,一切正常。一旦我添加第二个字段,我就开始收到错误。这告诉我引用是正确的。我在()的周围尝试了很多不同的间距,也没有运气。

?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

1 个答案:

答案 0 :(得分:3)

Columnreserved word。这可能是语法错误的根源。并且,如果是这样,您可以通过将字段名称括在方括号中来避免该错误。更好的是,如果可能的话,用非保留字重命名字段。

如果该建议确实消除了第一个错误,您可以通过在VALUES列表中的字符 K 周围添加引号来避免其他错误。

在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使用参数查询。这种方法的一个好处是可以避免由于值分隔符而导致的问题。