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.

  1. Med hjälp av verktyget Datum/tid i Kontrollpanelen ansar du det aktuella datumet och anger datumet till den 3 juni 2001.

  2. Öppna en modul eller skapa en ny.

  3. Klicka på Direktfönster på menyn Visa.

  4. 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).

  5. 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.

  6. 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.

  1. I exempeldatabasen Northwind.mdb skriver du funktionerna Age() och AgeMonth() i en ny modul.

  2. Öppna formuläret Order i designvyn och lägg till en obunden textr ruta.

  3. Skriv följande rad i ControlSourceproperty för den nya textrrutakontrollen:

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

  4. 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.