MS Access использует DATE() в вычисляемом поле

Я использую Microsoft Access 2016. Я пытаюсь узнать, сколько лет существует с текущего года до будущего года. У меня есть столбец end_date. Я пытаюсь создать вычисляемое поле, которое по сути является YEAR (end_date) - YEAR (current_year). Я пытался использовать YEAR(DATE()), но DATE(), по-видимому, нельзя использовать в вычисляемом поле.

Неужели нет возможности сделать такой расчет?


person cdbean    schedule 08.04.2020    source источник


Ответы (3)


Неа. Вычисляемые поля кэшируются и статичны, поэтому НИКОГДА не разрешается содержать ЛЮБУЮ информацию, которая будет меняться со временем из-за системных настроек или чего-либо еще, что не введено непосредственно в эту строку.

Однако в любом случае вам не следует использовать вычисляемые поля. См. http://allenbrowne.com/casu-14.html среди множества сообщений, пропагандирующих без использования вычисляемых полей.

Вместо этого используйте запросы для выполнения вычислений. Таким образом, у вас не возникнет проблем с использованием текущей даты, и вам не придется иметь дело с возможными ошибками и проблемами переносимости, с которыми приходят вычисляемые поля.

person Erik A    schedule 08.04.2020

Я изменил свое мышление, чтобы вычислить это в форме. Не рекомендуется иметь поле в БД, которое меняется каждый день.

person cdbean    schedule 08.04.2020

В форме вы можете использовать это выражение в качестве источника управления для текстового поля:

=DateDiff("yyyy",Date(),[EndDate])

Однако это возвращает разницу в календарных годах. Чтобы найти количество полных лет, используйте такую ​​функцию, как AgeSimple, и это выражение:

=AgeSimple([EndDate])
person Gustav    schedule 08.04.2020