Cambiar valor del registro desde click del botón

Que no he podido resolver. Tengo en mi tabla el campo estatus, en la cual al dar de alta una factura se guarda el estatus "pendiente" (pendiente de pago), y al momento de que se pago la factura, el estatus debe cambiar a "pagado". El procedimiento desde el formulario que hago es busco la factura, veo si es, y al dar click me actualize solo ese registro, que cambie. Así tengo el código, me puedes orientar.

Dim strsql, status As String
    status = "PAGADO"
    strsql = "INSERT INTO Datos_generales (movimiento) "
    strsql = strsql & "VALUES (" & status & ")"
    DoCmd. RunSQL strsql

1 Respuesta

Respuesta
2

Tienes que decirle que campo quieres actualizar, pero también DE QUE REGISTRO EN PARTICULAR es ese campo.

Si el valor que define un registro es, por ejemplo, NumFactura tienes que decirle

docmd.runsql"update [datos_generales] set movimiento=""pagado"" where numfactura=forms!nombredelformulario!numfactura"

En esencia, Actualiza el valor del campo Movimiento a Pagado en aquel registro de la tabla datos_generales en que su numfactura sea igual al numero de factura que está ahora en el registro activo del formulario.

¡Gracias!

Julián González Cabarcos, y lo había intentado con update, pero me modifico toda la columna, otra pregunta a ver si entendí bien tu ejemplo, ¿"numfactura", viene siendo el campo autonumérico y llave primaria?. Al momento que sustituyo, lo hice en código así como me lo pusiste, y desde el asistente de consultas. Este es el código con el asistente

UPDATE facturas SET facturas.movimiento = "PAGADO"
WHERE (((facturas.movimiento)=[Formularios]![Pago factura]![id_factura]));

y este el codigo desde vba .

DoCmd.RunSQL "UPDATE [facturas] set [facturas].movimiento=""PAGADO"" WHERE ([facturas].movimiento)=forms![Pago factura]![id_factura]"

En ambos casos me marca que va a actualizar 0 registros.

Me puedes orientar en donde tengo mal.


                    

Por partes. Primero, efectivamente si no le dices que registro en particular tiene que actualizar te lo hace en todos los registros, para evitar eso está la condición where.

Supongamos que la tabla se llama Facturas, con Idfactura, que yo no lo pondría, ya que en principio un Número de factura es único y ¡Que mejor índice! Lo mismo que el DNI, Numfactura, cliente, fechafctura, etc,.., Movimiento.

Supongamos que has hecho con ella un formulario. Si has dejado el Id, el código sería

docmd.runsql"update facturas set movimiento=""pagado"" where idfactura=forms![pago factura]!idfactura"

Pero me da que lo estás haciendo desde una consulta, y no hace falta para nada. En vista diseño del formulario, añádele un botón de comando y en su propiedades-eventos-Al hacer clic, crea un procedimiento de evento y entre Private Sub y End Sub escribe

docmd.setwarnings false

docmd.runsql"update facturas set movimiento=""pagado"" where idfactura=forms![pago factura]!idfactura"

Si el índice fuera numfactura sería lo mismo pero donde pone Idfacturasería Numfactura

De todas formas, si quieres, repito, si quieres mándame un mensaje a [email protected] y te mando dos o tres ejemplos. Si lo haces, en el asunto del mensaje pon tu alias Jose Luis, y que si no sé quien me escriba ni lo abro.

¡Gracias! 

Julián González Cabarcos, ya te mande correo, espero puedas mandarme ejemplos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas