Erstellen von zwei Funktionen zum Berechnen des Alters in Monaten und Jahren in Access

Erweitert: Erfordert Expertenkenntnisse für Codierung, Interoperabilität und Mehrbenutzerfähigkeiten.

Dieser Artikel bezieht sich auf eine Microsoft Office Access-Datenbank (ACCDB und .mdb) und ein Microsoft Access-Projekt (APD).

Zusammenfassung

In diesem Artikel erfahren Sie, wie Sie zwei Funktionen erstellen, mit denen Sie das Alter einer Person oder eines Gegenstands basierend auf einem angegebenen Datum berechnen können.

Hinweis

Eine Demonstration der in diesem Artikel verwendeten Technik finden Sie in der Beispieldatei Qrysmp00.exe.

Weitere Informationen

Erstellen der Funktionen

Geben Sie den folgenden Code in ein Modul ein, oder fügen Sie ihn ein:

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

Testen der Funktionen Age() und AgeMonths()

Führen Sie die folgenden Schritte aus, um die Funktionen Age() und AgeMonths() zu testen.

Wichtig

In den folgenden Schritten werden Sie aufgefordert, das Datum auf Ihrem Computer zu ändern. Stellen Sie sicher, dass Sie Schritt 6 abschließen, um das Datum auf das aktuelle Datum zurückzusetzen.

  1. Notieren Sie sich mithilfe des Tools Datum/Uhrzeit in Systemsteuerung das aktuelle Datum, und legen Sie das Datum dann auf den 3. Juni 2001 fest.

  2. Öffnen Sie ein Modul, oder erstellen Sie ein neues Modul.

  3. Klicken Sie im Menü Ansicht auf Direktfenster.

  4. Angenommen, das Geburtsdatum Ihres Freundes war der 15. November 1967 und heute der 3. Juni 2001. Geben Sie im Direktfenster die folgende Zeile ein, und drücken Sie dann die EINGABETASTE:

    ? Alter ("15.11.67")

    Beachten Sie, dass Microsoft Access mit dem Wert 33 (Jahre) antwortet.

  5. Geben Sie die folgende Zeile ein, und drücken Sie dann die EINGABETASTE:

    ? AgeMonths("15.11.67")

    Beachten Sie, dass Microsoft Access mit dem Wert 6 antwortet, der angibt, dass seit dem letzten Geburtstag dieser Person sechs Monate vergangen sind. Ihr Freund ist 33 Jahre und sechs Monate alt.

  6. Setzen Sie das Datum/Uhrzeit-Tool in Systemsteuerung auf das aktuelle Datum zurück, das Sie sich in Schritt 1 notiert haben.

Verwenden der Funktionen Age() und AgeMonths()

Im folgenden Verfahren wird erläutert, wie Sie alte Bestellungen markieren, indem Sie den Alterswert in einem neuen Steuerelement platzieren.

  1. Geben Sie in der Beispieldatenbank Northwind.mdb die Funktionen Age() und AgeMonth() in ein neues Modul ein.

  2. Öffnen Sie das Formular Aufträge in der Entwurfsansicht, und fügen Sie ein Ungebundenes Textfeld-Steuerelement hinzu.

  3. Geben Sie die folgende Zeile in die Eigenschaft ControlSource des neuen Textfeld-Steuerelements ein:

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

  4. Zeigen Sie das Formular in der Formularansicht an. Beachten Sie, dass das Alter der Bestellung im neuen Textfeld-Steuerelement angezeigt wird.

References

Wenn Sie weitere Informationen zu Datumsunterschieden benötigen, klicken Sie im Visual Basic-Editor im Menü Hilfe auf Microsoft Visual Basic-Hilfe, geben Sie die Funktion datediff im Office-Assistenten oder im Antwort-Assistenten ein, und klicken Sie dann auf Suchen, um das Thema anzuzeigen.