Actualizar todos los registros de una tabla
Hola, tengo una tabla llamada ArchCaja con unos registros que tienen un valor x en en el campo "Valor" y quiero que al dar click en un boton, a este valor de este campo se le reste 100, no soy experto, aqui tengo lo que creí que podría funcionar pero no fué así:
ArchCaja.Open; ArchCaja.IndexName := 'PorFecha'; ArchCaja.CancelRange; ArchCaja.SetRange([desdeFr.date],[hastaFr.date]); ArchCaja.Edit; ArchCaja.FieldByName('Valor').AsInteger := ArchCaja.FieldByName('Valor').AsInteger - 100; ArchCaja.Post; Al ejecutar este código, solo me cambia el valor del primer registro, pero lo que necesito es cambiar ese valor en todos los registros del rango solicitado de fecha. Gracias a todos los que me puedan dar una idea. |
Si lo haces registro a registro tendrás que realizar un recorrido por todos los registros de la tabla e ir cambiando de uno en uno. Algo así:
Otra opción más eficiente es utilizar una consulta SQL; La lanzar y te hará la actualización de todos los registros. Bastante más rápido dependiendo del número de registros. Crea un Query y asigna a la propiedad SQL:
Depende de los componentes que esté utilizando puede variar la sintaxis, pero es para que te hagas una idea. Con esta sólo instrucción te cambiará de una pasada el valor para todos los registros de la tabla. Un saludo. |
Yo utilizaria la segunda opcion es mas sencilla y asi lo que necesitas... salu2
|
Código:
> El mensaje es el siguiente: He creado una tablita sencilla con 2 campos: Campo1 Campo2 ------------------ 1 2000 2 2000 3 4000 4 5000 5 6000 6 3000 Y he ejecutado la sentencia:
Luego he revisado los valores: Campo1 Campo2 -------------------- 1 2003 2 2003 3 4003 4 5003 5 6003 6 3003 |
Gracias a Todos
Hola, gracias a todos lo que me ayudaron, finalmente todas sus respuestas estaban bien , el error estaba en el tipo del campo que yo estaba procesando. Lo tenía como TBCDField y lo dejé como TCurrencyField.
|
La franja horaria es GMT +2. Ahora son las 13:14:11. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi