Cómo crear dos funciones para calcular la edad en meses y en años en Microsoft Access

Avanzado: requiere conocimientos avanzados de código, interoperabilidad y multiusuario.

Este artículo se refiere a una base de datos de Microsoft Office Access (.mdb y .accdb) y a un proyecto de Microsoft Access (.adp).

Para obtener una versión de este artículo para Microsoft Access 2000, consulte
210522 .

Para obtener una versión de este artículo para Microsoft Access 97, consulte
290190 .

Resumen

En este artículo se muestra cómo crear dos funciones que puede utilizar para calcular la edad de una persona o de una cosa basándose en una fecha especificada.

Nota: puede ver una demostración de la técnica utilizada en este artículo en el archivo de ejemplo Qrysmp00.exe. Para obtener información adicional acerca de cómo obtener este archivo de ejemplo, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

207626 ACC2000: En el Centro de descarga hay disponibles consultas de ejemplo de Access 2000

Más información

Crear 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

Probar las funciones Age() y AgeMonths()

Para probar las funciones Age() y AgeMonths(), siga estos pasos.


IMPORTANTE: en los pasos siguientes se le pide que cambie la fecha del equipo. Asegúrese de que completa el paso 6 para restablecer la fecha a la fecha actual.

  1. Utilizando la herramienta Fecha y hora del Panel de control, anote la fecha actual y establezca la fecha en el 3 de junio de 2001.

  2. Abra un módulo o cree uno nuevo.

  3. En el menú Ver, haga clic en Ventana Inmediata.

  4. Suponga que la fecha de nacimiento de su amigo fue el 15 de noviembre de 1967 y hoy es 3 de junio de 2001. Escriba la línea siguiente en la ventana Inmediata y presione Entrar:

    ?Age("11/15/67")

    Observe que Microsoft Access responde con el valor 33 (años).

  5. Escriba la línea siguiente y presione Entrar:

    ?AgeMonths("11/15/67")

    Observe que Microsoft Access responde con el valor 6, lo que indica que han pasado seis meses desde el último cumpleaños de esta persona. Su amigo tiene 33 años y seis meses de edad.

  6. Utilizando la herramienta Fecha y hora del Panel de control, restablezca la fecha a la fecha actual que anotó en el paso 1.

Utilizar las funciones Age() y AgeMonths()

El procedimiento siguiente explica cómo marcar los pedidos antiguos colocando el valor de antigüedad en un nuevo control.

  1. En la base de datos de ejemplo Neptuno.mdb, escriba las funciones Age() y AgeMonth() en un nuevo módulo.

  2. Abra el formulario Pedidos en la vista Diseño y agregue un control de cuadro de texto independiente.

  3. Escriba la línea siguiente en la propiedad OrigenDelControldel nuevo control de cuadro de texto:

    =Age([FechaPedido]) & " años " & AgeMonths([FechaPedido]) & " meses"

  4. Vea el formulario en la vista Formulario. Observe que la antigüedad del pedido se muestra en el nuevo control de cuadro de texto.

Referencias

Para obtener más información acerca de las diferencias de fecha, en el Editor de Visual Basic, haga clic en Ayuda de Microsoft Visual Basic en el menú Ayuda, escriba función diffecha en el Ayudante de Office o en el Asistente para Ayuda y, a continuación, haga clic en Buscar para ver el tema.

¿Necesita más ayuda?

Ampliar sus conocimientos
Explorar los cursos
Obtener nuevas características primero
Unirse a Microsoft Insider

¿Le ha sido útil esta información?

¡Gracias por sus comentarios!

Gracias por sus comentarios. Quizá le interese ponerse en contacto con uno de nuestros agentes de soporte de Office.

×