• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Access - Вычисление возраста

  • Автор темы Автор темы inret
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
I

inret

Здравствуйте!

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

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

Код:
=IIf(DatePart("y",[ДатаРождения])-date();
DateDiff("yyyy";[ДатаРождения];date());
DateDiff("yyyy";[ДатаРождения];date())-1)
 
не шарю в акцесе, но что то мне подсказывает что вилы в "y" и "yyyy"
 
Код:
Public Function Vozrast(dRozhd As Date) As Long
'-- вычисление возраста на текущий момент
'-- dRozhd - дата рождения
On Error GoTo Err_VC_RaznicaDates

If (dRozhd > date) Then
dRozhd = date
End If

'Подсчет разницы в годах между текущей датой и датой рождения
Vozrast = DateDiff("yyyy", dRozhd, date)

'Вычитается один год, если в этом году дня рождения еще не было
If DateSerial(Year(date), Month(dRozhd), Day(dRozhd)) > date Then
Vozrast = Vozrast - 1
End If

Exit_:
Exit Function
Err_:
'	MsgBox Err.Description
Resume Exit_
End Function
 
Спасибо за код.

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

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

Код работает, но как сделать, чтобы при запуске запроса не вфыфводилось диалоговое окно с указание параметра.
 
<!--QuoteBegin-inret+11:06:2007, 14:42 -->
<span class="vbquote">(inret @ 11:06:2007, 14:42 )</span><!--QuoteEBegin-->Код работает, но как сделать, чтобы при запуске запроса не вфыфводилось диалоговое окно с указание параметра.
[snapback]68922" rel="nofollow" target="_blank[/snapback]​
[/quote]

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

Например:
=iif(dateserial(year(date());month(Пользователь.ДатаРождения);day(Пользователь.Д
атаРождения))<=date();
year(date())-year(Пользователь.ДатаРождения);
year(date())-year(Пользователь.ДатаРождения)-1)
 
Что забирать, откуда, забирать ли??? Выражайся яснее.

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

Код:
SELECT ... Vozrast([ПОЛЕ]) As VOZRAST FROM ....

Бонус в том, что это позволяет повторно использовать код, а не писать его каждый раз заново. Только в этом случае в функцию стоит принимать тип Variant и обрабатываеть его на Null...
 
я так же хочу чтоб поле возраст вычислялось автоматически, например после ввода даты рождения, не могу понять куда именно поставить формулу, ставил в поле возраст, в свойствах в поле "по умолчанию", не считает, ставит "в условие", тоже не считает, подскажите плиз, какую формулу и куда вставить. :P
Посмотреть вложение ____.bmp
 
Ставить в эл.управления "Возраст" в атрибут "Данные".

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

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



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

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

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

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

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

Можете мне написать точную рабочую формулу...
Ээээ... Перечитайте как ответы. Я уже отвечал.

детально куда ее нужно вводить
Откуда я знаю куда вам надо?
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab