El 17/02/2013 05:00 p.m., Paola Bruccoleri escribi�:
Show quoted text 53 lines
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!
en cambio as� funciona bien:
StartOfTheMonth(IncMonth(dFechaContrato, 1));
claro... us� la funci�n datetimetostr() y veo que:
EndOfTheMonth(dFechaContrato) + 1; devuelve 01/02/2012 23:59:59 y
StartOfTheMonth(IncMonth(dFechaContrato, 1)); devuelve 01/02/2012
por eso la comparaci�n falla con los siguientes c�lculos al sumar 1 a�o, etc.
aunque ambas funciones devuelven TDateTime..
por el h�bito de sumar 1 a una fecha dada ya que funciona en otros lenguajes, es que lo hice aqu�. Ahora deber� revisar otras cuentas por las dudas
------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20130217/9be14bde/attachment.html>