Access - Cálculo de Edades

 
Vista:

Cálculo de Edades

Publicado por jorge (42 intervenciones) el 19/02/2003 20:01:14
Saludos a todos,
Tengo una tabla que entre otras cosas tiene la fecha de nacimiento de las personas.
¿ Qué comando tengo que utilizar en una consulta para calcular la edad de las personas en años y meses ?
Es decir, si alguien nació el 2 de diciembre de 1990, la consulta debe decir: 12 años y 2 meses.

Intenté restar la fecha de nacimiento de la fecha actual, pero me da una respuesta en días y eso no me es útil.

Gracias por su tiempo y comentarios.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Cálculo de Edades

Publicado por leo (343 intervenciones) el 19/02/2003 22:26:52
debes especificar el formato que queres usar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cálculo de Edades

Publicado por Quime (64 intervenciones) el 20/02/2003 18:57:44
Prueba con esto lo tenia en la Biblioteca de descargas, creo que alguien lo respondio de este foro:

perendat(fecha1, fecha2, "a") para saber los años
perendat(fecha1, fecha2, "m") para saber los meses
perendat(fecha1, fecha2, "d") para saber los dias
Si eres un poco manitas con VB, puedes modificarla y pasarle un tipo
definido por tí para tenerlo todo de una tacada.

Public Function perendat(fecha1, fecha2, tipo)
' tipo: a=años, m=meses, d=dias
Dim ca As Long, cm As Long, cd As Long
Dim f1 As Variant, f2 As Variant
If fecha1 < fecha2 Then
f1 = fecha1: f2 = fecha2
Else
f2 = fecha1: f1 = fecha2
End If
ca = DateDiff("yyyy", f1, f2)
If Format(f2, "mmdd") < Format(f1, "mmdd") Then
ca = ca - 1
End If
cm = DateDiff("m", f1, f2) - (ca * 12)
cd = DateDiff("d", Format(f1, "dd"), Format(f2, "dd"))
If cd < 0 Then
cm = cm - 1
cd = DateDiff("d", DateSerial(Year(f2), Month(f2) - 1, Day(f1)), f2)
End If
Select Case tipo
Case "d"
perendat = cd
Case "m"
perendat = cm
Case "a"
perendat = ca
End Select
End Function


Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cálculo de Edades

Publicado por Antonio (36 intervenciones) el 04/03/2003 16:59:29
Espero tengas la oportunidad de leer esta respuesta y sea útil. Supongamos que tenemos una tabla llamada "DatosPersonales" que contiene un campo "FechaNacimiento". Entonces, creamos una consulta basada en la tabla "DatosPersonales" que contiene un campo calculado "Edad" escribiendo la siguiente expresión en una fila campo vacía:

Edad: SiInm(EsNulo([FechaNacimiento]; " "; EdadActual([FechaNacimiento]))

Dónde "EdadActual" es la llamada a una función pública (creada por el usuario) que calcula la edad actual en años y meses sólo si el campo FechaNacimiento no es nulo. El código de la función es el siguiente:

Public Function EdadActual(FechaNacimiento As Date) As Variant

Dim MesesCompletosTranscurridos As Integer
Dim EdadEnAños As Integer
Dim MesesAdicionales As Integer

MesesCompletosTranscurridos = DateDiff("m", FechaNacimiento, Now)

If Day(Now) < Day(FechaNacimiento) Then
MesesCompletosTranscurridos = MesesCompletosTranscurridos - 1
End if

' Para hallar la edad en años realizas la siguiente división entera.

EdadEnAños = MesesCompletosTranscurridos \ 12

MesesAdicionales = MesesCompletosTranscurridos - (EdadEnAños * 12)

EdadActual = EdadEnAños & " año(s) y " & MesesAdicionales & " mes(es)."


End Function

Si tienes alguna duda sobre el funcionamiento del código puedes escribirme y te explicaré en más detalle.




Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cálculo de Edades

Publicado por Antonio (36 intervenciones) el 17/03/2003 23:55:23
Aún cuando ha transcurrido bastante tiempo, quiero agregar algo al código de la función "EdadActual" para que pueda realizar el cálculo exacto sin importar el día de nacimiento. Si el día de nacimiento de la persona es un día 29, 30 ó 31, entonces cada mes adicional se cumple el día 29,30 ó 31 de cada mes, sólo si el mes contiene este número de días. En caso contrario, cada mes adicional se cumple cuando llega el final del mes. Por ejemplo: Si una persona nació el día 30 de enero del año 2003, entonces su primer mes de vida se cumplirá el día 28 de febrero, pero su segundo mes se cumplirá el día 30 de marzo. Para que el código funcione en estos casos hay que agregar una instrucción condicional (If then....End if)

If Month(Now) = Month (Now +1) Then ' Esta es la línea nueva
´'Las lineas que siguen son la mismas que antes.
If Day(Now) < Day (FechaNacimiento) Then
MesesCompletosTranscurridos = MesesCompletosTranscurridos -1
End if
End if

Lo demás se mantiene igual.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar