Использование выражений в запросах. Выражения в Access.
Функции
Функция так же, как и идентификатор, используется для возвращения значения в точку вызова. Значение, возвращаемое функцией, определяется ее типом, например функция NOW () возвращает дату и время часов компьютера. Синтаксически функция выделяется круглыми скобками, следующими сразу же за ее идентификатором. Многие функции требуют наличия аргументов, которые записываются в этих скобках через запятую при обращении к функции. Функции можно использовать для создания нового выражения или функции. (Об использовании функций рассказывается в гл. 13.)
Встроенные в Access функции можно сгруппировать по следующим категориям (забегая вперед, скажем, что именно так они сгруппированы в специальном инструменте, помогающем правильно создавать сложные выражения, который называется Построитель выражений (Expression Builder)).
- Функции работы с массивами – используются для определения границ размерностей массивов при программировании на VBA.
- Функции преобразования типов данных – применяются для преобразования одного типа данных в другой. Например, для преобразования числа в строку служит функция str (), а обратно – функция val ().
- С помощью функций работы с объектами баз данных осуществляется обращение к объектам баз данных: таблицам, запросам, формам, отчетам, макросам и модулям. Например, функция CurrentDB () возвращает ссылку на объект Database, с которым работает Access в данный момент.
(Для более подробной информации о работе с этими функциями обратитесь к справочной системе Access или к гл. 13.) - Функции даты и времени – служат для проведения операций со значениями даты и времени. Например, функция DateDiff() вычисляет промежуток между двумя датами, а функция Date () возвращает значение текущей даты.
- Функции динамического обмена данными (DDE) между приложениями Windows и функции работы с использованием технологии связывания и внедрения (OLE) (например, DDE() и DDESend() – используются для перемещения данных из одного приложения в другое и обратно. Для приложений, поддерживающих технологию OLE, в частности Microsoft Office, особенно важными являются функции GetObject () и CreateObject (), с помощью которых начинается основная работа с любыми объектами (см. разд. "Интеграция Access 2000 с другими компонентами Office 2002" гл. 15).
- Статистические функции SQL – используются чаще всего для многотабличных запросов как источника данных для форм. Статистические функции SQL возвращают статистические данные из записей, выбранных по запросу. Эти функции нельзя использовать в макросах или вызывать их из программ VBA иначе, как внутри выражений в кавычках, используемых в инструкциях SQL для создания объектов Recordset.
Статистические функции по подмножествам записей– это те же статистические функции SQL, но работающие по большей части с вычисляемыми значениями, а не со значениями, содержащимися в полях запросов.
Примером статистической функции SQL является stDev(), а соответствующей ей статистической функцией по подмножеству записей– DStDev(). Обе они вычисляют стандартное отклонение для заданного множества значений.
- Функции обработки ошибок – используются, как следует из названия, для отслеживания ошибок. Например, функция Error () выводит сообщение об ошибке по ее номеру. Наличие таких функций в выражении можно считать признаком хорошего тона, поскольку используемое выражение, хоть и приводит к ошибочному результату, но продолжает вести себя корректно, не забыв предупредить пользователя.
- Финансовые функции – идентичны своим двойникам в Microsoft Excel и используют те же аргументы. Например, функция Rate () возвращает процентную ставку, необходимую для получения путем регулярных взносов указанной суммы на базе имеющейся за определенный срок.
- Функции общего назначения – используются в основном при программировании на VBA для извлечения вспомогательной информации и управления ходом выполнения программы. Например, функция Commando служит для извлечения аргументов командной строки при выполнении программы, написанной на VBA.
- Функции сообщений и ввода/вывода – позволяют выводить сообщения или вводить новые данные, а также устанавливать различные параметры ввода/вывода. Иллюстрацией могут служить функция ввода данных inputBox () или функция проверки существования каталога или файла Dir ().
- Функции проверки – особая группа функций, отвечающих на вопрос "является ли аргумент…?". Например, IsNumeric() – возвращает True, если аргумент имеет один из числовых типов данных, и False – в противном случае; IsObject() – возвращает True, если аргумент– объект OLE Automation, и False – в противном случае.
- Функции ветвления – используются для выбора из нескольких альтернатив. На них стоит остановиться подробнее.
- IIf (Expr, Truepart, Falsepart) – возвращает значение выражения Truepart, если значение выражения Ехрг равно True, или значение выражения Falsepart, если значение Ехрг есть False. Особо важно то, что вне зависимости от значения выражения Ехрг, будут вычислены как выражение Truepart, так и Falsepart. Следует быть очень внимательным к возможным побочным эффектам, связанным с этой особенностью функции Ilf (). Отметим, что здесь, как и в большинстве функций, в качестве каждого из аргументов стоит выражение, которое, в свою очередь, тоже может быть сложным выражением.
- Функция Choose () возвращает значение, соответствующее заданному положению в списке значений. Switch () возвращает значение, связанное с первым из последовательности выражением, имеющим значение True.
- Функции Choose () и Switch() похожи на команду Select Case из VBA и других диалектов Basic, которая не раз встретится вам в гл. 13.
- Математические и тригонометрические функции – используются для выполнения простых (и не слишком) математических операций, например вычисления логарифма Log () или синуса числа Sin ().
- Текстовые функции – позволяют проводить различные операции над строками. Например, функция Trim() возвращает строку, заданную в качестве аргумента, без начальных и заключительных пробелов.
Замечание
Еще раз обратим внимание, что описание всех функций (а их более 100) с подробными примерами выходит за рамки этой книги, тем более что справочная система Access и VBA предлагает развернутое изложение использования каждой функции, сопровождаемое примерами. При необходимости применения в дальнейшем изложении какой-либо незнакомой функции мы будем стараться кратко описать ее назначение и применение.