我已经尝试将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
答案 0 :(得分:3)
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
使用参数查询。这种方法的一个好处是可以避免由于值分隔符而导致的问题。