Twee functies maken om de leeftijd in maanden en in jaren te berekenen in Access

Geavanceerd: vereist professionele codering, interoperabiliteit en vaardigheden voor meerdere gebruikers.

Dit artikel is van toepassing op een Microsoft Office Access-database (.accdb en .mdb) en op het Microsoft Access-project (.apd).

Samenvatting

In dit artikel wordt beschreven hoe u twee functies maakt die u kunt gebruiken om de leeftijd van een persoon of ding te berekenen op basis van een opgegeven datum.

Opmerking

U ziet een demonstratie van de techniek die in dit artikel wordt gebruikt in het voorbeeldbestand Qrysmp00.exe.

Meer informatie

De functies maken

Typ of plak de volgende code in een module:

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

De functies Age() en AgeMonths() testen

Voer de volgende stappen uit om de functies Age() en AgeMonths() te testen.

Belangrijk

In de volgende stappen wordt u gevraagd de datum op uw computer te wijzigen. Zorg ervoor dat u stap 6 hebt voltooid om de datum opnieuw in te stellen op de huidige datum.

  1. Gebruik het hulpmiddel Datum/tijd in Configuratiescherm, noteer de huidige datum en stel de datum in op 3 juni 2001.

  2. Open een module of maak een nieuwe module.

  3. Klik in het menu Beeld op Direct venster.

  4. Stel dat de geboortedatum van je vriend 15 november 1967 was en dat het vandaag 3 juni 2001 is. Typ de volgende regel in het venster Direct en druk op Enter:

    ? Leeftijd("15-11-67")

    Microsoft Access reageert met de waarde 33 (jaren).

  5. Typ de volgende regel en druk op Enter:

    ? AgeMonths("15-11-67")

    Houd er rekening mee dat Microsoft Access reageert met de waarde 6, wat aangeeft dat er zes maanden zijn verstreken sinds de laatste verjaardag van deze persoon. Je vriend is 33 jaar en zes maanden oud.

  6. Met het hulpprogramma Datum/tijd in Configuratiescherm stelt u de datum opnieuw in op de huidige datum die u in stap 1 hebt genoteerd.

De functies Age() en AgeMonths() gebruiken

In de volgende procedure wordt uitgelegd hoe u oude orders markeert door de leeftijdswaarde in een nieuw besturingselement te plaatsen.

  1. Typ in de voorbeelddatabase Northwind.mdb de functies Age() en AgeMonth() in een nieuwe module.

  2. Open het formulier Orders in de ontwerpweergave en voeg een niet-afhankelijk tekstvakbesturingselement toe.

  3. Typ de volgende regel in het besturingselement ControlSource van het besturingselement voor het nieuwe tekstvak:

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

  4. Bekijk het formulier in de formulierweergave. Houd er rekening mee dat de leeftijd van de volgorde wordt weergegeven in het nieuwe tekstvakbesturingselement.

Verwijzingen

Voor meer informatie over datumverschillen klikt u in de Visual Basic Editor op Microsoft Visual Basic Help in het menu Help, typt u de functie dateediff in de Office-assistent of de antwoordwizard en klikt u vervolgens op Zoeken om het onderwerp weer te geven.