Jak utworzyć dwie funkcje do obliczania wieku w miesiącach i latach w programie Access

Zaawansowane: wymaga specjalistycznego kodowania, współdziałania i wielodostępnych umiejętności.

Ten artykuł dotyczy bazy danych programu Microsoft Office Access (.accdb i .mdb) oraz projektu programu Microsoft Access (.apd).

Podsumowanie

W tym artykule pokazano, jak utworzyć dwie funkcje, których można użyć do obliczenia wieku osoby lub rzeczy na podstawie określonej daty.

Uwaga

W przykładowym pliku Qrysmp00.exe widać pokaz techniki używanej w tym artykule.

Więcej informacji

Tworzenie funkcji

Wpisz lub wklej następujący kod w 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

Testowanie funkcji Age() i AgeMonths()

Aby przetestować funkcje Age() i AgeMonths(), wykonaj następujące kroki.

Ważna

Poniższe kroki umożliwiają zmianę daty na komputerze. Upewnij się, że wykonano krok 6, aby zresetować datę do bieżącej daty.

  1. Za pomocą narzędzia Data/Godzina w Panel sterowania zanotuj bieżącą datę, a następnie ustaw datę na 3 czerwca 2001 r.

  2. Otwórz moduł lub utwórz nowy.

  3. W okienku Widok kliknij pozycję Okno natychmiastowe.

  4. Załóżmy, że data urodzenia znajomego to 15 listopada 1967 r., a dziś jest to 3 czerwca 2001 r. Wpisz następujący wiersz w oknie Natychmiastowe, a następnie naciśnij klawisz ENTER:

    ? Wiek("11/15/67")

    Należy pamiętać, że program Microsoft Access odpowiada wartością 33 (lat).

  5. Wpisz następujący wiersz, a następnie naciśnij klawisz ENTER:

    ? AgeMonths("11/15/67")

    Należy pamiętać, że program Microsoft Access odpowiada wartością 6, co oznacza, że minęło sześć miesięcy od ostatnich urodzin tej osoby. Twój przyjaciel ma 33 lata i sześć miesięcy.

  6. Za pomocą narzędzia Data/Godzina w Panel sterowania zresetuj datę do bieżącej daty zanotowanej w kroku 1.

Korzystanie z funkcji Age() i AgeMonths()

Poniższa procedura wyjaśnia, jak oznaczyć stare zamówienia, umieszczając wartość wieku w nowej kontrolce.

  1. W przykładowej bazie danych Northwind.mdb wpisz funkcje Age() i AgeMonth() w nowym module.

  2. Otwórz formularz Orders (Zamówienia) w widoku Projekt i dodaj niepowiązaną kontrolkę pola tekstowego.

  3. Wpisz następujący wiersz w kontrolce ControlSourceproperty nowej kontrolki pola tekstowego:

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

  4. Wyświetl formularz w widoku formularzy. Pamiętaj, że wiek zamówienia jest wyświetlany w nowej kontrolce pola tekstowego.

Informacje

Aby uzyskać więcej informacji o różnicach dat, w Redaktor Visual Basic kliknij pozycję Microsoft Visual Basic Help w menu Pomoc, wpisz funkcję datediff w Asystentze pakietu Office lub Kreatorze odpowiedzi, a następnie kliknij pozycję Wyszukaj, aby wyświetlić temat.