- •Система управления базами данных
- •Введение
- •1 Устройство Access 2007
- •1.1Вход в Access 2007
- •1.2Выход из Access 2007 и Windows
- •1.3 Рабочее окно Access 2007
- •1.4Открытие базы данных
- •1.5Структура базы данных
- •2Таблицы
- •2.1Устройство таблицы Access 2007
- •2.2Вписывание и редактирование записей
- •2.3Создание таблицы
- •2.4Свойства полей таблицы
- •2.5Схема данных Access 2007
- •3.1Форма – средство удобного заполнения таблиц
- •3.2Разработка однотабличной формы
- •3.3Доработка формы в режиме конструктора
- •4Работа с данными. Запросы
- •4.1Сортировка данных. Фильтры
- •4.2Назначение и возможности запросов
- •4.3Создание запроса
- •4.4Запрос на основе связанных таблиц
- •4.5Вычисления в полях запроса
- •4.6Запрос Стоимость товаров
- •4.7Запросы с групповыми операциями
- •4.8Запрос по параметру
- •5.1Отчёт – главный вид выходной документации
- •5.2Создание отчёта
- •6Задание на работу
- •6.1Формулировка задания
- •6.2Рекомендации к выполнению задания
- •6.2.1Открытие файла базы данных
- •6.2.2Таблица и форма «Типы»
- •6.2.3Установление связей между таблицами
- •6.2.4Запрос Стоимость товаров
- •6.2.5Отчёт на основании запроса
- •6.3Особенности сохранения данных
- •Литература
- •Оглавление
4.6Запрос Стоимость товаров
Наиболее важный для нашей работы и наиболее трудоёмкий запрос мы будем делать с целью определения суммарной стоимости каждого из товаров в заказе. Из-за важности и трудоёмкости запроса Стоимость товаров мы выделили его в отдельный параграф и рассмотрим подробно. Запрос объединяет сведения из нескольких таблиц. Вычисления, необходимые для расчёта стоимости товара, тоже входят в запрос. Создание запроса начинается с выбора вкладки Создание инструментальной ленты. После выбора надо щёлкнуть по кнопке Конструктор запросов в группе Другие. После щелчка по кнопке Конструктор запросов появится окно конструктора запросов, а поверх него – окно Добавление таблицы, как на рис. 4.7. Из этого окна надо выделить, а затем щёлкнув по кнопке [Добавить], перенести в окно конструктора таблицы Товары, Заказано, Заказы, Клиенты (рис. 4.14). Всё это не отличается от создания других запросов кроме большего количества таблиц.
Рис. 4.14 Конструктор запроса Стоимость товаров. Видны последние столбцы запроса, в которых производятся вычисления
Из прямоугольных блоков, обозначающих таблицы (в верхней части конструктора), мышью поочерёдно переносятся в нижнюю часть конструктора, в строку Поле, имена полей в том порядке, в каком они должны располагаться в таблице запроса. Этот порядок можно увидеть в готовом запросе на рис. 4.15. В запросе Стоимость товаров полей всего 15, из них три поля – вычисляемые.
Поля (столбцы) запроса: Стоимость, СкидкаРуб и Сумма являются вычисляемыми. В них следом за именем поля обязательно ставится двоеточие, а за ним формула, по которой значения полей вычисляются. В формуле в качестве переменных фигурируют имена полей запроса. Переменные заключаются в квадратные скобки. Следует напечатать:
Стоимость: [Цена]*[Количество]
СкидкаРуб: [СкидкаПроц]*[Стоимость]/100
Сумма: [Стоимость]-[СкидкаРуб]+ [СтоимДоставки]
По окончании вписывания формул всем этим трём полям надо придать формат Денежный, как описано в пункте 4.5 (рис. 4.12). Для правильной работы запроса необходимо добавить в нижнюю часть конструктора строку Групповая операция, нажав на кнопку Итоги в группе Показать или скрыть вкладки Конструктор (рис. 4.17). В вычисляемых полях выбрать групповую операцию Выражение, в остальных полях оставить – Группировка. После закрытия конструктора запросов и открытия запроса появится практически законченная таблица запроса. По ней уже можно узнать стоимость каждого товара в каждом из заказов. Удобную ширину столбцов можно подобрать либо перемещая границы мышью, но лучше после выделения всей таблицы правой кнопкой мыши выбрать из меню: Ширина столбца. В появившемся диалоговом окне щелкнуть по кнопке По ширине данных. Все надписи точно разместятся во всех столбцах.
Рис.4.15 Фрагмент готового запроса Стоимость товаров
Запрос можно отпечатать, предварительно просмотрев его. Поскольку таблица запроса широкая, то все столбцы её помещаются на нескольких листах (рис. 4.15).
4.7Запросы с групповыми операциями
Поставим задачу подсчитать суммарное количество заказов по странам. В поле Страна получателя таблицы Заказы мы видим, что заказы рассылаются в две страны: в Россию и в Украину. Для создания запроса используем таблицу Заказы. Используя режим конструктора, добавим в Конструктор запросов таблицу Заказы тем же способом, как описано в пункте 4.3. Конструктор запроса Заказы по странам показан на рис. 4.16.
Рис. 4.16 Конструктор запроса Заказы по странам с выпавшим меню групповых операций, в котором выбрана операция Count
В поля запроса из таблицы перенесём всего два: Страна получателя и Заказ. Щелчком по кнопке Итоги из группы Показать или скрыть на вкладке Конструктор (рис. 4.17) добавим строку Групповая операция в нижнюю часть Конструктора запроса, что тоже видно на рис. 4.16. Весь список групповых операций приведён в таблице 4.2.
Рис. 4.17 Группа Показать или скрыть вкладки Конструктор
Таблица 4.2
Функция |
Описание |
Обрабатываемые типы данных |
Avg (Average) |
Вычисляет для столбца среднее значение. Столбец должен содержать числовые или денежные величины или значения даты или времени. Функция игнорирует пустые значения. |
«Числовой», «Денежный», «Дата/время» |
Count |
Подсчитывает количество элементов в столбце. |
Все типы данных, за исключением наборов данных, одновременно допускающих несколько значений. |
Max (Maximum) |
Возвращает элемент, имеющий наибольшее значение. Для текстовых данных наибольшим будет последнее по алфавиту значение, причем Access не учитывает регистр. Функция игнорирует пустые значения. |
«Числовой», «Денежный», «Дата/время» |
Min (Minimum) |
Возвращает элемент, имеющий наименьшее значение. Для текстовых данных наименьшим будет первое по алфавиту значение, причем Access не учитывает регистр. Функция игнорирует пустые значения. |
«Числовой», «Денежный», «Дата/время» |
StDev (Standard Deviation) |
Показывает, насколько значения отклоняются от среднего. |
«Числовой», «Денежный» |
Sum |
Суммирует элементы в столбце. Работает только с числовыми или денежными данными. |
«Числовой», «Денежный» |
Var (Variance) |
Вычисляет дисперсию для всех значений в столбце. Если таблица содержит менее двух строк, Access возвращает пустое значение. |
«Числовой», «Денежный» |
Группировка |
Размещает одинаковые записи в таблице запроса вместе, то есть собирает их в группы для которых выполняются вычисления. Группы размещаются в алфавитном порядке и по возрастанию. |
«Текстовый», «Числовой» |
Выражение |
Создает вычисляемое поле с помощью статистической функции, включенной в выражение. |
Типы данных, участвующие в выражении |
Условие |
Определяет условие отбора для поля, которое не участвует в группировке. Автоматически убирается флажок Вывод на экран. |
Типы данных, участвующие в условии |
First |
Возвращают значение поля из первой записи в результирующем наборе запроса. |
Имя таблицы, константа или функция (не статистическая функция SQL). |
Last |
Возвращают значение поля из последней записи в результирующем наборе запроса. |
Имя таблицы, константа или функция. |
В клетке строки Групповая операция поля Заказ надо щёлкнуть с правой стороны. Выпадет меню с перечнем возможных групповых операций, как это видно на рис. 4.16. Из меню надо выбрать операцию Count (подсчёт). Если сразу после создания запроса перевести его в режим Открыть, то имя последнего поля окажется не очень понятным: Count-Заказ. Чтобы переименовать его, надо в режиме конструктора щелкнуть правой кнопкой мыши на поле Заказ и вызвать диалоговое окно Окно свойств (рис. 4.12) и там, в строке Подпись впечатать новое имя столбца: Всего заказов. После этого окно Конструктора запроса можно закрыть.
Готовый запрос Заказы по странам показан на рис. 4.18. В графе Всего заказов видно общее количество заказов по странам.
Рис. 4.18 Готовый запрос Заказы по странам
Второй пример запроса с групповой операцией ставит целью выявить суммы продаж по городам. Чтобы список не был слишком длинным, ограничимся только городами в Украине. Такой запрос показан на рис. 4.19.
Рис. 4.19 Готовый запрос Суммы по городам
На рис. 4.20 показан процесс конструирования запроса Суммы по городам. Он использует запрос Стоимость товаров и таблицу Клиенты.
Из таблицы Клиенты в запрос отправляются поля Страна и Город, а из запроса Стоимость товаров – поле Сумма. Строка Групповая операция образуется с помощью кнопки Итоги из группы Показать или скрыть на вкладке Конструктор (рис. 4.17), как и в предыдущем примере. Из групповых операций в поле Сумма выбирается операция Sum. Это же поле сортируется По убыванию, чтобы первыми в списке оказались города с наибольшей выручкой. Чтобы в списке остались города только из Украины в поле Страна, зададим Условие отбора: "Украина". Всё это видно на рис. 4.20. Запросив диалоговое окно Окно свойств, сменим подпись: вместо Sum-Сумма запишем Объём заказов.
Рис. 4.20 Конструирование запроса Суммы по городам
