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
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
ResponderEliminarEXCELENTE 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
ResponderEliminarMUJCHO 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
ResponderEliminarHola. 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.
ResponderEliminarHe 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.