Access에서 월 및 연도의 나이를 계산하는 두 함수를 만드는 방법

고급: 전문 코딩, 상호 운용성 및 다중 사용자 기술이 필요합니다.

이 문서는 Microsoft Office Access 데이터베이스(.accdb 및 .mdb) 및 Microsoft Access 프로젝트(.apd)에 적용됩니다.

요약

이 문서에서는 지정된 날짜에 따라 사람 또는 사물의 나이를 계산하는 데 사용할 수 있는 두 가지 함수를 만드는 방법을 보여 줍니다.

참고

샘플 파일 Qrysmp00.exe 이 문서에서 사용되는 기술의 데모를 볼 수 있습니다.

추가 정보

함수 만들기

모듈에 다음 코드를 입력하거나 붙여넣습니다.

'==========================================================
' 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

Age() 및 AgeMonths() 함수 테스트

Age() 및 AgeMonths() 함수를 테스트하려면 다음 단계를 수행합니다.

중요

다음 단계에서는 컴퓨터의 날짜를 변경하도록 요청합니다. 날짜를 현재 날짜로 다시 설정하려면 6단계를 완료해야 합니다.

  1. 제어판 날짜/시간 도구를 사용하여 현재 날짜를 적어 두고 날짜를 2001년 6월 3일로 설정합니다.

  2. 모듈을 열거나 새 모듈을 만듭니다.

  3. 뷰메뉴에서 직접 실행 창을 클릭합니다.

  4. 친구의 생년월일이 1967년 11월 15일이고 오늘은 2001년 6월 3일이라고 가정합니다. 직접 실행 창에 다음 줄을 입력한 다음 Enter 키를 누릅니다.

    ? Age("11/15/67")

    Microsoft Access는 33(년) 값으로 응답합니다.

  5. 다음 줄을 입력한 다음 Enter 키를 누릅니다.

    ? AgeMonths("11/15/67")

    Microsoft Access는 이 사용자의 마지막 생일 이후 6개월이 지났음을 나타내는 값 6으로 응답합니다. 당신의 친구는 33 세와 6 개월입니다.

  6. 제어판 날짜/시간 도구를 사용하여 날짜를 1단계에서 기록한 현재 날짜로 다시 설정합니다.

Age() 및 AgeMonths() 함수 사용

다음 절차에서는 새 컨트롤에 나이 값을 배치하여 이전 주문을 표시하는 방법을 설명합니다.

  1. 샘플 데이터베이스 Northwind.mdb 새 모듈에 Age() 및 AgeMonth() 함수를 입력합니다.

  2. 디자인 보기에서 주문 양식을 열고 언바운드 텍스트 상자 컨트롤을 추가합니다.

  3. 새 텍스트 상자 컨트롤의 ControlSourceproperty에 다음 줄을 입력합니다.

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

  4. 양식 보기에서 폼을 봅니다. 주문 기간은 새 텍스트 상자 컨트롤에 표시됩니다.

참조

날짜 차이에 대한 자세한 내용은 Visual Basic 편집기 도움말 메뉴에서 Microsoft Visual Basic 도움말을 클릭하고 Office 도우미 또는 응답 마법사에서 datediff 함수를 입력한 다음 검색을 클릭하여 항목을 확인합니다.