Página 1 de 1

Condicion en Report

Publicado: Mar Sep 27, 2005 8:40 pm
por paco-ssi
Estoy intentando hacer lo siguiente:
Tengo dos campos fecha. El primero siempre tiene valor(ej:15/01/05), pero el
segundo puede estar en blanco. Al hacer el report debe calcular los dias
que hay desde el primer campo al segundo.
M e funciona correctamente
data ::odbf1:hasta- ::odbf1:desde
El problema es cuando el campo ::odbf1:hasta es igual a " / / ".
He querido hacer:
data iif(::odbf1:hasta < ctod("01/01/04"), date()-::odbf1:desde,
::odbf1:hasta- ::odbf1:desde)
No anda..¿ Como se podria hacer?
Gracias
Paco V

Condicion en Report

Publicado: Mar Sep 27, 2005 8:52 pm
por ignacio
Paco,
Todo depende de como quieras que se interprete una fecha vacía, porque para
restar dos entidades cualesquiera, han de ser del mismo tipo, para que me
entiendas, no se pueden restar peras con manzanas.
Creo recordar que en Clipper que una fecha vacía equivalía a 01/01/80, y
supongo que será igual en xHarbour, por lo tanto la diferencia de días entre
una fecha y otra fecha en blanco equivaldría a los fechas entre el 1/1/80 y
el otro día.
No obstante lo más sensato en mi opinión es que le des a la fecha en blanco
un valor defecto, que dependiendo de lo que estes haciendo puede ser
distinto. Para implementarlo en el informe simplemente utiliza una función
FUNCION NumDias( dDesde, dHasta )
DEFAULT dHasta TO ...
RETURN dHasta - dDesde
Y luego en el informe:
data NumDias( ::odbf1:desde, ::odbf1:hasta )
Un saludo,
"Paco V." <paco-ssi@usuarios.retecal.es> escribió en el mensaje
news:[email=43399227@ozsrvnegro.ozlan.local...]43399227@ozsrvnegro.ozlan.local...[/email]
> Estoy intentando hacer lo siguiente:
>
> Tengo dos campos fecha. El primero siempre tiene valor(ej:15/01/05), pero
> el
> segundo puede estar en blanco. Al hacer el report debe calcular los dias
> que hay desde el primer campo al segundo.
>
> M e funciona correctamente
> data ::odbf1:hasta- ::odbf1:desde
>
> El problema es cuando el campo ::odbf1:hasta es igual a " / / ".
> He querido hacer:
>
> data iif(::odbf1:hasta < ctod("01/01/04"), date()-::odbf1:desde,
> ::odbf1:hasta- ::odbf1:desde)
>
> No anda..¿ Como se podria hacer?
>
> Gracias
> Paco V
>
>
>
>
>

Condicion en Report

Publicado: Mar Sep 27, 2005 9:29 pm
por paco-ssi
Gracias Ignacio, no se me habia ocurrido utilizar una funcion. Pense en
hacerlo directamente.
Paco V
"Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
news:433994fd$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Paco,
>
> Todo depende de como quieras que se interprete una fecha vacía, porque
> para restar dos entidades cualesquiera, han de ser del mismo tipo, para
> que me entiendas, no se pueden restar peras con manzanas.
>
> Creo recordar que en Clipper que una fecha vacía equivalía a 01/01/80, y
> supongo que será igual en xHarbour, por lo tanto la diferencia de días
> entre una fecha y otra fecha en blanco equivaldría a los fechas entre el
> 1/1/80 y el otro día.
>
> No obstante lo más sensato en mi opinión es que le des a la fecha en
> blanco un valor defecto, que dependiendo de lo que estes haciendo puede
> ser distinto. Para implementarlo en el informe simplemente utiliza una
> función
>
> FUNCION NumDias( dDesde, dHasta )
>
> DEFAULT dHasta TO ...
>
> RETURN dHasta - dDesde
>
> Y luego en el informe:
>
> data NumDias( ::odbf1:desde, ::odbf1:hasta )
>
> Un saludo,
>
> "Paco V." <paco-ssi@usuarios.retecal.es> escribió en el mensaje
> news:[email=43399227@ozsrvnegro.ozlan.local...]43399227@ozsrvnegro.ozlan.local...[/email]
>> Estoy intentando hacer lo siguiente:
>>
>> Tengo dos campos fecha. El primero siempre tiene valor(ej:15/01/05), pero
>> el
>> segundo puede estar en blanco. Al hacer el report debe calcular los dias
>> que hay desde el primer campo al segundo.
>>
>> M e funciona correctamente
>> data ::odbf1:hasta- ::odbf1:desde
>>
>> El problema es cuando el campo ::odbf1:hasta es igual a " / / ".
>> He querido hacer:
>>
>> data iif(::odbf1:hasta < ctod("01/01/04"), date()-::odbf1:desde,
>> ::odbf1:hasta- ::odbf1:desde)
>>
>> No anda..¿ Como se podria hacer?
>>
>> Gracias
>> Paco V
>>
>>
>>
>>
>>
>
>