Redondeo a números enteros en access

Tengo un cuadro de texto independiente y le he introducido una fórmula para que me calcule la edad de una persona con respecto a la fecha actual y la de nacimiento, pero el resultado me aparece con decimales y lo necesito en enteros pues es la edad de la persona.

La formula que he introducido en el es: =Int([FECHA]-[FECHA_DE_NACIMIENTO])/365

El resultado me lo esta dando con decimales

1 Respuesta

Respuesta
1

La función Int tiene que abarcar toda la operación, si no al dividir por 365 siempre te darán decimales:

=Int(([FECHA]-[FECHA_DE_NACIMIENTO])/365)

Gracias por tu respuesta, funciona bien, lo unico es que cuando la fecha se acerca a la de cumpleaños esta me lo pone como si ya tuviera la siguiente edad: por ejemplo, la fecha en que se llena el dato es 16/10/2015 y la persona cumple el 18/10/1976, al realizar el calculo me dice que tiene 39 y en realidad todavia son 38.

Gracias

Hola, ya lo arregle asi: =int(([FECHA]-[FECHA_DE_NACIMIENTO])/365,25). Lo único es que si la fecha que nació es 18/10/1976 y la fecha en que se llena los datos es 18/10/2015, el resultado es 38 y no 39 en realidad. ¿Cómo soluciono esto?

Gracias

Si quieres más precisión en el cálculo de la edad, has de usar una fórmula más compleja, usando o bien una función personalizada para calcular la edad, o añadiendo a la fórmula que tienes condicionales para analizar el mes y el día.

Yo uso esta función personalizada, que has de pegar en un módulo nuevo de tu BD:

'------------------------------------------------------------------------------------------------
'Función para calcular la edad
'------------------------------------------------------------------------------------------------
Public Function fncEdad(FechaNac As Date) As Integer
'Analizamos el mes de la fecha actual
Select Case Month(Date)
    Case Is > Month(FechaNac)
        'Si es mayor que el mes de la fecha de nacimiento, la edad es la diferencia de años
        fncEdad = DateDiff("yyyy", FechaNac, Date)
    Case Is < Month(FechaNac)
        'Si es menor que el mes de la fecha de nacimiento, la edad es la diferencia de años menos uno,
 'pues aún no ha cumplido este año
 fncEdad = DateDiff("yyyy", FechaNac, Date) - 1
    Case Is = Month(FechaNac)
        'Si estamos en el mismo mes, hay que analizar el día, para saber si ya ha cumplido o no
        If Day(Date) < Day(FechaNac) Then 'Si el día actual es menor, aun no cumplió
            fncEdad = DateDiff("yyyy", FechaNac, Date) - 1
        Else
            fncEdad = DateDiff("yyyy", FechaNac, Date)
        End If
End Select
End Function

Y en tu cuadro de texto independiente pondrías simplemente:

=fncEdad([FECHA_DE_NACIMIENTO])

Esta fórmula te dará la edad exacta (en años) entre la fecha del sistema y el campo [[FECHA_DE_NACIMIENTO].

Si [FECHA] fuera otro campos de tu tabla, y no la fecha actual que devuelve la función Fecha(), tendrías que usar esta otra función:

Public Function fncEdad(FechaNac As Date, FechaAct As Date) As Integer
'Analizamos el mes de la fecha actual
Select Case Month(FechaAct)
    Case Is > Month(FechaNac)
        'Si es mayor que el mes de la fecha de nacimiento, la edad es la diferencia de años
        fncEdad = DateDiff("yyyy", FechaNac, FechaAct)
    Case Is < Month(FechaNac)
        'Si es menor que el mes de la fecha de nacimiento, la edad es la diferencia de años menos uno,
 'pues aún no ha cumplido este año
 fncEdad = DateDiff("yyyy", FechaNac, FechaAct) - 1
    Case Is = Month(FechaNac)
        'Si estamos en el mismo mes, hay que analizar el día, para saber si ya ha cumplido o no
        If Day(FechaAct) < Day(FechaNac) Then 'Si el día actual es menor, aun no cumplió
            fncEdad = DateDiff("yyyy", FechaNac, FechaAct) - 1
        Else
            fncEdad = DateDiff("yyyy", FechaNac, FechaAct)
        End If
End Select
End Function

y en tu cuadro del formulario:

=fncEdad([FECHA_DE_NACIMIENTO),[FECHA])

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas