В настоящее время вы работаете в автономном режиме; ожидается повторное подключение к Интернету

Создание двух функций для расчета возраста в месяцах и годах в Microsoft Access

Поддержка Office 2003 завершена

8 апреля 2014 г. корпорация Майкрософт прекратила поддержку Office 2003. Это повлияло на обновления программного обеспечения и параметры безопасности. Узнайте, что это значит для вас и какие меры по безопасности можно предпринять.

Для специалистов: материал, изложенный в данной статье, требует высокой квалификации в программировании, включая вопросы взаимодействия и программирования в многопользовательской среде.

Данная статья относится к базам данных Microsoft Access (ACCDB и MDB) и проектам Microsoft Access (APD).

Версия данной статьи для Microsoft Access 2000: 210522 (Эта ссылка может указывать на содержимое полностью или частично на английском языке).
Версия данной статьи для Microsoft Access 97: 290190.
Аннотация
В данной статье объясняется, как создать две функции, которые можно использовать для расчета возраста человека или предмета относительно заданной даты.

Примечание. Демонстрацию приемов, используемых в данной статье, можно посмотреть в файле с примерами Qrysmp00.exe. Дополнительные сведения о получении этого файла с примерами см. в следующей статье базы знаний Майкрософт:
207626 База данных Microsoft Access 2000 с примерами запросов доступна для загрузки
Дополнительная информация

Создание функций

Введите или вставьте в модуль следующий код:
'==========================================================' Общая декларация'==========================================================Option Explicit'*************************************************************' ИМЯ ФУНКЦИИ: Age()'' НАЗНАЧЕНИЕ:'    Рассчитывает возраст в годах от заданной до текущей даты.'' ВХОДНЫЕ ПАРАМЕТРЫ:'    StartDate: Начальная дата (например, дата рождения).'' РЕЗУЛЬТАТ'    Возраст в годах.''*************************************************************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'*************************************************************' ИМЯ ФУНКЦИИ: AgeMonths()'' НАЗНАЧЕНИЕ:'  Дополняет функцию Age(), рассчитывая число месяцев,'  прошедших с последнего месяца в указанной дате.'  Если указана дата рождения, функция возвращает число'    месяцев, прошедших с последнего дня рождения.'' ВХОДНЫЕ ПАРАМЕТРЫ:'    StartDate: Начальная дата (например, день рождения).'' РЕЗУЛЬТАТ'    Число месяцев, прошедших с последнего дня рождения.'*************************************************************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. Используя компонент Дата и время панели управления, запомните или запишите текущую системную дату, затем установите дату 3 июня 2001 г.
  2. Откройте модуль или создайте новый.
  3. В меню View (вид) выберите пункт Immediate Window (окно просмотра значений переменных).
  4. Предположим, что ваш друг родился 15 ноября 1967 г., а сегодня 3 июня 2001 г. Введите указанную ниже строку в окно просмотра значений переменных и нажмите клавишу ВВОД.
    ?Age("11/15/67")						
    Microsoft Access возвращает в качестве результата 33 (года).
  5. Введите следующую команду и нажмите клавишу ВВОД:
    ?AgeMonths("11/15/67")						
    Microsoft Access возвращает в качестве результата цифру 6. Это означает, что с последнего дня рождения друга прошло шесть месяцев. Таким образом, возраст друга составляет 33 года и 6 месяцев.
  6. С помощью компонента Дата и время панели управления восстановите прежнюю системную дату, значение которой было записано при выполнении действия 1.

Использование функций Age() и AgeMonths()

Описанная ниже последовательность действий позволяет установить метки для старых заказов, отображая их возраст в отдельном элементе управления.
  1. В учебной базе данных "Борей.mdb" введите в новом модуле функции Age() и AgeMonth().
  2. Откройте форму "Заказы" в режиме конструктора и добавьте в нее свободный элемент управления типа "текстовое поле".
  3. Введите следующую строку в свойство ControlSource нового текстового поля:
    =Age([OrderDate]) & " лет " & AgeMonths([OrderDate]) & " мес."
    .
  4. Просмотрите форму в представлении формы. Возраст заказа отображается в новом текстовом поле.
Ссылки
Для получения дополнительных сведений о разнице дат откройте редактор Visual Basic, выберите в меню Help (справка) пункт Microsoft Visual Basic Help (cправка Microsoft Visual Basic), введите в поле помощника Office или мастера ответов запрос datediff function и нажмите кнопку Поиск, чтобы найти соответствующую тему.
рождение дата рождения возраст истекшее время дата промежуток между как определить вычислить ACC2002 ACC2003 ACC2007
Свойства

Номер статьи: 290190 — последний просмотр: 02/21/2008 17:20:22 — редакция: 7.1

  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
  • kbdatetime kbfunctions kbvba kbprogramming kbhowto KB290190
Отзывы и предложения
"https://c.microsoft.com/ms.js"> /c.microsoft.com/ms.js'" + "'><\/script>");