ms-access access-vba ms-access-2010

ms access - Error de sintaxis en la instrucción INSERT INTO RTE ''-2147217900(80040e14)'':



ms-access access-vba (1)

Column es una palabra reservada . Esa puede ser la fuente del error de sintaxis. Y, si es así, puede evitar ese error al encerrar el nombre del campo entre corchetes. Mejor aún, cambie el nombre del campo con una palabra no reservada si es posible.

Si esa sugerencia elimina el primer error, puede evitar otro error posterior agregando comillas alrededor del carácter K en la lista VALUES .

Pruebe esto como una nueva consulta en el diseñador de consultas de Access. Si funciona correctamente, ajuste su código VBA para producir el mismo texto de instrucción INSERT .

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

También tenga en cuenta que podría usar una consulta de parámetros para INSERT . Un beneficio de ese enfoque es que podría evitar problemas debido a los delimitadores de valores.

He intentado pelar el strSQL de vuelta a un solo campo y todo funciona. Tan pronto como agregue un segundo campo, empiezo a obtener el error. Esto me dice que las referencias son correctas. He intentado muchos espacios diferentes alrededor de los () sin suerte tampoco.

?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