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단계를 완료해야 합니다.
제어판 날짜/시간 도구를 사용하여 현재 날짜를 적어 두고 날짜를 2001년 6월 3일로 설정합니다.
모듈을 열거나 새 모듈을 만듭니다.
뷰메뉴에서 직접 실행 창을 클릭합니다.
친구의 생년월일이 1967년 11월 15일이고 오늘은 2001년 6월 3일이라고 가정합니다. 직접 실행 창에 다음 줄을 입력한 다음 Enter 키를 누릅니다.
? Age("11/15/67")
Microsoft Access는 33(년) 값으로 응답합니다.
다음 줄을 입력한 다음 Enter 키를 누릅니다.
? AgeMonths("11/15/67")
Microsoft Access는 이 사용자의 마지막 생일 이후 6개월이 지났음을 나타내는 값 6으로 응답합니다. 당신의 친구는 33 세와 6 개월입니다.
제어판 날짜/시간 도구를 사용하여 날짜를 1단계에서 기록한 현재 날짜로 다시 설정합니다.
Age() 및 AgeMonths() 함수 사용
다음 절차에서는 새 컨트롤에 나이 값을 배치하여 이전 주문을 표시하는 방법을 설명합니다.
샘플 데이터베이스 Northwind.mdb 새 모듈에 Age() 및 AgeMonth() 함수를 입력합니다.
디자인 보기에서 주문 양식을 열고 언바운드 텍스트 상자 컨트롤을 추가합니다.
새 텍스트 상자 컨트롤의 ControlSourceproperty에 다음 줄을 입력합니다.
=Age([OrderDate]) & " yrs " & AgeMonths([OrderDate]) & " mos"
양식 보기에서 폼을 봅니다. 주문 기간은 새 텍스트 상자 컨트롤에 표시됩니다.
참조
날짜 차이에 대한 자세한 내용은 Visual Basic 편집기 도움말 메뉴에서 Microsoft Visual Basic 도움말을 클릭하고 Office 도우미 또는 응답 마법사에서 datediff 함수를 입력한 다음 검색을 클릭하여 항목을 확인합니다.
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기