Вычисления и групповые операции СУБД MS Access
Подробности
Создано: 12 ноября 2013
6.1. Вычисляемые поля.
6.2. Создание выражений с помощью Построителя выражений.
6.3. Обзор встроенных функций СУБД MS Access.
6.4. Итоговые запросы.
6.5. Перекрестные запросы.
Очень часто при формировании набора записей требуется произвести вычисления над данными (определить возраст сотрудника, стоимость заказа, процент от продаж, выделить часть номенклатурного кода и т. п., т. е. вывести информацию, которая не хранится в базе данных) или выполнить определенные операции по непосредственной обработке отбираемых данных.
В QBE СУБД MS Access такие возможности предоставляются через вычисляемые поля и групповые операции.
6.1. Вычисляемые поля
- Вычисляемое поле представляет собой выражение, состоящее из операторов (арифметических, сравнения, логических, конкатенации) и операндов. В качестве операндов могут быть использованы константы, встроенные или определенные пользователем функции и идентификаторы, например
- Стоимость: Товары! Цена * Количество * (1-Скидка)
- КоличествоМужчин: Sum(IIf(Пол = «м»; 1; 0))
ФИО: Фамилия &» «& Left(Имя;1) &». «& Left(Отчество;1) &».»
- Стоимость, КоличествоМужчин и ФИО являются именами вычисляемых полей и отображаются в режиме таблицы в заголовке столбца, символ двоеточие исполняет роль разделителя между именем вычисляемого поля и выражением.
- Если имя таблицы или поля содержит пробелы, то его идентификатор обязан в выражении заключаться в квадратные скобки, например
- Стоимость: Цена*[Количество товара]
Вычисляемое поле создается прямо в бланке QBE путем внесения выражения в ячейку Поле любого свободного столбца. Результаты вычислений, выводящиеся в поле, не запоминаются в базовой таблице. Вычисления снова производятся всякий раз, когда выполняется запрос, поэтому результаты всегда представляют текущее содержимое базы данных.
Обновить вычисленные результаты вручную невозможно.
Для построения сложных выражений в СУБД MS Access входит утилита, называемая Построитель выражений.
6.2. Создание выражений с помощью Построителя выражений
Построитель выражений можно запустить щелкнув по клавише Построить на панели инструментов Конструктор запросов или выбрав в контекстном меню поля бланка запроса QBE команду меню Построить….
![]() |
![]() |
![]() |
![]() |
Рис.6.1. Диалоговое окно Построитель выражений
![]() |
Рис.6.2. Диалоговое окно Построителя выраженийсо сформированным выражением
6.3. Обзор встроенных функций СУБД MS Access
СУБД MS Access содержит более 100 встроенных функций (рис.6.3), которые можно использовать при формировании вычисляемого поля или при задании условия отбора.
![]() |
Рис.6.3. Диалоговое окно Построителя выраженийсо списком встроенных функций
Все встроенные функции в Построителе выражений сгруппированы по функциональному назначению.
При выборе функции в правом окне построителя, в нижней области окна Построителя выражений отображается синтаксис этой функции. Для более детальной справки необходимо щелкнуть по клавише Справка.
Обзор всех встроенных функций выходит за рамки лекции, поэтому рассмотрим наиболее используемые
Таблица 6.1
Функции категории Дата/время
Day(дата) | Возвращает значение дня месяца от 1 до 31 |
Month(дата) | Возвращает значение месяца от 1 до 12 |
MonthName(месяц[; флаг]) | Возвращает название месяца соответствующего номеру месяца: 1 – январь, 2 – февраль, и т. д. Если значение аргумента флаг Истина, то функция возвращает аббревиатуру месяца: 1 – янв, 2 – фев и т. д. |
Year(дата) | Возвращает значение года от 100 до 9999 |
Weekday(дата[; число]) | Если аргумент число не указан, возвращает значение дня недели от 1 (воскресенье) до 7 (суббота). Если аргумент число имеет значение 0, то возвращает значение дня недели от 1 (понедельник) до 7 (воскресенье) |
Hour(дата) | Возвращает целое число от 0 од 23, представляющее значение часа |
DatePart(интервал; дата) |
и т. п. (см. справку по функции). |
Date() | Возвращает текущую системную дату |
Функции категории Проверка
IsNull(переменная) | Возвращает значение Истина если значение переменной (значение поля в источнике данных) равно Null |
IsNumeric(переменная) | Возвращает значение Истина если значение переменной (значение поля в источнике данных) имеет один из числовых типов данных |
Функции категории Управление
IIf(условие; выр1; выр2) | Возвращает значение выражения выр1 если значение аргумента условие Истина и возвращает значение выражения выр2 если значение аргумента условие Ложь. Данная функция аналогична функции ЕСЛИ в MS Excel. |
Продолжение таблицы 6.1
Функции категории Текстовые
Left(текст; n) | Возвращает n левых символов аргумента текст |
Right(текст; n) | Возвращает n правых символов аргумента текст |
Mid(текст; нач_поз[; n]) | Возвращает n символов начиная с позиции нач_поз аргумента текст. Если аргумент n не указан, то возвращает все символы до конца строки начиная с позиции нач_поз аргумента текст. |
Len(текст) | Возвращает количество символов (длину строки) в аргументе текст |
LTrim(текст) | Возвращает строковое значение аргумента текст без начальных пробелов |
RTrim(текст) | Возвращает строковое значение аргумента текст без заключительных пробелов |
Trim(текст) | Возвращает строковое значение аргумента текст без начальных и заключительных пробелов |
Str(число) | Возвращает строковое значение аргумента число |
Format(переменная; формат) | Возвращает значение аргумента переменная в формате заданным аргументом формат |
6.3. Итоговые запросы
- При анализе данных очень часто интересуют не отдельные записи, а итоговые значения по группам данных, например:
- — количество сделок с Партнерами за определенный промежуток времени;
- — средний объем продаж по каждому месяцу за предыдущий год.
- Ответы на такие вопросы дает итоговый запрос.
- Для вычисления итоговых значений необходимо нажать кнопку Групповые операции на панели инструментов Конструктор запросов, чтобы в бланке QBE появилась строка Групповая операция (после имени таблицы).
- По умолчанию для каждого поля, занесенного в бланк запроса, устанавливается значение Группировка (итоги не подводятся).
Для подведения итогов необходимо заменить установку Группировка на конкретную итоговую функцию. В СУБД MS Access предусмотрено 9 функций (табл. 6.2), обеспечивающих выполнение групповых операций.
Таблица 6.2
Функции категории Статистические
Функция | Назначение |
Sum | Возвращает сумму набора значений |
Avg | Возвращает среднее арифметическое набора значений |
Min | Возвращает наименьшее значение из набора значений |
Max | Возвращает наибольшее значение из набора значений |
Count | Возвращает количество записей в наборе значений отличных от Null |
First | Возвращает первое значение поля в группе |
Last | Возвращает последнее значение поля в группе |
StDev | Возвращает среднеквадратичное отклонение набора значений |
Var | Возвращает дисперсию набора значений |
В раскрывающемся списке строки Групповая операция имеется установка Выражение. Данная установка применяется, когда в выражении (строка Поле) используется несколько итоговых функций.
В раскрывающемся списке строки Групповая операция имеется установка Условие. Данная установка применяется, когда в строке Условие отбора записано условие выборки, но данные столбца (поля) не должны участвовать в групповой операции.
Для решения более сложных статистических задач в СУБД MS Access предусмотрен специальный тип запроса – перекрестный запросов.
6.4. Перекрестные запросы
Перекрестный запрос – это специальный тип группового запроса, в котором отражаются результаты статистических расчетов по значению одного поля таблицы.
Для построения перекрестного запроса достаточно трех полей базового источника. По повторяющимся значениям одного поля формируются названия заголовков строк итоговой (сводной) таблицы (рис.6.4).
По повторяющимся значениям другого поля формируются названия заголовков столбцов итоговой (сводной) таблицы. Результаты статистической обработки по третьему полю отображаются в ячейках сводной таблицы (область значений).
Пример перекрестного запроса в режиме конструктора представлен на рис.6.5, а результаты выполнения запроса на рис. 6.6.
В области заголовков строк допускается размещение нескольких полей, в то время как в других областях может размещаться только по одному полю.
В перекрестном запросе допускается указание условий отбора. Сортировка может проводиться только по полям, размещенным в области заголовков строк.
![]() |
![]() |
Рис.6.4. Макет перекрестной таблицы
![]() |
Рис.6.5. Сформированный перекрестный запрос в QBE
Рис.6.6. Результат выполнения запроса в режиме Таблицы
Источник: http://po-teme.com.ua/informatika/lektsii-po-informatike/1578-vychisleniya-i-gruppovye-operatsii-subd-ms-access.html
Добавление вычисляемого поля в запрос
- Лабораторная работа №3.
- Создание и использование таблиц, форм, запросы и отчеты в Access.
- Добавление вычисляемого поля в запрос.
Создадим базу данных, которая будет содержать сведения о производстве овощей различными федеральными округами Российской Федерации и входящими в их состав регионами.
При этом исходными данными будут служить посевная площадь и валовой сбор, а урожайность будет рассчитываться автоматически в вычисляемом поле запроса.
Итак, сформируйте в режиме конструктора таблицу Типы регионов, включив в нее всего два поля – Код (с типом данных Счетчик) и Тип региона (тип данныхТекстовый). Ключевые поля не задавайте. Перейдите в режим таблицы и введите следующие значения (в шестой строке впишите прочерк):
Создайте еще одну небольшую таблицу Федеральные округа РФ. В режиме конструктора задайте ее структуру: Код округа(тип данных – Счетчик) и Федеральный округ(тип данных – Текстовый). Ключевые поля использовать не будем. Перейдите в режим ввода данных и заполните таблицу:
Теперь можно приступить к созданию основной таблицы. Ввиду большого объема работы по ее заполнению не станем использовать столбцы подстановки при вводе федеральных округов и типов региона, а будем указывать их коды. Поэтому в режиме конструктора сформируйте структуру таблицы, как показано ниже.
При вводе типа данных Денежныйв поля Площадьи Сбор ниже, в окне «Свойства поля» щелкните в строке «Формат поля» и выберите из предложенного списка Фиксированный.
Это нужно, чтобы была возможность ввода чисел с двумя знаками после запятой и обработки их с повышенной точностью:
Сохраните таблицу под именем Производство овощей в федеральных округах и регионах РФ. Заполните ее данными:
Очевидно, что считывать информацию, пользуясь подобной таблицей, совершенно неудобно, поскольку отдельные данные в ней закодированы. Поэтому составим запрос, в котором будет представлена полная картина данных, и к тому же добавим в него вычисляемое поле для расчета урожайности овощных культур по регионам и федеральным округам.
Вызовите команду создания запроса в режиме конструктора и добавьте последовательно все три созданные ранее таблицы: Типы регионов, затем – Производство овощей в федеральных округах и регионах РФ и, наконец, Федеральные округа РФ.
Теперь необходимо задать связи между таблицами.
Для этого нажмите на названии поля Код таблицы Типы регионов и, Удерживая мышь, перетащите указатель на название поля Код типа региона таблицы Производство овощей в федеральных округах и регионах РФ.
Связь отображена в виде обоюдной стрелки. Создайте также связь между полями Код округа таблиц Производство овощей в федеральных округах и регионах РФи Федеральные округа РФ. У вас получится следующее:
Затем выберите из указанных таблиц поля включения их в запрос:
Для ввода вычисляемого Урожайность щелкните в том месте, где должно быть его название, правой кнопкой мыши и выберите из контекстного меню команду Построить, откроется окно построителя выражений.
Слева внизу разверните двойным щелчком папку Таблицы, затем нажмите таблицу Производство овощей в федеральных округах и регионах РФ. Имеющиеся в ней поля будут отражены в окне правее.
Двойным щелчком по названию поля Сбор поместите его в верхнюю часть окна построителя выражений. Затем нажмите кнопку с косой чертой, обозначающую знак деления (она находится ниже вводимого выражения в ряду подобных кнопок). Дважды щелкните по полю Площадь, оно также будет отражено в выражении. У вас получится следующее:
Нажмите кнопку ОК. Выражение помещено в конструктор запроса. Перейдите в режим таблицы запроса, и вы увидите в нем вычисляемое поле Выражение 1:
Остается только дать этому полю информативное название и несколько изменить его формат, чтобы уменьшить разрядность чисел.
Вернитесь в режим конструктора запроса. Измените слово Выражение 1 на Урожайность (будьте осторожны, чтобы не повредить формулу). Вызовите для этого поля окно свойств, нажав кнопку Свойства (или вызвав одноименную команду из контекстного меню). Выберите из списка форматов поля Фиксированный, число десятичных знаков – 2;
Вернитесь в режим таблицы запроса, убедитесь, что все получилось правильно. Закройте запрос, назовите его Производство и урожайность овощей.
Самостоятельно сформируйте форму для просмотра всех полей запроса Производство и урожайность овощей. Присвойте ей такое же имя, как у запроса.
Создайте также более простой запрос Производство овощей в Южном ФО. Он будет построен на основе созданного запроса (в окне добавления таблицы следует перейти на вкладку Запросы). Включите в него следующие поля и условия отбора:
Сохраните запрос под указанным именем, выведите его для просмотра.
Теперь научимся создавать отчеты в Access. Для этого будем использовать встроенный Мастер отчетов. Сформируем отчет по запросу Производство и урожайность овощей, который будет включать информацию по производству овощей всеми регионами и федеральными округами РФ, сгруппированную по федеральным округам и отсортированную в округа по виду региона.
Перейдите в окне создания базы данных на вкладку Отчеты, выполните команду Создание отчета с помощью мастера.
В окне создания отчетов следует указать запрос Производство и урожайность овощей, затем переместить в раздел выбранных полей все поля этого запроса, кроме столбца Площадь(можно сначала выбрать все значком «>>», затем выделить Площадь и вернуть его обратно значком «» поместить вправо.
В следующем окне укажите, что по полю Тип региона необходимо произвести сортировку по убыванию. Нажмите на кнопку Итоги, укажите, что следует рассчитать средние показатели по полю Сбор (Avg поставить галочку). Нажмите ОК, затем – Далее.
В следующем окне выберите вид макета для отчета (можно оставить «ступенчатый»), а также ориентацию страницы (книжная или альбомная), щелкните Далее.
Осталось только вписать имя отчета. Назовите его Производство и урожайность овощей в регионах и округах РФ, и все – нажмите Готово. Просмотрите свой отчет. Обратите внимание на удобство расположения данных и внешнюю привлекательность отчета.
Источник: https://megaobuchalka.ru/7/21924.html
Вычисляемые поляв запросе БД Access 2003
2010-02-28
Владимир Ткаченко
Источник: Обучение в интернет
В БД Microsoft Access вычисляемые поля могут быть созданы в запросе, форме или отчете.
Вычисляемые поля используются для различных целей, в том числе и для проведения расчетов, Для выполнения подсчетов в вычисляемые поля объектов базы данных Access вводят Выражения.
Выражения — это формулы аналогичные формулам Excel, но только вместо ссылок на ячейки в них используются имена полей. Ввод выражений возможен как вручную, так и с помощью Построителя выражений.
Выражения могут содержать следующие элементы:
- идентификаторы (имя поля и элемента управления, которые заключаются в квадратные скобки);
- операторы (арифметические, логические, сравнения и другие операторы);
- функции (готовые формулы, которые состоят из имени и аргумента, помещенного в круглые скобки)
- константы (элементы, которые не изменяются в Выражении, например Null, Истина, Ложь);
- значения (например, значения даты и времени, численные положительные или отрицательные значения).
- Примеры Выражения:
- =[Оценка]/1,2, где «=» — опрератор, [Оценка] — имя поля, а 1,2 — значение;
- Date(), где Date — имя функции текущей даты, которая не имеет аргумента.
Рассмотрим создание вычисляемых полей в бланке запроса базы данных Access 2003. Для ввода Выражения в запрос его необходимо открыть в режиме Конструктора.
Чтобы создать вычисляемое поле в запросе (в существующем или вновь создаваемом запросе) открытого в режиме конструктора, необходимо ввести Выражение в строку Поле свободного столбца бланка запроса.
Выражение может выполнять вычисления, обрабатывать текст, указывать время и дату, проверять данные и т.д. Необходимо отметить, что каждая формула вычисляется только для отдельной строки таблицы бланка запроса.
Рассмотрим создание вычисляемого поля в бланке запроса на примере базы данных Training_students_VP. Постановка задачи: в запросе на выборку (Запрос 3) создать поле, в котором должны отображаться итоговые оценки (ниже на 20% от полученных по результатам рейтинга). Для решения этой задачи откроем бланк «Запроса 3» в режиме конструктора (Рис. 1).
Рис. 1.
Для создания вычисляемого поля можно применить «Построитель выражений». Для этого надо установить курсор в свободное поле и выбрать на панели инструментов команду Построить (можно также воспользоваться контекстным меню), откроется окно Построитель выражений.
В верхней области построителя расположено текстовое поле выражения, предназначенное для записи выражения. Ниже поля выражения размещается строка с операторами. Три текстовых поля в нижней области используются для выбора элементов, которые могут быть вставлены в текстовое поле выражения. Выражение можно записать с клавиатуры или сформировать из готовых функций, операторов и других элементов.
Для поставленной задачи в Построитель можно ввести выражение =[Оценка]/1,2 с клавиатуры (Рис.2) и щелкнуть на кнопке ОК. Рис. 2.
В результате в бланке запроса появится вычисляемое поле =[Оценка]/1,2
Рис. 3.
Далее надо закрыть бланк запроса в режиме конструктора и открыть его в режиме таблицы. В таблице вычисляемое поле состоит из слова «Выражение» и цифры 1, которая показывает, каким по счету создано выражение. Необходимо также отметить, что результаты вычислений, отображаемые в записях, не отформатированы.
Рис. 4.
С учетом вышеизложенного следует изменить название вычисляемого поля и отформатировать его. Для этого необходимо вернуться в режим конструктора и слово Выражение1 заменить на «Итог_оценка». Затем щелкнуть правой кнопкой мыши на вычисляемое поле и в контекстном меню выбрать команду Свойства, откроется диалоговое окно Свойства поля (Рис. 5)
Рис. 5.
В окне Свойства поля установить формат, например Фиксированный и закрыть это окно. Затем закрыть запрос в режиме конструктора и открыть его в режиме таблицы. В результате на экране будет отображен запрос с отформатированным вычисляемым полем. Необходимо отметить, что значения вычисляемого поля не хранятся в базе данных, а являются результатом вычислений при формировании запроса.
Источник: https://www.lessons-tva.info/articles/informat/8.html
Условия отбора записей — Базы данных
Литералы — конкретные значения, воспринимаемые Access так, как они записаны. В качестве литералов могут быть использованы числа, текстовые строки, даты. Текстовые строки заключаются в двойные кавычки, даты — в знаки (#). Например, 567, «Информатика», #1-Января-99#.
Константы — не изменяющиеся значения, которые определены в Access, например, True, False, Да, Нет, Null.
Идентификатор — ссылка на значение поля, элемента управления или свойства. Идентификаторами могут быть имена полей таблиц, форм, отчетов и т. д., которые должны заключаться в квадратные скобки. Как правило, Access производит автоматическую подстановку скобок.
Во многих случаях ссылка на конкретное значение должна указывать точное его местоположение в иерархии объектов базы данных, начиная с объекта верхнего уровня.
Если необходимо указать ссылку на поле в конкретной таблице, форме, отчете, то перед именем поля ставится имя таблицы, формы, отчета, также заключенное в квадратные скобки и отделенное от имени поля восклицательным знаком.
Например, ссылка на поле в таблице примет вид: [Имя таблицы]! [Имя поля], а ссылка на свойство DefaultValue элемента управления Дата рождения в форме СТУДЕНТ: Forms! [СТУДЕНТ]! [ Дата рождения].DefaultValue
Операторами сравнения и логическими операторами, использование которых допускается в выражении условия отбора, являются:
Эти операторы определяют операцию над одним или несколькими операндами.
Если выражение в условии отбора не содержит оператора, то по умолчанию используется оператор =.
Текстовые значения, если они содержат пробелы или знаки препинания, вводятся в двойных кавычках. В противном случае кавычки можно не вводить, они будут добавлены автоматически.
Допускается использование операторов шаблона — звездочка (*) и вопросительный знак (?).
- Оператор Between позволяет задать интервал для числового значения и даты. Например:
- Between 10 And 100
- задает интервал от 10 до 100; можно задать интервал дат:
Between #01.01.1997* And #31.12.1997*
- Оператор in позволяет выполнить проверку на равенство любому значению из списка, который задается в круглых скобках. Например:
- In («Математики»;»Информатики»; » Истории»)
Источник: https://itteach.ru/bazi-dannich/usloviya-otbora-zapisey
23 Формирование запроса с вычисляемым полем в ms Access 2007
В БД Microsoft Access вычисляемые поля могут быть созданы в запросе, форме или отчете.
Вычисляемые поля используются для различных целей, в том числе и для проведения расчетов, Для выполнения подсчетов в вычисляемые поля объектов базы данных Access вводят Выражения.
Выражения — это формулы аналогичные формулам Excel, но только вместо ссылок на ячейки в них используются имена полей. Ввод выражений возможен как вручную, так и с помощью Построителя выражений.
- Выражения могут содержать следующие элементы:
- идентификаторы (имя поля и элемента управления, которые заключаются в квадратные скобки);
- операторы (арифметические, логические, сравнения и другие операторы);
- функции (готовые формулы, которые состоят из имени и аргумента, помещенного в круглые скобки)
- константы (элементы, которые не изменяются в Выражении, например Null, Истина, Ложь);
- значения (например, значения даты и времени, численные положительные или отрицательные значения).
- Примеры Выражения:
- =[Оценка]/1,2, где «=» — опрератор, [Оценка] — имя поля, а 1,2 — значение;
- Date(), где Date — имя функции текущей даты, которая не имеет аргумента.
Рассмотрим создание вычисляемых полей в бланке запроса базы данных Access 2007. Для ввода Выражения в запрос его необходимо открыть в режиме Конструктора.
Чтобы создать вычисляемое поле в запросе (в существующем или вновь создаваемом запросе) открытого в режиме конструктора, необходимо ввести Выражение в строку Поле свободного столбца бланка запроса.
Выражение может выполнять вычисления, обрабатывать текст, указывать время и дату, проверять данные и т.д. Необходимо отметить, что каждая формула вычисляется только для отдельной строки таблицы бланка запроса.
24 Параметрические запросы в ms Access 2007
На этапе создания запроса не всегда можно определить, какие именно значения должны использоваться в условиях отбора. В этом случае удобно задавать параметр, который Асcess запрашивает при каждом выполнении запроса.
Чтобы его определить, в строку Условие отбора вместо конкретного значения вводится имя или фраза, заключенная в квадратные скобки ([ ]). То, что находится внутри квадратных скобок, Access рассматривает как имя параметра.
Оно выводится в окне диалога при выполнении запроса, и поэтому должно представлять собой содержательную фразу.
Для проверки введенного значения для каждого параметра запроса можно указать тип данных. По умолчанию ему назначается текстовый тип.
В случае необходимости он меняется в окне Параметры запроса, которое открывается после выполнения команды Запрос – Параметры.
В столбце Параметр этого окна вводится имя каждого параметра, точно в таком же виде, как оно было указано в бланке запроса, но без квадратных скобок. В столбце Тип данных из раскрывающегося списка устанавливается нужный тип данных.
Аналогично в запросе задаются несколько параметров. При выполнении таких запросов поочередно вводятся значения для каждого из них.
Источник: https://studfile.net/preview/3536336/page:6/