PDA

Ver la Versión Completa : DBGrid, trabajar con fechas


BlueSteel
02-09-2005, 20:28:30
Hola Amigos..

Estoy utilizando un DBGrid, en donde despliego datos de una tabla. Un campo es de tipo date (Interbase 6 - Delphi 7), llamado Fec_Nacimiento.

Ahora bien, lo que quiero es realizar un calculo (en el mismo DBGrid), para que en vez de la columna Fec_Nacimiento me aparesca la Edad (tanto en Años como en Meses, calculada a la fecha actual ).

Es decir, en vez de que aparezca 03-12-1976 aparesca 28 Años, 9 Meses

:p :confused:

delphi.com.ar
02-09-2005, 20:30:24
Yo me tiraría a crear un campo calculado. Busca en el foro que hay información de sobra al respecto.

Saludos!

BlueSteel
02-09-2005, 20:31:06
en este hilo http://www.clubdelphi.com/foros/showthread.php?t=18365&highlight=calcular+edadencontre la función para calcular la edad con años y meses...

Mi otra consulta... se puede hacer en el DBGrid, que en vez de que salga el campo Fecha_Nacimiento aparezca la edad ? o tendría que hacerlo en una columna nueva ? :D

jmariano
02-09-2005, 20:40:08
Tal y como te dijo Federico, primero creas el campo calculado (para cálcular el valor del campo utilizarías la función que encontraste) y después editas el DBGrid para quitar el campo "Fecha_Nacimiento" (a través de la propiedad "Columns") y añadir el campo calculado, eso eso todo!

Saludos!

BlueSteel
02-09-2005, 21:30:20
Realice un proceso más corto.. .para poder calcular la edad en Años y Meses


label7.Caption :=Concat(IntToStr(Trunc(Date - nacimiento.Date) div 365),' Años ',IntToStr((Trunc(Date - nacimiento.Date) - (Trunc(Date - nacimiento.Date) div 365) * 365) div 30),' Meses');


Explicación:

Con

(Trunc(Date - nacimiento.Date) div 365)

el codigo anterio me calculo la cantidad de años...



( Trunc(Date - nacimiento.Date) - (Trunc(Date - nacimiento.Date) div 365) * 365) div 30

el codigo anterior me calcula los meses

Se supone que nacimeinto.date es un dato en formato de fecha que contiene la fecha_nacimiento y date muestra la fecha_actual... todo esto lo despliego en un label.

Espero que sirva..