Så här skapar du två funktioner för att beräkna ålder i månader och år i Access
Anteckning
Office 365 ProPlus byter namn till Microsoft 365-appar för företag. Mer information om den här ändringen finns i det här blogginlägget.
Avancerat: Kräver expertkodning, interoperabilitet och fleranvändarfärdigheter.
Den här artikeln gäller en Microsoft Office Access-databas (.accdb och .mdb) och för Microsoft Access-projekt (.apd).
Sammanfattning
Den här artikeln visar hur du skapar två funktioner som du kan använda för att beräkna åldern på en person eller sak baserat på ett visst datum.
Anteckning
Du kan se en demonstration av den teknik som används i den här artikeln i exempelfilen Qrysmp00.exe.
Mer information
Skapa funktionerna
Skriv eller klistra in följande kod i en modul:
'==========================================================
' 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
Testa funktionerna Age() och AgeMonths()
Så här testar du funktionerna Age() och AgeMonths().
Viktigt
Följande steg ber dig att ändra datumet på datorn. Se till att du slutför steg 6 för att återställa datumet till dagens datum.
Med hjälp av verktyget Datum/tid i Kontrollpanelen ansar du det aktuella datumet och anger datumet till den 3 juni 2001.
Öppna en modul eller skapa en ny.
Klicka på Direktfönster på menyn Visa.
Anta att din väns födelsedatum var 15 november 1967 och i dag är 3 juni 2001. Skriv följande rad i direktfönstret och tryck sedan på RETUR:
? Ålder("2067-11-15")
Observera att Microsoft Access svarar med värdet 33 (år).
Skriv in följande rad och tryck sedan på RETUR:
? AgeMonths("67-11-15")
Observera att Microsoft Access svarar med värdet 6, vilket visar att sex månader har gått sedan den här personens senaste födelsedag. Din vän är 33 år och sex månader gammal.
Med hjälp av verktyget Datum/tid i Kontrollpanelen återställer du datumet till det aktuella datum som du antecknade i steg 1.
Använda funktionerna Age() och AgeMonths()
I följande procedur beskrivs hur du markerar gamla order genom att placera åldersvärdet i en ny kontroll.
I exempeldatabasen Northwind.mdb skriver du funktionerna Age() och AgeMonth() i en ny modul.
Öppna formuläret Order i designvyn och lägg till en obunden textr ruta.
Skriv följande rad i ControlSourceproperty för den nya textrrutakontrollen:
=Age([OrderDate]) & " yrs " & AgeMonths([OrderDate]) & " mos"
Visa formuläret i formulärvyn. Observera att ordningens ålder visas i den nya textr rutakontrollen.
Referenser
Om du vill ha mer information om datumskillnader går du till Visual Basic Editor och klickar på Microsoft Visual Basic-hjälpen på Hjälp-menyn, skriver datediff-funktionen i Office-assistenten eller i Svarsguiden och klickar sedan på Sök för att visa avsnittet.