PDA

Ver la Versión Completa : restar fechas para comparar resultado


@-Soft
13-07-2003, 14:42:49
hola

estoy realizando una aplicacion con delphi6-mysql3.23-zeosdbo y hasta ahora toda esta bien.

pero necesito hacer una resta de fechas y comparar los resultado con una condicion.

me explico:

tengo un DateEdit de las RXLib donde digito la fecha de compra del equipo y luego de capturar esta fecha tengo que restarsela a la fecha del sistema (Now o Date) para obtener el total de dias que tiene el equipo, este resultado lo almaceno en una variable llamada (tiempo). Luego en la condicion si tiempo > 0 y < 93 en un edit llamado tipo de garantia se despliega (COMPLETA). luego si no se cumple esta primera codicion pasa a la segunda, si tiempo > 93 y < 272 entonces se despliega (SERVICIOS). y si no se cumplen ninguna de las dos entonces sera igual a (NINGUNA).

espero que puedan ayudarme, gracias...

marcoszorrilla
13-07-2003, 18:04:03
Por qué no guardas la diferencia entre las fechas en una variable y a partir de ahí comparas?


procedure TForm1.Button1Click(Sender: TObject);
var
nDias:Variant;
begin
nDias:=Date - table1fecha.value ;
ShowMessage(IntToStr(nDias));
end;



Un Saludo.

@-Soft
13-07-2003, 21:29:52
hola marcoszorrilla

lo que acabas de explicar es cierto, pero no es exactamente lo que quiero.

la fecha que quiero restar de la fecha del sistema no esta almacenada en un BD, sino que la estoy capturando en un DateEdit de las RXLibs y que al presionar enter o seleccionar del calendario que trae, en el Edit donde se captura el tipo de garantia este despliegue automaticamente de acuerdo a la cantidad de dias que de el resultado de la resta y la condicion que la ha de procesar.

ej:


procedure TForm1.DateEdit1KeyPress()
var
nDias:Variant;
begin
if Key = #13 then
begin
nDias:=Date - DateEdit1.Text ;
if nDias > 0 and nDias < 93 then
begin
Edit5.Text := 'COMPLETA';
end else
if nDias > 93 and nDias < 272 then
begin
Edit5.Text := 'SERVICIOS';
end else
Edit5.Text := 'NINGUNA';
end;
end;
end;


me da un error de: Operation not applicable.

otro saludo

marcoszorrilla
13-07-2003, 22:37:05
No trabajo con las RX pero prueba con este cambio:

procedure TForm1.DateEdit1KeyPress()
var
nDias:Variant;
begin
if Key = #13 then
begin
nDias:=Date - StrToDate(DateEdit1.Text) ;
if nDias > 0 and nDias < 93 then
begin
Edit5.Text := 'COMPLETA';
end else
if nDias > 93 and nDias < 272 then
begin
Edit5.Text := 'SERVICIOS';
end else
Edit5.Text := 'NINGUNA';
end;
end;
end;


Un Saludo.

Alfredo Soler
13-07-2003, 23:28:41
Las DateEdit de las RXLib tienen una propiedad Date que puedes utilizar, porque te devuelven la fecha en formato date, es decir que no necesitas la función StrToDate.

La línea del cambio quedaría así:


nDias:=Date - DateEdit1.date ;

Lepe
14-07-2003, 18:33:03
Me permiten que me meta donde no me llaman ?? :D

Y ya puestos a sugerencias.... en lugar de usar un Edit para que ponga
completa, servicios o ninguna... por qué
no elegir un TcomboBox por ejemplo?

Tcombobox.style := csDropDownList // evita que el usuario
//modifique el valor

en la propiedad items, escribe:

COMPLETA
SERVICIOS
NINGUNA

Y por fin el código quedará así:


procedure TForm1.DateEdit1KeyPress()
var
nDias:Variant;
begin
if Key = #13 then
begin
nDias:=Date - DateEdit1.Date ;
if nDias > 0 and nDias < 93 then
combobox1.itemindex:=0
else
if nDias > 93 and nDias < 272 then
combobox1.itemindex:=1
else
combobox1.itemindex:=2
end
end;



Saludos