Calcular edad en campo de formulario independiente

Que tengo un formulario independiente con los campos "F_Nacimiento" y "Edad", entre otros.

Los Datos de estos campos se llenan mediante un cuadro Combinado en el evento "después de actualizar" Dicho Combo, toma los valores de la tabla "T_Personas".

La Idea es que al llenar los campos con los valores importados de la tabla personas, y antes de guardarlos en otra tabla, me calcule la edad actual.

Lo he intentando con esta función  Me.Edad = Fix((Date - [F_Nacimiento]) / 365,24) en el  evento al recibir el enfoque del campo  "Edad", pero no me funciona..

¿Alguna sugerencia?

3 Respuestas

Respuesta
1

Para números positivos Fix e Int devuelven el mismo resultado (devuelven la parte entera), el error probablemente lo genere la coma como separador decimal en lugar del punto.
Access espera un numero y se le entrega una lista con dos elementos (en VBA la coma es el separador de listas).

Me.Edad = Fix((Date - [F_Nacimiento]) / 365.24)

El dato de fecha (si no proviene de un campo de tipo Date) ha de ir en formato americano o la alternativa de convertirlo en dato de tipo fecha con la función CDate que traduce a formato de fecha Access cualquiera de los formatos regionales locales.

Me plantearía el guardar un dato calculado que solo es real cuando se calcula ...

Respuesta
1

El problema está en la coma (,) reemplácela por un punto (.) Y dele al campo F_Nacimiento formato fecha corta. No obstante, la fórmula no es exacta para calcular los años.

Le dejo esta función que es más precisa, ya que su fórmula para una fecha de nacimiento del 25/09/1957 da como edad 65 años, y aún no se han cumplido.

Pruebe con esta función

Public Function laedad(mfecha1 As Date, Optional mfecha2 As Date) As Integer
    If CLng(mfecha2) = 0 Then
     mfecha2 = Date
    End If
    If Month(mfecha1) > Month(mfecha2) Then
        laedad = DateDiff("yyyy", mfecha1, mfecha2) - 1
    Else
        laedad = DateDiff("yyyy", mfecha1, mfecha2)
    End If
End Function

En su caso quedaría

Me.Edad = laedad( [F_Nacimiento],Date)

Esto para el torpe Julián González ¿Por qué la formula siguiente no es correcta?

Fix((Date - [F_Nacimiento]) / 365.24)

¿Qué pasa si la fecha de nacimiento es el 24/06/2021 y aplicamos la fórmula reemplazando Date por 24/06/2022 (hoy). El resultado es 0 y es FALSO porque la edad es 1 año. Este error desde hace muchos años lo cometen muchos usuarios de Access, tal vez el inexperto Julián lo ha tomado de esta información.

Ahora si lo hacemos con la fórmula que propongo:

laedad("24/06/2021",date)  , efectivamente retorna 1 año (date es 24/06/2022 hoy)

Respuesta
1

Algunos hablan por hablar, cuando deberían pensar antes lo que dicen

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas