Error de sintaxis en la instrucción insert to en access

Disculpen alguien me puede decir por favor que error estoy cometiendo al utilizar la sentencia Insert to dentro de un formulario en access. La instrucción es la siguiente.

CurrentDb. Execute "INSERT INTO Activos(Tipom, Consecutivo, FechaC, Placa, RefNivel2, Tipoactivo, NombreA, Numserie, IdMarca, Modelo, PrecioC, Factura, Idproveedor, Origen, IdCuenta, Poliza, VidaU, Estado, PorDep, Notas)VALUES('" _
& Me.cbotipo & "'," & Me.Consecutivo & ", #" & Me.txtfechac & "#,'" _
& Me.txtplaca & "','" & Me.RefNivel2 & "', " & Me.cbotipoa & ",'" _
& Me.txtdescripcion & "','" & Me.txtserie & "', '" & Me.cbomarca & "','" _
& Me.txtmodelo & "'," & Me.txtprecio & ", '" & Me.txtfactura & "'," _
& Me.cboproveedor & ",'" & Me.cboorigen & "', '" & Me.cbocuenta & "','" _
& Me.txtpoliza & "'," & Me.txtvida & ", '" & Me.cboestado & "'," _
& Me.txtpordep & ",'" & Me.txtobservaciones & "')", dbFailOnError

1 Respuesta

Respuesta
1

En principio, y a nivel de sintaxis, la SQL está bien construida, siempre claro que los los valores que pasas entre comillas correspondan efectivamente con campos de tipo texto en la tabla y no de tipo número (por ejemplo me llama la atención que unos valores de combinados, como "cbotipo", "cboorigen" o "cbocuenta" los pasas como texto mientras otros como "cboproveedor" o "cbotipoa" los pasas como número)

Como no indicas el error que te da, además de lo ya dicho, una posible causa de error estaría en el campo precio si le pasas un valor con decimales y el separador es la coma(,), pues Access lo podría interpretar como que son dos campos distintos y en consecuencia estarías insertando 21 valores en 20 campos. Si el problema es este, la solución sería tan simple como usar Replace() para cambiar la coma por un punto (que es el separador decimal que "entiende" SQL):

& Me.txtmodelo & "'," & Replace(Me.txtprecio,",",".") & ", '" & Me.txtfactura & "'," _

¡Gracias! Parece que ese era el error, el campo de precio de tipo moneda, era el problema.

Pero ahora tengo el problema de que graba 2 veces el registro,

Si te lo graba dos veces es o porque ejecutas el código dos veces, o el formulario es dependiente de la tabla directamente, y ya te lo guarda por defecto sin necesidad de sql ni nada

Ya revise línea por línea y el código se ejecuta una sola vez, todos los campos son independientes.

Lo extraño de la grabación es que en el primer registro únicamente registra la información de los campos Consecutivo y RefNivel2.

En el segundo registro graba todos los campos.

Pues no te sabría decir por qué te pasa eso, y sin ver el archivo, menos. Lo que sí te puedo asegurar es que solo con ese código, te grabará una vez el registro nada más, y además, completo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas