MS Access - встроенные функции

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

Функции

Функция - это процедура VBA, которая выполняет задачу или вычисление и возвращает результат. Обычно функции можно использовать в запросах, но есть и другие места, где вы можете использовать функции.

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

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

  • Функции могут быть довольно простыми, не требующими вызова другой информации или просто ссылаться на одно поле из таблицы или запроса.

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

Давайте теперь рассмотрим несколько примеров использования встроенных функций.

Функции даты и времени

Давайте теперь разберемся с функциями даты и времени -

  • Функция Date () предназначена для возврата текущей системной даты. Эта функция не требует аргументов функции или дополнительной информации. Все, что вам нужно сделать, это написать имя функции и эти открывающие и закрывающие круглые скобки.

  • Есть две очень похожие встроенные функции Time () и Now ().

  • Функция Time () возвращает только текущее системное время, а функция Now () возвращает текущую системную дату и время.

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

Давайте теперь откроем вашу базу данных и создадим новый запрос, используя дизайн запроса, и добавим tblProjects и tblTasks.

Добавьте ProjectName из tblProjects и TaskTitle, StartDate и DueDate из tblTasks и запустите свой запрос.

Теперь вы можете видеть все различные задачи из всех проектов. Если вы хотите просмотреть задачи проекта, которые выполняются на сегодняшний день, то мы должны указать критерий, используяDate() Функция для просмотра проектов, которые начинаются сегодня или позже.

Теперь давайте определим критерии под StartDate.

Критерий начинается с оператора greater than symbol, за которым следует equal to symbol а потом Date Function.

Когда мы запускаем этот запрос, все задачи будут выполняться либо сегодня, либо в будущем, как показано на следующем снимке экрана.

Это был пример того, как вы можете использовать функцию Date () в качестве критерия запроса.

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

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

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

Здесь мы добавим некоторую дополнительную информацию к этим критериям. Фактически, мы хотим, чтобы она была больше или равна сегодняшней дате минус семь дней.

Если мы введем минус семь и запустим запрос, вы также увидите задачи, которые начались на этой неделе.

Функция DateDiff ()

Функция DateDiff () - еще одна очень популярная функция даты и времени. Функция DateDiff возвращает значение Variant (long), указывающее количество временных интервалов между двумя указанными датами. Другими словами, он вычисляет разницу между двумя датами, и вы можете выбрать интервал, по которому функция вычисляет эту разницу.

Теперь предположим, что мы хотим вычислить возраст наших авторов. Для этого нам сначала нужно создать новый запрос и добавить нашу таблицу авторов, а затем добавить поля FirstName, LastName и BirthDay.

Мы можем рассчитать возраст людей, вычислив разницу между датой их рождения или днем ​​рождения и сегодняшней датой.

Давайте попробуем использовать функцию DateDiff в новом поле.

Назовем его Age с двоеточием, а затем напишем DateDiff Function.

  • Первым аргументом функции DateDiff является интервал, поэтому введите «гггг».
  • Следующим аргументом функции является первая дата, которую мы хотим вычислить, в данном случае это будет поле «День рождения».
  • Третий аргумент функции - это текущая дата.

Теперь запустите свой запрос, и вы увидите новое поле, в котором указан возраст каждого автора.

Формат () Функция

Функция Format () возвращает строку, содержащую выражение, отформатированное в соответствии с инструкциями, содержащимися в выражении формата. Вот список пользовательских форматов, которые можно использовать в Format () function.ss

Настройка Описание
гггг Год
q Квартал
м Месяц
у День года
d День
ш Будний день
ww Неделю
час Час
п Минуты
s Второй

Давайте теперь вернемся к вашему запросу и добавим в него больше полей с помощью функции Format ().

Введите функцию форматирования. Первым аргументом функции будет выражение, которое может быть практически любым. Пусть теперь у нас будет поле дня рождения как первое, а следующее - написать наш формат. В этом случае нам нужен месяц, месяц, день, день. Напишите «mmdd» в кавычках, а затем запустите свой запрос.

Теперь дата берется из поля дня рождения, 4 - это месяц, а 17 - это день.

Давайте добавим «ммм» и «мммм» вместо «ммдд» в следующие поля, как на следующем снимке экрана.

Запустите свой запрос, и вы увидите результаты, как на следующем снимке экрана.

В следующем поле он возвращает первые 3 символа из названия месяца для этого дня рождения, а в последнем поле вы получите полное название месяца.

Чтобы увидеть месяц, за которым следует год от дня рождения, давайте добавим «гггг», как показано на следующем снимке экрана.

Позвольте нам запустить ваш запрос еще раз.

Теперь вы увидите месяц, за которым следует запятая, а затем год.

IIf () Функция

Функция IIf () - это сокращение от «Immediate If», и эта функция оценивает выражение как истинное или ложное и возвращает значение для каждого. У него может быть до трех аргументов функции, и все они обязательны.

  • Первый аргумент - это любое выражение, которое вы хотите оценить.
  • Следующий аргумент означает истинную часть, которая может быть значением или выражением, возвращаемым, если ваше первое выражение истинно.
  • Последний аргумент - это то, что вы хотите вернуть, если ваше выражение ложно.

пример

Возьмем простой пример. Мы создадим новый запрос, используя дизайн запроса, и добавим таблицу tblAuthors, а затем добавим следующие поля.

Теперь вы можете видеть, что у нас есть три поля - FirstName, MiddleInitial, LastName, а затем это объединенное поле, которое объединяет все три поля. Позвольте нам запустить ваш запрос, чтобы увидеть результат этого запроса.

Теперь вы можете увидеть результат запроса, но вы также заметите, что некоторые записи не имеют инициалов в середине. Например, запись Джойса Дайера не имеет среднего инициала, но в поле FullName вы увидите период, который на самом деле не нужен. Итак, вернитесь в представление дизайна. Здесь мы объединим имя другим способом, используя функцию IIf.

Давайте запишем имя в другое поле и назовем его FullName1, а затем введем функцию IIf.

  • Первым аргументом функции для функции Immediate If будет ваше выражение. В выражении мы увидим, является ли среднее начальное поле пустым или пустым.

  • Следующий аргумент - верная часть. Итак, если средний инициал равен нулю, тогда мы хотели бы отобразить FirstName и LastName.

  • Теперь для нашей ложной части - если MiddleInitial не равен нулю, тогда мы хотели бы отобразить FirstName, MiddleInitial и LastName.

Давайте теперь запустим ваш запрос, и вы увидите результаты, как на следующем снимке экрана.