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

Syntax error in INSERT INTO statement RTE '-2147217900 (80040e14)':

我已经尝试将 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

Column 是一个 reserved 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 使用参数查询。这种方法的一个好处是您可以避免由于值定界符引起的问题。