Как посчитать возраст в access

Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).

Предположим, что у вас есть поле Дата выполнения в форме в Access, и вы хотите показать, сколько дней осталось до наступления даты выполнения. Чтобы быстро сделать это, вы можете добавить в форму новое текстовое поле, а затем воспользоваться функцией DATEDIFF в этом текстовом поле для выполнения вычислений.

В области навигации щелкните форму правой кнопкой мыши и выберите пункт режим макета.

Щелкните поле конструктор _гт_, удерживая нажатой клавишу CTRL, а затем щелкните Макет, в который нужно поместить надпись.

Щелкните новое текстовое поле и нажмите клавишу F4, чтобы открыть окно свойств, если оно еще не отображается.

На вкладке данные страницы свойств в поле свойства источник введите следующее:

= DateDiff ("d"; Date (); [DueDate])

Форма должна выглядеть примерно так:

Выражение в этом примере вычитает сегодняшнюю дату ( Date ()) из даты выполнения. "Г" сообщает Access о вычислении количества дней (в отличие от лет, месяцев и т. д.). Если текстовое поле имеет имя, отличное от "DueDate", подставьте в аргументы функции текст фактического поля.

Дополнительные сведения

Дополнительные сведения о формах см. в статье Создание формы в Access.

Читайте также:  Вин таб вернул ошибку саи

inret

Замучился. Мне надо вычислить возраст, т.е. отнять от сегодняшней даты дату рождения и чтоб выводилось только года (столько-то лет . )

Что не правильно здесь:

Код:
=IIf(DatePart("y",[ДатаРождения])-date();
DateDiff("yyyy";[ДатаРождения];date());
DateDiff("yyyy";[ДатаРождения];date())-1)

BOPOHA

inret

Но мне нужен код не на VB

Вот мой вариант:
=iif(dateserial(year(date());month(ДатаРождения);day(ДатаРождения))

Забирать его из таблицы или из другого запроса

Например:
=iif(dateserial(year(date());month(Пользователь.ДатаРождения);day(Пользователь.Д
атаРождения))

BOPOHA

Что забирать, откуда, забирать ли. Выражайся яснее.

ЗЫ: Почему бы не реализовать функцию и вызывать ее из запроса.

Ewgen81

BOPOHA

Ставить в эл.управления "Возраст" в атрибут "Данные".

Формат записи выражения: "=выражени", где выражением может быть и функция.

Если эл.управления "Возраст" в атрибуте "Данные" содержит поле из таблицы (как источник данных), то необходимо расчитывать это поле в коде. При изменениях эл.управления "Дата рождения".

Новый вопрос лучше задавать в новой теме.

lyubomyr

У миня тотже вопрос: Мне надо вычислить возраст, т.е. отнять от сегодняшней даты дату рождения и чтоб выводилось только года (столько-то лет . ).

Ну я много не понимаю.

Можете мне написать точную рабочую формулу и детально куда ее нужно вводить.

У миня єсть таблица из двух колонок в первой Дата Рождения (тип даных — Дата/время) во второй Возраст (тип даных — числовой).

Что мне сделать чтобы во второй колонке автоматически после введения дати появлялся Возраст. Очинь благодарен за помочь.

У меня есть два поля (дата физического осмотра и дата рождения). Я рассчитал возраст в годах ((дата физического экзамена рождения) /365.25). То, что я хочу сделать, — рассчитать возраст в годах и месяцах в отдельной области. Я не уверен, что это можно сделать с помощью построителя кода или каким-то образом.

Читайте также:  Усилитель marantz pm 7001 отзывы

Создан 18 мар. 15 2015-03-18 14:39:45 Alph

@ Fionnula, я видел, что интервал должен быть указан в Датиффе. Таким образом, возраст будет либо годами, либо месяцами, или некоторыми другими. Можно ли иметь годы и месяцы (скажем, 10 лет и 5 месяцев) лет и месяцев в отдельной области? – Alph 18 мар. 15 2015-03-18 14:49:57

@ Fionnula, извиняюсь, я раньше не смотрел примеры. Он рассчитывается годами, месяцами и днями. Спасибо. – Alph 18 мар. 15 2015-03-18 14:59:59

2 ответа

В то время как функция DateDiff() кажется, что логичным выбор для расчета возраста, он, к сожалению, не вычислит номер полный лет или месяцев, прошедших между двумя датами. Например, говорят, что ребенок родился 31 декабря 2014 года, и был осмотрен ровно через 48 часов, 2 января 2015 г. То есть,

Если мы просто использовали DateDiff() вычислить ее " возраст»в годах и месяцах во время экзамена мы получили бы

Итак, мы бы сообщить о том, что ребенок 1 год и 1 месяц, когда на самом деле она всего 2 дней старые.

Правильные расчеты возраста должны быть более сложными, чем это. Следующая функция VBA будет рассчитать «возраст» в годах и месяцах, возвращая строку, как «2 года и 1 месяц»:

Создан 18 мар. 15 2015-03-18 16:48:24 Gord Thompson

То, что вы пропустите, — это учитывать високосные годы. Это сложная часть, но DateAdd справится с этим. – Gustav 18 мар. 15 2015-03-18 21:40:06

Когда я тестировал вышеуказанный код с 2012/02/29, он работал так, как я ожидал. В течение не-високосного года, с 02/29 годами рождения, все еще * n * лет от 02/28 и * n + 1 * лет от 03/01. Что я упустил? – Gord Thompson 18 мар. 15 2015-03-18 22:00:40

Читайте также:  Знакомства табор г островец

Вы скучаете по тому, что репатриации — те, кто родился 29 февраля — например, с DOB 2012-02-29 он/она будет 3 года 0 месяцев в последний день февраля 2015 года, 28-й. Вы можете найти некоторые ссылки, утверждая, что это произойдет сначала 1 марта. Если люди чувствуют себя так, не проблема, но большинство правительств и организаций руководствуется тем, что месяц вашего дня рождения должен соответствовать месяцу вашего рождения. – Gustav 19 мар. 15 2015-03-19 08:42:04

Это займет немного больше, чтобы заботиться о более тонких деталях (как это делает расчет в год):

Создан 18 мар. 15 2015-03-18 16:06:21 Gustav