Вычисляемые поля
В запросе для каждой записи могут производиться вычисления с числовыми и строковыми значениями или значениями дат с использованием данных из одного или нескольких полей. Результат вычисления образует в таблице запроса новое вычисляемое поле. В исходных таблицах базы данных новых полей не создается. При каждом выполнении запроса производится вычисление с использованием текущих значений полей.
В выражениях вычисляемых полей помимо имен полей могут использоваться литералы и функции. В результате обработки выражения может получаться только одно значение.
Выражение вводится в бланк запроса в пустую ячейку строки Поле (Field). Затем, после нажатия клавиши <Enter> или перевода курсора в другую ячейку, перед выражением в этой ячейке добавляется имя поля выражением (Exprw), где n— целое число, увеличивающееся на единицу для каждого нового создаваемого вычисляемого поля в запросе. Имя вычисляемого поля, стоящее перед выражением, отделяется от него двоеточием. Например:
Выражение1: [Цена]*[Количество],
где цена и количество — имена полей.
Имя вычисляемого поля выражение! становится заголовком столбца в таблице с результатами выполнения запроса. Это имя можно изменить.
Для вычисляемых полей, как и для любых других, допускаются сортировка, задание условий отбора и расчет итоговых значений.
В вычисляемых полях и условиях отбора можно использовать встроенные функции, В Access и VBA определено примерно 150 функций. Перечислим далее некоторые сгруппированные по назначению функции.
Функции даты и времени. Используются при обработке дат и времени в полях и литералах. Возвращают дату и время полностью или частично дату, функция Month (дата) выделяет месяц из значения поля, содержащего дату, и возвращает целое число из интервала от 1 до 12 включительно, обозначающее месяц года. Функция MonthName(месяц[; имя]) преобразует числовое обозначение месяца в строковое выражение, указывающее полное (имя=ложь) или сокращенное (имя=истина) название месяца. Например, MonthName ( [срок_пост] ; истина) возвращает сокращенное название месяца. По умолчанию берется значение ложь (название не сокращается).
Функции обработки текста. Используются при работе с символьными строками. К этой группе функций относится, например, функция Format, которая служит доя преобразования любого допустимого выражения (в. том числе числового значения, даты) в символьную строку. Format (выражение [; формат [; первый_день_недели [;первая_неделя_года] ] ]). Если аргумент выражение указан в формате даты, то аргумент формат задает форматирование даты. Символы формата даты приведены в табл. 4.1.
Таблица 4.1. Символы формата даты
Символ форматирования |
Возвращаемое значение |
Dddd ddd dd ww mmmm mm mmm УУ УУУУ |
Название дня недели Сокращенное название дня недели Номер дня месяца Номер недели года Полное название месяца Номер месяца Краткое название месяца Две последние цифры года Четыре цифры года |
Например:
Format { [НАКЛАДНАЯ] ! [ДАТА_ОТГР] ; "mmmm") — Возвратит полное название
месяца;
Format ( [НАКЛАДНАЯ] ! [ДАТА_ОТТР] ; "mm" ) — Возвратит номер месяца.
Если необходимо выделить не один элемент из даты, запишите в функции Format несколько символов форматирования, разделяя их знаком Т. Например, функция Format ( [НАКЛАДНАЯ] ! [ ДАТA_ОТГP ] ; 'mmmm\ yyyy’) Возвратит полное название месяца и год. После знака "\" нужно поставить пробел.
Функции преобразования типа данных. Позволяют задавать тип данных для числовых значений, что исключает необходимость подбора наиболее подходящего типа данных системой.
Математические и тригонометрические функции. Выполняют операции над числовыми значениями, которые невозможно выполнить с помощью стандартных арифметических операторов.
Финансовые функции. Подобно функциям Excel служат для расчета процента возврата по инвестициям, амортизационных отчислений, годовой ренты и т. п.
Статистические функции. Используются при работе над полями подмножества записей, вычисляют среднее значение, сумму, минимальное, максимальное значения.
Для записи выражения в вычисляемом поле или формирования условия отбора может быть использован Построитель выражений (Expression Builder), который вызывается кнопкой Построить (Build) панели инструментов. Курсор мыши предварительно должен быть установлен в ячейке ввода выражения.
Использование функций в вычисляемых полях
Допустим, необходимо выбрать все накладные, по которым производилась отгрузка в заданном месяце. В таблице накладная дата отгрузки хранится в поле дата_отт типа Дата/время (Date/Time).
Для выборки накладных по заданному месяцу создадим вычисляемое поле в пустой ячейке строки Поле (Field), записав туда выражение вида:
Month (накладная! дата_отгР) , если месяц будет задаваться номером;
MonthName{Month(НАКЛАДНАЯ!ДАТА_ОТГР))
ИЛИ Format ( [НАКЛАДНАЯ] ! [ДАТА_ОТГР] ; "mimm"), если месяц будет задаваться полным названием.
Функция Month возвращает выделенный из даты номер месяца. Функция MonthName преобразует номер месяца в его название. Функция Format возвращает выделенное из даты полное название месяца.
Запрос, содержащий первое приведенное выражение, для которого в качестве условия отбора введен номер месяца — 3, — приведен на рис. 4.7. Запрос, содержащий второе приведенное выражение, для которого в качестве условия отбора введено название месяца — март, — приведен на рис. 4.8.
Рис. 4.7. Запрос с функцией выделения из даты номера месяца в вычисляемом поле
Рис. 4.8. Запрос с функцией выделения из даты полного названия месяца в вычисляемом поле
На рис. 4.9 и 4.10 показано, как сформировать выражение в построителе, выбрать нужную функцию и в качестве аргумента функции — нужное поле таблицы базы данных.
После ввода выражения система формирует имя вычисляемого поля по умолчанию — выражениеN (ExprN). Это имя будет вставлено перед выражением.
Присвоение пользовательских имен вычисляемым полям
По умолчанию первому вычисляемому полю Присваивается имя Выражение1 следующему выражение2 и т. д. Пользователь имеет возможность присвоить новое имя и подпись вычисляемому полю.
Для изменения только имени поля в запросе в режиме конструктора запроса в бланке запроса вместо выражениеN (ExprN) введите новое имя. Новое имя используется не только в заголовке столбца таблицы запроса, а и в новых объектах, построенных на этом запросе.
Для изменения подписи поля в свойствах поля установите курсор мыши на вычисляемое поле в бланке запроса и откройте окно Свойства поля (Field Properties), щелкнув правой кнопкой мыши и выбрав в контекстном меню пункт Свойства (Properties). В окне Свойства поля (Field Properties) на вкладке Общие (General) введите нужный текст подписи в строку Подпись поля (Caption).
