FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Calcular la edad execta de una persona
Muy buenas, amigos foristas.
quisiera calcular la edad exacta de una persona a partir de una sentencia sql o de delphi.... intente usar el datepart(year, fecha), datepart(month,fecha) y datepart(day,fecha), pero solo el primero me ofrece los años exactos, luego los meses me los dá globales y los dias por igual... A ver que me dicen, amigos... Gracias de antemano |
#2
|
||||
|
||||
Aquí tienes la función que yo utilizo:
Esta otra es de Federico Firenze:
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#3
|
|||
|
|||
Gracias Marcoszorrilla, la verdad que para lograr lo que queria, pues tuve que agregarle algunos pasos a tu función. Ahí te le dejo por si aca... la concluí hasta donde la queria... Siempre son mil veces agradecias sus colaboraciones.
Function Edad(FechaNacimiento : TDate) :string; Var an, mn, dn : Word; ahoy, mhoy, dhoy : Word; RAnos, Rmeses, Rdias:word; resultado:string; Begin DecodeDate(FechaNacimiento, an, mn, dn); DecodeDate(Now, ahoy, mhoy, dhoy); If (mn > mhoy) or((mn = mhoy) and (dn > dhoy)) then Ranos:=ahoy - an - 1 else RAnos:=ahoy - an; if (mn - mhoy) < 0 then RMeses:= 12 + (mn - mhoy); if (mn - mhoy) = 0 then Rmeses:= 0; if (mn - mhoy) > 0 then RMeses:= mn - mhoy; // if ranos = 0 then begin case Rmeses of 0: Resultado := ''; 1: Resultado := 'Un mes'; // else // Resultado := inttostr(Rmeses) + ' meses'; end; end else begin if ranos = 1 then resultado:= 'Un año' else resultado:= inttostr(ranos) + ' años' end; case Rmeses of 0: Resultado := Resultado + ''; 1: Resultado := resultado + 'Un mes'; else Resultado := resultado + ', ' + inttostr(Rmeses) + ' meses'; end; result:=resultado; end; Esto me tira la edad con los meses, ejemplo 35 años, 3 meses es +/- la edad exacta. Faltarian los días pero no los necesito por ahora. |
|
|
|