Necesito Almacenar edad en access

Hola expertos...tengo un formulario que tiene datos personales, entre ellos fecha y fecha de nacimiento, forzosamente necesito almacenar la edad calculada entre ambos, he estado buscando pero solo he encontrado ayudas a través de consultas, pero en este caso es necesario almacenarlo...quisiera saber cual es la formula y donde debo aplicarla para que la calcule y pueda almacenarla en el campo respectivo...;muchas gracias

1 Respuesta

Respuesta
1

Para la solución que te propongo, los datos tienes que introducirlos a través de un formulario.

El primer paso es insertar un módulo independiente en tu BD, y le pegas este código:

Public Function calculaEdad(laFNac As Date, laFecha As Date) As Integer
'Función original por Neckkito - 22/01/13. Modificada por Sveinbjorn
 'Declaramos las variables
 Dim vAnoNac As Integer, vMesNac As Integer, vDiaNac As Integer
 Dim vAnoF As Integer, vMesF As Integer, vDiaF As Integer
 'Descomponemos las fecha de nacimiento
 vAnoNac = Year(laFNac)
 vMesNac = Month(laFNac)
 vDiaNac = Day(laFNac)
 'Descomponemos la fecha actual
 vAnoF = Year(laFecha)
 vMesF = Month(laFecha)
 vDiaF = Day(laFecha)
 'Suponemos inicialmente que la edad es la diferencia en años. Eso implica
 'que damos por supuesto que el mes actual es superior al mes de nacimiento
 calculaEdad = vAnoF - vAnoNac
'Analizamos el mes por si se contradice nuestra suposición inicial. Caben
 'dos posibilidades. Que sea menor o que sea igual
 Select Case vMesF
    Case Is < vMesNac 'Si es menor...
        calculaEdad = calculaEdad - 1 'Restamos una unidad (aún no ha hecho el "cumple")
    Case Is = vMesF 'Si es el mismo mes...
    'Debemos analizar el día. Si el día actual es menor es que aún no ha
 'cumplido años...
        If vDiaF < vDiaNac Then
            calculaEdad = calculaEdad - 1 '... y debemos restarle una unidad
        End If
 End Select
End Function

Luego, en el evento "Al recibir el enfoque" de tu campo "edad" (suponiendo que se llama así), le generas este otro código:

Private Sub Edad_GotFocus()
If Not IsNull(Me.FechaNacimiento) And Not IsNull(Me.Fecha) Then Me.Edad = calculaEdad(Me.FechaNacimiento, Fecha)
End Sub

De esta manera, cada vez que coloques el cursor el el campo "edad", si hay fecha y fecha de nacimiento, te calculará la edad y te la guardará en la tabla.

Gracias por tu respuesta, haré las pruebas y te notificaré

Perdona mi ignorancia pero soy algo principiante en access como inserto el modulo en mi BD.

Para insertar un módulo, tienes varias opciones, que dependerán un poco de la versión de access que estes usando.

Pero hay una que te valdrá independientemente de la versión, y es pulsar Alt+F11 para que se te abra el editor de VBA, y ahí, en el menú, vas a Insertar->Módulo.

Para generar el código al campo edad, abres tu formulario en Vista Diseño, te colocas encima del campo "edad", haces click derecho->Propiedades->Pestaña Eventos y locallizas el evento "Al recibir enfoque". Luego pulsas el boton que aparece a la derecha con 3 puntos, seleccionas "Generador de código" y ahí lo pegas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas