PDA

Ver la Versión Completa : Modificar un campo de una selaccion de una tabla


chipsoni
05-05-2006, 11:52:51
Quiero poner el campo 'no_rebibido', que es un entero, a 1, en todas las entradas de una tabla cuya diferencia del campo 'fecha', que es tipo Date, con la fecha actual, sea mayor de 15 dias.

Como se hace en delphi (la base de datos es mysql)?

Muchas gracias.

trashky
05-05-2006, 12:04:46
UPDATE tabla SET no_recibido=1 WHERE datediff(fecha,curdate()) > 15

creo que asi deberia de funcionar :P
suerte

chipsoni
05-05-2006, 13:07:33
Asi?

Add('UPDATE tdemanda SET no_recibida=1');
Add(WHERE datediff(fecha,curdate())>15');

Te coge el curdate() sin tener que pasarselo en un parambyname, o es?

Add('UPDATE tdemanda SET no_recibida=1');
Add(WHERE datediff(fecha,:fecha2)>15');
ParamByName('fecha2'):=curdate();

noshy
05-05-2006, 20:27:22
El datediff y el cordate son funciones de SQL no de delphi, por eo las tenes que poner dentro de la consulta de SQL.

Espero que te soluciones el problema.

Noshy

chipsoni
06-05-2006, 14:01:22
Algo falla y no se que es, voy a explicar lo mas detalladamente posible que es lo que hago y que es lo que quiero.

Necesito que cuando ejecute el programa, el sistema mire las fechas de todas las entradas de una tabla y las que tengan mas de 15 dias de antigüedad, me ponga el campo estado (entero) al valor 5.

1)En la ventana principal (la que se abre cuando se hace login correcto), pongo un Query.

2)En activate de la ventana principal escribo:

with Query do
begin
with SQL do
begin
DataModule1.tdemanda.close;
Clear;
DataModule1.tdemanda.open;
Add('UPDATE tdemanda SET estado=5');
Add('WHERE datadiff(date,curdate())>15');
Open;
end;
end;