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..
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
1 comentario
Hola, he seguido el tutorial como indicas pero me sale el error "La expresión 'Al activar registro' que ha especificado como valor de la propiedad de evento produjo el error. Se esperaba: separador de listas o).Tengo todo el formulario montado con un campo nacimiento pero no se como poner campo edadUn saludo - Usuario Apa
Hola, he seguido el tutorial como indicas pero me sale el error "La expresión 'Al activar registro' que ha especificado como valor de la propiedad de evento produjo el error. Se esperaba: separador de listas o).Tengo todo el formulario montado con un campo nacimiento pero no se como poner campo edadUn saludo - Usuario Apa