Функции
Функции в Microsoft Access используются для возврата значений в точку вызова, что позволяет создавать динамичные и гибкие выражения. Возвращаемое значение функции определяется её типом. Например, функция Now()
возвращает текущие дату и время системы. Синтаксически функция обозначается круглыми скобками сразу после её имени. Многие функции требуют аргументов, которые указываются в этих скобках через запятую. Функции можно использовать для создания новых выражений или других функций. (Об использовании функций подробно рассказывается в главе 13.)
Встроенные функции в Access можно разделить на следующие категории:
- Функции работы с массивами — используются для определения границ размерностей массивов при программировании на VBA.
- Функции преобразования типов данных — применяются для преобразования одного типа данных в другой. Например, для преобразования числа в строку служит функция
Str()
, а обратно — функцияVal()
. - Функции работы с объектами баз данных — обеспечивают доступ к объектам баз данных: таблицам, запросам, формам, отчётам, макросам и модулям. Например, функция
CurrentDb()
возвращает ссылку на текущую базу данных. (Подробности о работе с этими функциями можно найти в главе 13.) - Функции даты и времени — служат для операций с датами и временем. Например, функция
DateDiff()
вычисляет промежуток между двумя датами, а функцияDate()
возвращает текущую дату. - Функции динамического обмена данными (DDE) и работы с технологией связывания и внедрения объектов (OLE) — используются для обмена данными между приложениями Windows. Например, функции
DDE()
иDDESend()
позволяют передавать данные между приложениями, поддерживающими DDE. ФункцииGetObject()
иCreateObject()
важны для работы с объектами в приложениях, поддерживающих OLE, таких как компоненты Microsoft Office. (Подробнее об интеграции Access с другими компонентами Office см. в главе 15.) - Статистические функции SQL — часто используются в многотабличных запросах для получения статистических данных из выбранных записей. Эти функции нельзя использовать в макросах или вызывать их из программ VBA иначе, как внутри выражений в кавычках, используемых в инструкциях SQL для создания объектов Recordset. Примером статистической функции SQL является
StDev()
, а соответствующей ей статистической функцией по подмножеству записей —DStDev()
. Обе они вычисляют стандартное отклонение для заданного множества значений. - Функции обработки ошибок — используются для отслеживания и обработки ошибок. Например, функция
Error()
выводит сообщение об ошибке по её номеру. Наличие таких функций в выражении способствует корректному поведению программы даже при возникновении ошибок, обеспечивая информирование пользователя о проблеме. - Финансовые функции — идентичны своим аналогам в Microsoft Excel и используют те же аргументы. Например, функция
Rate()
возвращает процентную ставку, необходимую для накопления определённой суммы при регулярных взносах за заданный период. - Функции общего назначения — используются при программировании на VBA для получения вспомогательной информации и управления выполнением программы. Например, функция
Command()
служит для извлечения аргументов командной строки при выполнении программы, написанной на VBA. - Функции сообщений и ввода/вывода — позволяют выводить сообщения, вводить данные и управлять параметрами ввода/вывода. Например, функция
InputBox()
используется для ввода данных, а функцияDir()
проверяет существование каталога или файла. - Функции проверки — отвечают на вопрос "является ли аргумент...?". Например,
IsNumeric()
возвращает True, если аргумент имеет числовой тип данных, и False в противном случае;IsObject()
возвращает True, если аргумент является объектом OLE Automation, и False в противном случае. - Функции ветвления — используются для выбора из нескольких альтернатив. К ним относятся:
IIf(Expr, TruePart, FalsePart)
— возвращает значение выраженияTruePart
, еслиExpr
равно True, или значениеFalsePart
, еслиExpr
равно False. Важно отметить, что независимо от значенияExpr
будут вычислены какTruePart
, так иFalsePart
. Это требует внимательности к возможным побочным эффектам, связанным с этой особенностью функцииIIf()
.Choose(Index, Choice1, Choice2, ...)
— возвращает значение, соответствующее заданному положениюIndex
в списке значенийChoice1, Choice2, ...
.Switch(Expr1, Value1, Expr2, Value2, ...)
— возвращает значениеValue
, связанное с первым выражениемExpr
, имеющим значение True.
Select Case
в VBA и других диалектах Basic, который подробно рассматривается в главе 13. - Математические и тригонометрические функции — используются для выполнения математических операций, например, вычисления логарифма с помощью функции
Log()
или синуса числа с помощью функцииSin()
. - Текстовые функции — позволяют выполнять различные операции над строками. Например, функция
Trim()
удаляет пробелы в начале и конце строки,Left()
иRight()
извлекают подстроки из начала или конца строки соответственно, аMid()
извлекает подстроку из произвольного места строки. Эти функции полезны при обработке текстовых данных в запросах и VBA.
Примеры использования функций
1. Работа с датами
SELECT ФИО, DateDiff("yyyy", [ДатаРождения], Date()) AS Возраст
FROM Сотрудники;
Этот запрос вычисляет возраст сотрудников на основе их даты рождения.
2. Преобразование типов данных
SELECT ФИО, Str([Зарплата]) AS ЗарплатаСтрокой FROM Сотрудники;
Функция Str()
преобразует числовое поле "Зарплата" в строку.
3. Обнаружение ошибок
If Err.Number <> 0 Then
MsgBox "Ошибка: " & Err.Description
End If
Этот VBA-код проверяет наличие ошибки и выводит её описание.
4. Использование функций ветвления
SELECT ФИО, IIf([Зарплата] > 50000, "Высокая", "Низкая") AS Категория
FROM Сотрудники;
Функция IIf()
присваивает сотрудникам категорию "Высокая" или "Низкая" в зависимости от их зарплаты.
5. Работа с текстовыми функциями
Пример извлечения первых пяти символов из строки:
SELECT Left([ФИО], 5) AS ПервыеПять FROM Сотрудники;
Этот запрос извлекает первые пять символов из поля "ФИО".
Пример удаления лишних пробелов из строки:
SELECT Trim([ФИО]) AS ОчищенноеИмя FROM Сотрудники;
Функция Trim()
удаляет лишние пробелы в начале и конце строки.
6. Использование функции Switch()
SELECT ФИО, Switch(
[Возраст] < 18, "Несовершеннолетний",
[Возраст] BETWEEN 18 AND 60, "Трудоспособный",
[Возраст] > 60, "Пенсионер") AS Категория
FROM Сотрудники;
Функция Switch()
классифицирует сотрудников по возрастным группам.
Заключение
Функции в Access являются мощным инструментом для работы с данными. Они позволяют выполнять вычисления, преобразования типов, управлять ошибками и автоматизировать обработку информации. Используйте их в SQL-запросах, VBA-коде и выражениях для повышения эффективности работы с базой данных.