Módulo Visual para calcular en Access la Edad o el tiempo en años, meses y días

 Option Compare Database

'--------------------------------------------------------------------------------------------

' Función que permite calcular la la edad en años, meses y días

' Por Miguel Ángel Sierra

'--------------------------------------------------------------------------------------------

Public Function CalcularEdad(ByVal FECHANACIMIENTO As Date) As String

Dim vCalcularAño As Double

Dim vCalcularMes As Double

Dim vCalcularDia As Double

Dim FechaActual As Date

Dim temp As Date

'En el caso de no meter la fecha, entonces no se calcula nada

If IsNull(FECHANACIMIENTO) Then

    CalcularEdad = ""

    Exit Function

End If

FechaActual = Date

'aquí se calcula que la fecha de nacimiento sea mayor que la fecha actual

If FECHANACIMIENTO > FechaActual Then

    temp = FECHANACIMIENTO

    FECHANACIMIENTO = FechaActual

    FechaActual = temp

ElseIf FECHANACIMIENTO = FechaActual Then 'aquí se contempla que las dos fechas fuean iguales

    CalcularEdad = "0 días"

    Exit Function

End If

'aquí se calcula la diferencia en años entre ambas fechas

If Month(FECHANACIMIENTO) > Month(FechaActual) Then

    vCalcularAño = DateDiff("yyyy", FECHANACIMIENTO, FechaActual) - 1

Else

    vCalcularAño = DateDiff("yyyy", FECHANACIMIENTO, FechaActual)

End If

'aquí se calcula la diferencia en meses entre ambas fechas

If Day(FECHANACIMIENTO) > Day(FechaActual) Then

    vCalcularMes = DateDiff("m", DateAdd("yyyy", vCalcularAño, FECHANACIMIENTO), FechaActual) - 1

    If vCalcularMes < 0 Then

        vCalcularMes = 12 + vCalcularMes

        vCalcularAño = vCalcularAño - 1

    End If

Else

    vCalcularMes = DateDiff("m", DateAdd("yyyy", vCalcularAño, FECHANACIMIENTO), FechaActual)

End If

'aquí se calcula la diferencia en dias entre ambas fechas

vCalcularDia = DateDiff("d", DateAdd("m", vCalcularAño * 12 + vCalcularMes, FECHANACIMIENTO), FechaActual) ' Mod 7

'Esta es la base del cálculo

If vCalcularAño = 1 Then

    CalcularEdad = vCalcularAño & " año"

ElseIf vCalcularAño > 1 Then

    CalcularEdad = vCalcularAño & " años"

End If

If vCalcularMes = 1 Then

    CalcularEdad = IIf(CalcularEdad = "", "", CalcularEdad & " y ") & vCalcularMes & " mes"

ElseIf vCalcularMes > 1 Then

    CalcularEdad = IIf(CalcularEdad = "", "", CalcularEdad & " y ") & vCalcularMes & " meses"

End If

If vCalcularDia = 1 Then

    CalcularEdad = IIf(CalcularEdad = "", "", CalcularEdad & " y ") & vCalcularDia & " día"

ElseIf vCalcularDia > 1 Then

    CalcularEdad = IIf(CalcularEdad = "", "", CalcularEdad & " y ") & vCalcularDia & " días"

End If

End Function


Comentarios

  1. En el código del módulo está el condicional IF isNull "FechaNacimiento" Then "calcularedad " "" y el comentario "en caso de no meter la fecha, entonces no se calcula nada", este campo debería ser obligatorio ¿ Se puede dejar obligatorio en la base de datos de empleados en el campo "FechaNacimiento"?. o ¿se puede agregar código al módulo?.....Excelente el video, gracias por tus aportes y Un abrazo desde Colombia

    ResponderEliminar
  2. EXCELENTE DE LO MEJOR, EN MI CASO TRABAJO CON FORMULARIOS CON LOS CAMPOS DE FECHA DE NACIMIENTO Y EDAD, TRABAJO CON NIÑOS DE 0 A 6 AÑOS, COMO PODRIA PONER QUE CUANDO GTENGA MAS DE 5 AÑOS 11 MESES INDIOQUE QUE YA N O ES BENEFICIARIO. UN GRAN PREMIO PARA TI QUE MUCHOS LO ESTABAMOS ESPERANDO DIOS TE PREMIE CON SALUD Y EXITOS

    ResponderEliminar
  3. MUJCHO MEJOR SERIA SI NOS PUEDAS PASAR UN EJEMPLO DESARROLLADO EN EL ACCESS SERIA UN GOL PARA MUCHOS QUE NO COMPRENDEMOS TANTO COMO TU EL DESARROLLO DE LO MAGNIFICO DELPROGRAMITA

    ResponderEliminar
  4. Hola. En primer lugar mi gratitud por la elaboración de este tutorial. Es muy bueno y sobre todo muy fácil de entender para los no "profesionales" como yo.
    He creado el módulo y lo he aplicado tal como se describe en el video. Todo ha funcionado perfectamente excepto cuando el campo de la "FechaNacimiento" se encuentra vacío.
    Se supone según el código que debería de mostrar "", o sea, en blanco, nada, pero en mi caso no es asi. Tanto en el registro nuevo como en los ya introducido en los que el campo fechq esta sin rellenar, en vez de aparecer en blanco me muestra esto: #¡Tipo! Y he probado a cambiar cosas y nombres y formatos pero no consigo que desaparezca esa expresión.
    Se supone que según el código:
    If IsNull(FechaNacimiento) Then
    CalcularEdad = ""
    debería de darme un valor vacío o nulo en el campo pero ya te digo que no es así.
    ¿Puede que haya algún error en el código?
    ¿O estoy haciendo algo mal?
    Muchas gracias.

    ResponderEliminar

Publicar un comentario