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.
Za pomocą narzędzia Data/Godzina w Panel sterowania zanotuj bieżącą datę, a następnie ustaw datę na 3 czerwca 2001 r.
Otwórz moduł lub utwórz nowy.
W okienku Widok kliknij pozycję Okno natychmiastowe.
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).
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.
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.
W przykładowej bazie danych Northwind.mdb wpisz funkcje Age() i AgeMonth() w nowym module.
Otwórz formularz Orders (Zamówienia) w widoku Projekt i dodaj niepowiązaną kontrolkę pola tekstowego.
Wpisz następujący wiersz w kontrolce ControlSourceproperty nowej kontrolki pola tekstowego:
=Age([OrderDate]) & " yrs " & AgeMonths([OrderDate]) & " mos"
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.
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla