Dela via


Så här skapar du två funktioner för att beräkna ålder i månader och år i Access

Avancerat: Kräver expertkodning, samverkan och färdigheter för flera användare.

Den här artikeln gäller för en Microsoft Office Access-databas (.accdb och .mdb) och 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 en persons ålder eller sak baserat på ett angivet datum.

Obs!

Du kan se en demonstration av tekniken som används i den här artikeln i exempelfilen Qrysmp00.exe.

Mer information

Skapa funktioner

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()

Följ dessa steg för att testa funktionerna Age() och AgeMonths().

Viktigt

I följande steg uppmanas du att ändra datumet på datorn. Se till att du slutför steg 6 för att återställa datumet till det aktuella datumet.

  1. Genom att använda verktyget Datum/tid på Kontrollpanelen antecknar du det aktuella datumet och anger sedan datumet till 3 juni 2001.

  2. Öppna en modul eller skapa en ny.

  3. På menyn Visa klickar du på Omedelbart fönster.

  4. Anta att din väns födelsedatum var 15 november 1967 och idag är den 3 juni 2001. Skriv följande rad i fönstret Omedelbart och tryck sedan på RETUR:

    ? Ålder("11/15/67")

    Observera att Microsoft Access svarar med värdet 33 (år).

  5. Skriv följande rad och tryck sedan på RETUR:

    ? AgeMonths("11/15/67")

    Observera att Microsoft Access svarar med värdet 6, vilket anger att sex månader har gått sedan personens senaste födelsedag. Din vän är 33 år och sex månader gammal.

  6. Genom att använda verktyget Datum/tid på Kontrollpanelen återställer du datumet till det aktuella datum som du antecknade i steg 1.

Använda funktionerna Age() och AgeMonths()

Följande procedur beskriver hur du markerar gamla beställningar 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 Beställningar i designvyn och lägg till en obundna textrutekontroll.

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

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

  4. Visa formuläret i formulärvyn. Observera att ordningens ålder visas i den nya textrutekontrollen.

Referenser

Om du vill ha mer information om datumskillnader i Visual Basic-redigeraren klickar du på Microsoft Visual Basic-hjälpen på hjälpmenyn, skriver datediff-funktionen i Office-assistenten eller svarsguiden och klickar sedan på Sök för att visa artikeln.