Calculo de edad por Fecha de Nacimiento

Bueno soy nuevo en access 2007.. Actualmente estoy manejando una extensa población y quisiera llevar registro de sus edades, quisiera desarrollar base de datos que me actualice las edades para un mejor control..

1 Respuesta

Respuesta
1
Formas para calcular la edad hay muchas. Yo te dejo la que uso y que me funciona perfectamente.
Pongamos que en el formulario tengo un control "nacimiento" (donde tengo la fecha de nacimiento de cada persona) y un control "edad" donde quiero que me ponga la edad.
En el formulario creo la siguiente función:
Public Function CalculoEdad(nacimiento As Variant) As Variant
Dim edad As Integer
Dim fecha As Date
If Not IsDate(nacimiento) Then
CalculoEdad = Null
Exit Function
End If
fecha = DateValue(nacimiento)
edad = DateDiff("yyyy", fecha, Date)
If Date < DateSerial(Year(Date), Month(fecha), Day(fecha)) Then
edad = edad - 1
End If
CalculoEdad = edad
End Function
Luego en el evento "al activar registro" del formulario pongo:
me.edad = CalculoEdad (nacimiento)
Hola Experto.. disculpa mi ignorancia en sistemas.. ¿pero dónde tengo que poner toda la información que me pasaste? ¿Es en propiedades de formularios o donde? ¿Tengo qué crear otra cosa? GRACIAS.!
Abres el formulario en vista diseño y te vas al editor de código, (sino lo identificas, en el Menu vete a "Ver / Código". Te abrirá el editor de código y hay (da igual donde) pegas las siguientes lineas:
Public Function CalculoEdad(nacimiento As Variant) As Variant 
Dim edad As Integer 
Dim fecha As Date 
If Not IsDate(nacimiento) Then 
CalculoEdad = Null 
Exit Function 
End If 
fecha = DateValue(nacimiento) 
edad = DateDiff("yyyy", fecha, Date) 
If Date < DateSerial(Year(Date), Month(fecha), Day(fecha)) Then 
edad = edad - 1 
End If 
CalculoEdad = edad 
End Function

Luego en el formulario en las propiedades del formulario buscas la de "al activar registro" y pinchas sobre los ... que aparecen y escoges "generador de código". Esto te abrirá el editor de código con lo siguiente ya escrito:
Private Sub Form_Current()
End Sub
Es en medio de estas dos sentencias pones el me.edad = CalculoEdad (nacimiento), quedando al final de la siguiente manera:
Private Sub Form_Current()
me.edad = CalculoEdad (nacimiento)
End sub
Si tienes algún problema me lo comentas (A ser posible con el mensaje de error que te de. (No tiene por que darte ninguno pero ...)
Un cordial saludo.
Hola experto.. si me resulto tu fórmula.. muy buena. Me da la edad exacta en año.! Otra molestia.. ahí fórmula para que me resulte la edad en meses también o años, meses.. es que también manejo población menor a 1 año..! De antemano gracias por tu ayuda.!
En el formulario, además del control anterior "edad" pondríamos otro control llamado "meses".
La función quedaría así:
PUblic Function CalcularEdad(f_nacimiento As Variant) As Variant
Dim edad As Integer
Dim fecha As Date
If Not IsDate(f_nacimiento) Then
CalcularEdad = Null
Exit Function
End If
fecha = DateValue(f_nacimiento)
edad = DateDiff("yyyy", fecha, Date)
If Date < DateSerial(Year(Date), Month(fecha), Day(fecha)) Then
edad = edad - 1
End If
CalcularEdad = edad
Me.meses = ((DateDiff("m", f_nacimiento, Date)) - (CalcularEdad * 12))
    If Day(Date) < Day(f_nacimiento) Then
        Me.meses = Me.meses - 1
    End If

End Function

Lo demás quedaría igual.
Si sólo quisieras que los meses apareciesen en los menores de 3 años, por ejemplo, sustituye lo que esta en negrita por:
If edad < 3 Then
Me.meses.Visible = True
Me.meses = ((DateDiff("m", f_nacimiento, Date)) - (CalcularEdad * 12))
    If Day(Date) < Day(f_nacimiento) Then
        Me.meses = Me.meses - 1
    End If
    Else
    Me.meses.Visible = False
End If

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas