[Lazarus-es] comparacion de fechas

Paola Bruccoleri pbruccoleri en adinet.com.uy
Dom Feb 17 20:00:13 CET 2013


El 17/02/2013 04:40 p.m., Paola Bruccoleri escribió:
> Hola todos..
>
> me está d evolviendo mal una comparación cuando se que las fechas son
> iguales...
>
> en un form pido mes y año
>
> var
>   dFecha, dFechaContrato, dFechaAux: TDate;
>   dFechaReaj, dFechaReaj2, dFechaReaj3: TDate;
>
> begin
> .....
>    dFecha:= EncodeDate(StrToInt(edtAnio.Text), StrToInt(cboMes.Text), 
> 1); // 1er dia del mes
>
>     (el campo finicio es tipo date, Firebird y uso componentes Zeos)
>     dFechaContrato:= qryContratos.FieldByName('finicio').AsDateTime;
> if DayOf(dFechaContrato) = 1 then
>       dFechaAux:= dFechaContrato
>     else
>       dFechaAux:= EndOfTheMonth(dFechaContrato) + 1;
>
>     nMeses:= MonthsBetween(dFecha, dFechaAux) + 1;  (sumo 1 porque 
> sino entre 01/02/12 y 01/02/13 da 11 meses)
>
>     if nMeses >= 12 then begin
>       nAnios:= Trunc(nMeses/12);
>       dFechaReaj:= IncYear(dFechaAux, nAnios);
>
>        showmessage(datetostr(dfecha));
>        showmessage(datetostr(dfechareaj));
>
>       if dFecha = dFechaReaj then begin
>             ......... // POR ACA NO PASA Y LAS FECHAS LAS MUESTRA IGUAL
>
>
> alguna idea???
recién descubro que la comparación NO da cuando se hace esta cuenta, 
porque si no se hiciera todo funciona perfectamente. (o sea, con los 
contratos hechos el 1er día del mes)

dFechaAux:= EndOfTheMonth(dFechaContrato) + 1;

o sea, cuando la fecha de contrato no es el 1er día, que debo obtener el 
1er día del mes siguiente....

si tengo como fecha 20/01/2012, dFechaAux debería ser 01/02/2012, le 
sumo 1 año: 01/02/2013 y no compara con dFecha que es 01/02/2013

la verdad.. no se porqué falla esa cuenta!






------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20130217/044879fe/attachment-0002.html>


More information about the Lazarus-es mailing list