¿Cuál es la forma correcta para insertar el valor de un form a una tabla de Access 2016 mediante instrucción Sql?

Solicito amablemente su ayuda en lo siguiente: Estoy haciendo mis primeras pruebas con Sql y estoy intentando enviar el valor del campo "txtImporte" de mi form a la tabla Cliente mediante lenguaje Sql, pero me arroja un error, el cual me indica que en la instrucción Sql me falta un ";".

Es importante aclarar que la condición que estoy utilizando es el valor del campo "txtCodCliente" del form, el cual contiene el código del cliente y que lo compare con el CodCliente de la tabla Clientes para que inserte el importe en donde corresponde.

Private Sub txtImporte_Click()
Dim sql As String
sql = "insert into Cliente(Importe)" & " Values(txtImporte) FROM Cliente WHERE CodCliente= '" & Me.txtCodCliente& "'"
DoCmd.RunSQL sql
End Sub

Anexo imagen de la tabla Cliente.

De antemano gracias por su valiosa colaboración.

1 Respuesta

Respuesta
2

Yo no lo haría en el evento "al hacer clic" del cuadro de texto, sino en el mismo evento de un botón, o si lo quieres hacer en algún evento del cuadro de texto, usaría "después de actualizar".

Además, si lo que pretendes es actualizar el campo importe de la tabla, tienes que usar una SQL de tipo UPDATE, no una de tipo INSERT.

El código que yo usaría sería:

CurrentDb.Execute "UPDATE Cliente SET Importe=" & Me.txtImporte & " WHERE CodCliente= '" & Me.txtCodCliente & "'"

Si ves que te da algún error por culpa de los decimales, hazlo así:

CurrentDb.Execute "UPDATE Cliente Set Importe=" & Str(Me.txtImporte) & " WHERE CodCliente= '" & Me.txtCodCliente& "'"

Buenos días, gracias por la atención.

La sugerencia de utilizar el evento "Después de actualizar" en el campo de texto, me parece muy buena para que el valor  se vaya actualizando de manera automática sin la necesidad de usar el evento click.

Lo he aplicado pero creo que algo me falta por hacer, ya que cuando modifico el importe del cuadro de texto, no se guarda el valor en el campo "Importe" de la tabla Cliente.

Lo he hecho tal y como me lo indica en su mensaje:

Private Sub txtImporte_AfterUpdate()
CurrentDb.Execute "UPDATE Cliente SET Importe=" & Me.txtImporte & " WHERE CodCliente= '" & Me.txtCodCliente & "'"
End Sub

Si coloco la instrucción a un botón de comando con el evento click, funciona; pero si aplico el evento AfterUpdate directamente al campo de texto para hacer lo mismo, no hace nada.

Me gustaría que se actualizara la tabla sin necesidad de utilizar un botón con el evento click.

Saludos.

A mi me funciona perfectamente: http://www.filebig.net/files/mFRCV88wfH 

Fíjate que no llega solo con que escribas un valor en el cuadro de texto, tienes que salir de él (a otro cuadro de texto, botón...) para que el evento se produzca y se ejecute el código. Lo comento por si ése es el problema

Buenos días!

Gracias,  su ejemplo funciona correctamente, tal vez mi problema radique en que yo no escribo directamente en el campo de texto, sino que el campo txtImporte muestra la suma de una columna de mi subformulario detalle., entonces cada vez que se agrego o modifico un precio unitario dentro del subform, la suma va cambiando en el campo de texto del form.

En mi form solo tengo un ComboBox donde elijo el IdCliente, dos campos de texto, el primer campo muestra el CodCliente , el segundo el importe de la suma y dos botones uno para cerrar el form y el último lo he agregado para ejecutar el código que me hizo favor de enviar mediante el evento click.

Vale, si al cuadro de texto no le das valor directamente (escribiendo en él), el evento "después de actualizar" no se lanza y por tanto no ejecuta el código.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas