Создание двух функций для вычисления возраста в месяцах и годах в 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, чтобы сбросить дату до текущей даты.
С помощью средства даты и времени в панель управления запишите текущую дату, а затем задайте для даты 3 июня 2001 г.
Откройте модуль или создайте новый.
В меню Вид щелкните Окно интерпретации.
Предположим, что дата рождения вашего друга была 15 ноября 1967 года, а сегодня 3 июня 2001 года. Введите следующую строку в окне Интерпретация и нажмите клавишу ВВОД:
? Возраст("11/15/67")
Обратите внимание, что Microsoft Access возвращает значение 33 (лет).
Введите следующую строку и нажмите клавишу ВВОД:
? AgeMonths("11/15/67")
Обратите внимание, что Microsoft Access возвращает значение 6, указывающее, что прошло шесть месяцев с момента последнего дня рождения этого человека. Вашему другу 33 года и шесть месяцев.
С помощью средства даты и времени в панель управления сбросьте дату до текущей даты, указанной на шаге 1.
Использование функций Age() и AgeMonths()
В следующей процедуре объясняется, как пометить старые заказы, поместив значение возраста в новый элемент управления.
В примере Northwind.mdb базы данных введите функции Age() и AgeMonth() в новом модуле.
Откройте форму Orders (Заказы) в режиме конструктора и добавьте элемент управления "Текстовое поле" без ограничений.
Введите следующую строку в controlSourceproperty нового элемента управления "Текстовое поле":
=Age([OrderDate]) & " yrs " & AgeMonths([OrderDate]) & "mos"
Просмотр формы в представлении формы. Обратите внимание, что возраст заказа отображается в новом элементе управления "Текстовое поле".
Ссылки
Для получения дополнительных сведений о различиях в датах в Редактор Visual Basic щелкните Справка Microsoft Visual Basic в меню Справка, введите функцию datediff в помощнике Office или мастере ответов, а затем нажмите кнопку Поиск, чтобы просмотреть раздел.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по