В этой главе мы будем работать со встроенными функциями. В Access доступно около сотни встроенных функций, и практически невозможно охватить каждую из них. В этой главе мы расскажем об основной структуре, синтаксисе и использовании некоторых из наиболее популярных функций, а также о подводных камнях, чтобы вы могли самостоятельно изучить некоторые другие функции.
функции
Функция — это процедура VBA, которая выполняет задачу или вычисление и возвращает результат. Функции обычно можно использовать в запросах, но есть и другие места, где вы можете использовать функции.
-
Вы можете использовать функции в свойствах таблицы, например, если вы хотите указать значение по умолчанию для поля даты / времени, вы можете использовать функцию date или Now, чтобы вызвать информацию о текущей дате / времени из вашей системы, и ввести это значение автоматически.
-
Вы также можете использовать функции в выражении при создании вычисляемого поля или использовать функции внутри формы или элементов управления отчетом. Вы можете использовать функции даже в макросах.
-
Функции могут быть довольно простыми, не требующими вызова другой информации, или просто ссылаться на одно поле из таблицы или запроса.
-
С другой стороны, они также могут быть довольно сложными, с несколькими аргументами, ссылками на поля и даже другими функциями, вложенными в другую функцию.
Вы можете использовать функции в свойствах таблицы, например, если вы хотите указать значение по умолчанию для поля даты / времени, вы можете использовать функцию date или Now, чтобы вызвать информацию о текущей дате / времени из вашей системы, и ввести это значение автоматически.
Вы также можете использовать функции в выражении при создании вычисляемого поля или использовать функции внутри формы или элементов управления отчетом. Вы можете использовать функции даже в макросах.
Функции могут быть довольно простыми, не требующими вызова другой информации, или просто ссылаться на одно поле из таблицы или запроса.
С другой стороны, они также могут быть довольно сложными, с несколькими аргументами, ссылками на поля и даже другими функциями, вложенными в другую функцию.
Давайте теперь посмотрим на некоторые примеры использования встроенных функций.
Функции даты и времени
Давайте теперь поймем функции даты и времени —
-
Функция Date () предназначена для возврата текущей системной даты. Эта функция не требует никаких аргументов функции или дополнительной информации. Все, что вам нужно сделать, это написать имя функции, а также открыть и закрыть скобки.
-
Есть две очень похожие встроенные функции Time () и Now ().
-
Функция Time () возвращает только текущее системное время, а функция Now () возвращает как текущую системную дату, так и время.
-
В зависимости от данных, которые вы хотите отслеживать, или хранить, или запрашивать, у вас есть три встроенные, простые в использовании функции, которые помогут с этой задачей.
Функция Date () предназначена для возврата текущей системной даты. Эта функция не требует никаких аргументов функции или дополнительной информации. Все, что вам нужно сделать, это написать имя функции, а также открыть и закрыть скобки.
Есть две очень похожие встроенные функции Time () и Now ().
Функция Time () возвращает только текущее системное время, а функция Now () возвращает как текущую системную дату, так и время.
В зависимости от данных, которые вы хотите отслеживать, или хранить, или запрашивать, у вас есть три встроенные, простые в использовании функции, которые помогут с этой задачей.
Теперь давайте откроем вашу базу данных и создадим новый запрос, используя дизайн запроса, и добавим tblProjects и tblTasks.
Добавьте ProjectName из tblProjects и TaskTitle, StartDate и DueDate из tblTasks и выполните свой запрос.
Теперь вы можете увидеть все различные задачи из всех проектов. Если вы хотите просмотреть задачи проекта, которые выполняются по состоянию на сегодняшнюю дату, то мы должны указать критерий, используя функцию Date () для просмотра проектов, которые начинаются в или после сегодняшней даты.
Давайте теперь укажем критерии под StartDate.
Критерий начинается с оператора, большего, чем символ , за которым следует символ равенства, а затем функция даты .
Когда мы запустим этот запрос, все задачи будут выполнены в текущую дату или в будущем, как показано на следующем снимке экрана.
Это был пример того, как вы можете использовать функцию Date () в качестве критерия запроса.
-
Давайте теперь скажем, что этот запрос должен быть более гибким с точки зрения дат, которые он запрашивает, начиная с этой недели.
-
У нас есть несколько разных задач, которые начались на этой неделе, и которые не отображаются в этом списке из-за наших критериев. Он смотрит на даты начала, которые равны сегодня или выше.
Давайте теперь скажем, что этот запрос должен быть более гибким с точки зрения дат, которые он запрашивает, начиная с этой недели.
У нас есть несколько разных задач, которые начались на этой неделе, и которые не отображаются в этом списке из-за наших критериев. Он смотрит на даты начала, которые равны сегодня или выше.
Если мы хотим просмотреть задачи, которые начались на этой неделе, которые еще не выполнены или должны быть выполнены сегодня, вернемся к представлению «Дизайн».
Здесь мы добавим дополнительную информацию к этим критериям. На самом деле, мы хотим, чтобы оно было больше или равно сегодняшней дате минус семь дней.
Если мы введем минус семь и запустим запрос, вы сможете увидеть задачи, которые начались на этой неделе.
Функция DateDiff ()
Функция DateDiff () — еще одна очень популярная функция даты / времени. Функция DateDiff возвращает Variant (long), указывающий количество временных интервалов между двумя указанными датами. Другими словами, он вычисляет разницу между двумя датами, и вы выбираете интервал, по которому функция рассчитывает эту разницу.
Давайте теперь скажем, что мы хотим рассчитать возраст наших авторов. Для этого нам сначала нужно создать новый запрос и добавить таблицу авторов, а затем добавить поля FirstName, LastName и BirthDay.
Мы можем рассчитать возраст людей, вычислив разницу между их датой рождения или днем рождения и какой бы ни была сегодняшняя дата.
Давайте попробуем использовать функцию DateDiff в новом поле.
Давайте назовем его Age, затем двоеточие, а затем напишем DateDiff Function.
- Первым аргументом функции для функции DateDiff является интервал, поэтому введите «гггг».
- Следующий аргумент функции — это первая дата, по которой мы хотим вычислить, которая в этом случае будет полем дня рождения.
- Третий аргумент функции — какая бы ни была сегодняшняя дата.
Теперь запустите ваш запрос, и вы увидите новое поле, в котором указан возраст каждого автора.
Функция Format ()
Функция Format () возвращает строку, содержащую выражение, отформатированное в соответствии с инструкциями, содержащимися в выражении формата. Вот список пользовательских форматов, которые можно использовать в функции Format ().
настройка | Описание |
---|---|
гггг | Год |
Q | четверть |
м | Месяц |
Y | День года |
d | День |
вес | будний день |
WW | Неделю |
час | Час |
N | минут |
s | второй |
Давайте теперь вернемся к вашему запросу и добавим в него дополнительные поля с помощью функции Format ().
Введите функцию форматирования. Первым аргументом функции будет выражение, которое может быть почти любым. Давайте теперь будем иметь поле дня рождения первым, а следующее — написать наш формат. В этом случае нам нужен месяц, месяц, день, день. Напишите «mmdd» в кавычках, а затем выполните запрос.
Теперь он берет дату из поля дня рождения, 4 — месяц, а 17 — день.
Давайте добавим «mmm» и «mmmm» вместо «mmdd» в следующих полях, как на следующем скриншоте.
Запустите ваш запрос, и вы увидите результаты, как на следующем скриншоте.
В следующем поле возвращаются первые 3 символа из названия месяца для этого дня рождения, а в последнем поле вы получите полное название месяца.
Чтобы увидеть месяц, за которым следует год от дня рождения, давайте добавим «гггг», а также показано на следующем скриншоте.
Позвольте нам снова запустить ваш запрос.
Теперь вы увидите месяц с запятой, а затем год.
IIf () Функция
Функция IIf () является аббревиатурой от «Immediate If», и эта функция оценивает выражение как true или false и возвращает значение для каждого. Имеет до трех аргументов функции, все из которых являются обязательными.
- Первый аргумент — это любое выражение, которое вы хотите оценить.
- Следующий аргумент обозначает истинную часть, которая может быть значением или выражением, возвращаемым, если ваше первое выражение истинно.
- Последний аргумент — это то, что вы хотите вернуть, если ваше выражение ложно.
пример
Давайте возьмем простой пример. Мы создадим новый запрос, используя дизайн запроса, добавим таблицу tblAuthors, а затем добавим следующие поля.
Теперь вы можете видеть, что у нас есть три поля — FirstName, MiddleInitial, LastName, а затем это объединенное поле, которое объединяет все три поля. Давайте запустим ваш запрос, чтобы увидеть результат этого запроса.
Теперь вы можете увидеть результат запроса, но вы также заметите, что некоторые записи не имеют среднего начального значения. Например, запись Джойса Дайера не имеет средней инициалы, но в поле FullName вы увидите период, который действительно не должен быть там. Итак, вернитесь к представлению «Дизайн». Здесь мы сцепим имя другим способом, используя функцию IIf.
Давайте напишем имя в другом поле и назовем его FullName1, а затем наберем функцию IIf.
-
Первым аргументом функции для Immediate If будет ваше выражение. В выражении мы увидим, является ли среднее начальное поле пустым или нулевым.
-
Следующий аргумент — это истинная часть. Итак, если средний инициал равен нулю, мы бы хотели отобразить FirstName и LastName.
-
Теперь для нашей ложной части — если MiddleInitial не равно NULL, то мы бы хотели отобразить FirstName, MiddleInitial и LastName.
Первым аргументом функции для Immediate If будет ваше выражение. В выражении мы увидим, является ли среднее начальное поле пустым или нулевым.
Следующий аргумент — это истинная часть. Итак, если средний инициал равен нулю, мы бы хотели отобразить FirstName и LastName.
Теперь для нашей ложной части — если MiddleInitial не равно NULL, то мы бы хотели отобразить FirstName, MiddleInitial и LastName.
Теперь давайте запустим ваш запрос, и вы увидите результаты, как на следующем скриншоте.