Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Access 2007 А4 (3).doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
11.49 Mб
Скачать

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 Конструирование запроса Суммы по городам