Procedimiento para crear dos funciones para calcular la antigüedad en meses y años en Access

Nota

Office 365 ProPlus pasa a llamarse Microsoft 365 Apps para empresas. Para obtener más información sobre este cambio, lea esta publicación de blog.

Avanzado: requiere capacidades multiusuario, interoperabilidad y Codificación experta.

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

Resumen

En este artículo se muestra cómo crear dos funciones que se pueden usar para calcular la edad de una persona o una cosa basándose en 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

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

  1. Mediante la herramienta fecha y hora del panel de control, anote la fecha actual y, a continuación, establezca la fecha en 3 de junio de 2001.

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

  3. En la Viewmenu, haga clic en ventana inmediato.

  4. Supongamos que la fecha de nacimiento de su amigo era 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, a continuación, presione ENTRAR:

    ? Age ("11/15/67")

    Tenga en cuenta que Microsoft Access responde con el valor 33 (años).

  5. 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 transcurrido seis meses desde el último cumpleaños de esta persona. Su amigo tiene 33 años y seis meses de antigüedad.

  6. Mediante el uso de la herramienta fecha y hora del panel de control, restablezca la fecha a la fecha actual que anotó en el paso 1.

Uso de las funciones Age () y AgeMonths ()

El siguiente procedimiento explica cómo marcar los pedidos antiguos colocando el valor de 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 siguiente línea en la ControlSourceproperty del nuevo control de cuadro de texto:

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

  4. Ver el formulario en la vista formulario. Tenga en cuenta que la antigüedad del orden se muestra en el control cuadro de texto nuevo.

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 DateDiff en el ayudante de Office o en el Asistente para ayuda y, a continuación, haga clic en buscar para ver el tema.