Cómo crear dos funciones para calcular la edad en meses y años en Access
Avanzado: requiere conocimientos expertos de codificación, interoperabilidad y multiusuario.
Este artículo se aplica a una base de datos de Microsoft Office Access (.accdb y .mdb) y al proyecto de Microsoft Access (.apd).
Resumen
En este artículo se muestra cómo crear dos funciones que puede usar para calcular la edad de una persona o cosa en función de una fecha especificada.
Nota:
Puede ver una demostración de la técnica que se usa en este artículo en el archivo de ejemplo Qrysmp00.exe.
Más información
Creación de las funciones
Escriba o pegue el código siguiente en un módulo:
'==========================================================
' General Declaration
'==========================================================
Option Explicit
'*************************************************************
' FUNCTION NAME: Age()
'
' PURPOSE:
' Calculates age in years from a specified date to today's date.
'
' INPUT PARAMETERS:
' StartDate: The beginning date (for example, a birth date).
'
' RETURN
' Age in years.
'
'*************************************************************
Function Age (varBirthDate As Variant) As Integer
Dim varAge As Variant
If IsNull(varBirthdate) then Age = 0: Exit Function
varAge = DateDiff("yyyy", varBirthDate, Now)
If Date < DateSerial(Year(Now), Month(varBirthDate), _
Day(varBirthDate)) Then
varAge = varAge - 1
End If
Age = CInt(varAge)
End Function
'*************************************************************
' FUNCTION NAME: AgeMonths()
'
' PURPOSE:
' Compliments the Age() function by calculating the number of months
' that have expired since the last month supplied by the specified date.
' If the specified date is a birthday, the function returns the number of
' months since the last birthday.
'
' INPUT PARAMETERS:
' StartDate: The beginning date (for example, a birthday).
'
' RETURN
' Months since the last birthday.
'*************************************************************
Function AgeMonths(ByVal StartDate As String) As Integer
Dim tAge As Double
tAge = (DateDiff("m", StartDate, Now))
If (DatePart("d", StartDate) > DatePart("d", Now)) Then
tAge = tAge - 1
End If
If tAge < 0 Then
tAge = tAge + 1
End If
AgeMonths = CInt(tAge Mod 12)
End Function
Prueba de las funciones Age() y AgeMonths()
Para probar las funciones Age() y AgeMonths(), siga estos pasos.
Importante
Los pasos siguientes le piden que cambie la fecha en el equipo. Asegúrese de completar el paso 6 para restablecer la fecha a la fecha actual.
Mediante el uso de la herramienta Fecha y hora en Panel de control, tome nota de la fecha actual y, a continuación, establezca la fecha en 3 de junio de 2001.
Abra un módulo o cree uno nuevo.
En el menú Ver, haga clic en Ventana inmediata.
Supongamos que la fecha de nacimiento de su amigo fue el 15 de noviembre de 1967 y hoy es el 3 de junio de 2001. Escriba la línea siguiente en la ventana Inmediato y presione ENTRAR:
? Edad("11/15/67")
Tenga en cuenta que Microsoft Access responde con el valor 33 (años).
Escriba la línea siguiente y, a continuación, presione ENTRAR:
? AgeMonths("11/15/67")
Tenga en cuenta que Microsoft Access responde con el valor 6, lo que indica que han pasado seis meses desde el último cumpleaños de esta persona. Tu amigo tiene 33 años y seis meses.
Mediante el uso de la herramienta Fecha y hora en Panel de control, restablezca la fecha a la fecha actual que anotó en el paso 1.
Uso de las funciones Age() y AgeMonths()
En el procedimiento siguiente se explica cómo marcar pedidos antiguos colocando el valor de antigüedad en un nuevo control.
En la base de datos de ejemplo Northwind.mdb, escriba las funciones Age() y AgeMonth() en un nuevo módulo.
Abra el formulario Pedidos en la vista Diseño y agregue un control de cuadro de texto sin enlazar.
Escriba la línea siguiente en la propiedad ControlSource del nuevo control de cuadro de texto:
=Age([OrderDate]) & " yrs " & AgeMonths([OrderDate]) & " mos"
Vea el formulario en la vista Formulario. Tenga en cuenta que la antigüedad del pedido se muestra en el nuevo control de cuadro de texto.
Referencias
Para obtener más información sobre las diferencias de fecha, en el Editor de Visual Basic, haga clic en Ayuda de Microsoft Visual Basic en el menú Ayuda, escriba la función datediff en el Asistente para Office o el Asistente para respuestas y, a continuación, haga clic en Buscar para ver el tema.
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de