Come creare due funzioni per calcolare l'età in mesi e anni in Access

Avanzate: richiede competenze esperte di codifica, interoperabilità e multiutente.

Questo articolo si applica a un database di Microsoft Office Access (con estensione accdb e .mdb) e a un progetto di Microsoft Access (con estensione apd).

Riepilogo

Questo articolo illustra come creare due funzioni che è possibile usare per calcolare l'età di una persona o di una cosa in base a una data specificata.

Nota

È possibile visualizzare una dimostrazione della tecnica usata in questo articolo nel file di esempio Qrysmp00.exe.

Ulteriori informazioni

Creazione delle funzioni

Digitare o incollare il codice seguente in un modulo:

'==========================================================
' 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

Test delle funzioni Age() e AgeMonths()

Per testare le funzioni Age() e AgeMonths(), seguire questa procedura.

Importante

La procedura seguente richiede di modificare la data nel computer. Assicurarsi di completare il passaggio 6 per reimpostare la data alla data corrente.

  1. Usando lo strumento Data/ora in Pannello di controllo, prendere nota della data corrente e quindi impostare la data sul 3 giugno 2001.

  2. Aprire un modulo o crearne uno nuovo.

  3. Scegliere Finestra immediata dal menu Visualizza.

  4. Si supponga che la data di nascita del tuo amico fosse il 15 novembre 1967 e che oggi sia il 3 giugno 2001. Digitare la riga seguente nella finestra Immediata e quindi premere INVIO:

    ? Age("15/11/67")

    Si noti che Microsoft Access risponde con il valore 33 (anni).

  5. Digitare la riga seguente e quindi premere INVIO:

    ? AgeMonths("15/11/67")

    Si noti che Microsoft Access risponde con il valore 6, che indica che sono trascorsi sei mesi dall'ultimo compleanno di questa persona. Il tuo amico ha 33 anni e sei mesi.

  6. Usando lo strumento Data/ora in Pannello di controllo, reimpostare la data alla data corrente annotata nel passaggio 1.

Uso delle funzioni Age() e AgeMonths()

La procedura seguente illustra come contrassegnare i vecchi ordini inserendo il valore di età in un nuovo controllo.

  1. Nella Northwind.mdb di database di esempio digitare le funzioni Age() e AgeMonth() in un nuovo modulo.

  2. Aprire la maschera Ordini in visualizzazione Struttura e aggiungere un controllo casella di testo non associato.

  3. Digitare la riga seguente nella proprietà ControlSource del nuovo controllo casella di testo:

    =Age([OrderDate]) & " yrs " & AgeMonths([OrderDate]) & " mos"

  4. Visualizzare la maschera in visualizzazione Maschera. Si noti che l'età dell'ordine viene visualizzata nel nuovo controllo casella di testo.

Riferimenti

Per altre informazioni sulle differenze di data, nel Editor di Visual Basic fare clic su Guida di Microsoft Visual Basic nel menu ?, digitare datediff function (Funzione datediff) nell'Assistente di Office o nella Creazione guidata risposte e quindi fare clic su Cerca per visualizzare l'argomento.