Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Uchebnoe_Posobie_Po_Access.doc
Скачиваний:
2
Добавлен:
23.09.2019
Размер:
710.14 Кб
Скачать

3.3.1.Конструирование запроса на выборку

Запрос на выборку - наиболее часто используемый тип запросов, он является основой для всех типов запросов. Запрос на выборку совмещает данные из одной или нескольких таблиц и иногда плюс результаты, которые по желанию пользователь может изменить. Запрос на выборку может быть однотабличным и многотабличным.

Задание 13: Получите данные помесячно об объеме продаж каждым агентом конкретных видов изделий различным клиентам по себестоимости и договорной цене.

Данную информацию можно получить с помощью запроса на выборку данных из таблиц Каталог, Агенты, Заказчики, Продажи за год.

  • Д ля создания запроса в окне БД на закладке Запросы нажмите кнопку Создать. Выберите режим конструктора:

Вы попадаете в режим конструирования запроса.

  1. Вначале выбираются таблицы, необходимые для конкретного запроса.

  • В окне Добавление таблицы выберите с помощью кнопки Добавить таблицы: «Агенты», «Каталог», «Заказчики», «Продажи за год». После добавления всех таблиц закройте это окно.

  1. Запрос по образцу в верхней части содержит схему данных, включающую используемые таблицы, и в нижней части – бланк запроса.

  • В нашем примере выбранные для отбора данных таблицы связаны между собой одно – многозначными связями (1:М), они устанавливаются в схеме данных автоматически.

  1. В бланке запроса указывается:

  • в строках Поле, Имя таблицы – имена полей, используемых в запросе, и из каких таблиц они взяты;

  • в строке Вывод на экран –отмечаются поля, которые должны быть включены в результирующую таблицу;

  • в строке Сортировка - можно выбрать порядок сортировки записей результата;

  • в строке Условие отбора и строке Или - могут быть заданы условия отбора записей.

  • Включите поле ФИО агента из таблицы «Агенты» в запрос. Для этого щелкните левой кнопкой мыши по полю ФИО агента в таблице «Агенты», поле автоматически включилось в запрос. Аналогично включите поля: ФИО заказчика из таблицы «Заказчики», Наименование товара из таблицы «Каталог», Месяц, Проданное количество из таблицы «Продажи за год».

  • В строке Вывод на экран отметьте, что выбранные поля будут включены в результирующую таблицу.

  • Условия отбора задавать не требуется, поскольку необходима информация по всем агентам, заказчикам и продукции за весь период времени.

В результате выполненных действий конструктор запроса будет выглядеть так:

В запросе над полями могут производиться вычисления. В нашем задании требуется получить информацию об объеме продаж по себестоимости, т.е. исходя из цен, указанных в каталоге, и по договорной стоимости. В исходных таблицах содержатся данные о ценах только за единицу продукции. Требуемые данные рассчитываются путем умножения соответствующих цен на количество проданной продукции. Таким образом, нам необходимо создать 2 вычисляемых поля, которые назовем Себестоимость и Общая договорная стоимость.

Ввод выражений в вычисляемые поля с помощью построителя выражений

  • В свободном поле введите заголовок поля: Себестоимость: Д алее нажмите на панели инструментов кнопку Построить. Открывается окно диалога Построителя выражений.

  • В ведите формулу для расчета себестоимости проданной продукции с помощью Построителя выражений:

Себестоимость:([Каталог]![Цена за единицу]*[Продажи за год]![Проданное количество]). Для этого:

В левом окне выберите Таблицы/ Каталог, в среднем окне выберите Цена за единицу и нажмите кнопку Вставить.

Поставьте знак умножения, который находится на панели инструментов Построителя выраженийэ

Выберите в левом окне таблицу Продажи за год, в среднем окне - Проданное количество, нажмите кнопку Вставить.

Закройте круглую скобку. Нажмите кнопку ОК.

Окно мастера построителя автоматически закроется, а выражение будет введено в поле, названное Себестоимость.

  • В следующем свободном поле введите выражение с помощью построителя выражений:

Общая договорная стоимость: ([Продажи за год]![Договорная цена за единицу]*[Продажи за год]![Проданное количество]) Данное выражение означает, что значения из поля Договорная цена за единицу таблицы “Продажи за год” умножаются на значения из поля Проданное количество этой же таблицы.

  • В запросе отметьте, что вычисляемые поля выводятся на экран.

  • Н ажмите кнопку Запуск запроса на панели инструментов и сравните полученный результат с таблицей:

  • Сохраните запрос под именем: «Запрос на выборку» и закройте его.

ФИО агента

ФИО заказчика

Наименование товара

Месяц

Проданное кол-во

Себестоимость

Общая договорная стоимость

Котов

Иванов

дискета 3,5 BASF

7

2

18

20

Котов

Иванчук

дискета 3,5 BASF

1

5

45

50

Великанов

Иванчук

дискета 3,5 BASF

6

1

9

10

Никулин

Петров

дискета 3,5 TDK

8

1

8

9

Никулин

Федоров

дискета 3,5 TDK

2

3

24

27

Никулин

Федоров

дискета 3,5 TDK

5

3

24

27

Котов

Иванов

картридж для принтера

4

4

1000

1120

Великанов

Иванов

картридж для принтера

3

2

500

600

Великанов

Иванчук

картридж для принтера

9

1

250

290

Котов

Петров

бумага для принтера

4

1

180

195

Котов

Федоров

бумага для принтера

10

2

360

380

Задание14: Осуществите выборку данных о работе конкретных агентов (агент задается пользователем) за интересующий период времени от начала года.

Данную операцию возможно осуществить с помощью параметрического запроса на выборку.

Параметрический запрос – это запрос, при выполнении которого запрашивается, по какому значению поля должна быть осуществлена выборка данных. Само значение поля вводится не в бланк запроса, а задается отдельно, в диалоге. Поэтому есть возможность при каждом запуске запроса на выполнение менять конкретное значение поля, выступающего в качестве критерия отбора информации. Для создания такого запроса нужно определить параметр запроса. Имя параметра запроса вводится непосредственно в условия отбора в квадратных скобках []. При выполнении запроса это имя появится в диалоговом окне. Введите значение параметра. Если в запрос вводится несколько параметров, то порядок их ввода через диалоговые окна определяется порядком расположения полей с параметрами в бланке запроса.

  • Запрос создается в режиме Конструктора. В диалоговом окне Добавление таблицы выберите вкладку запросы и добавьте вместо исходных таблиц Запрос на выборку.

  • Включите все поля таблицы Запрос на выборку в запрос.

  • В условие отбора поля ФИО агента введите параметр: [введите имя агента:]. А в условие отбора поля Месяц введите параметр:<=[введите конец учета:]. Между условиями отбора в разных полях одной строки выполняется логическая операция AND, т.е. требуется вывести данные по конкретному агенту и за заданный период времени. Если условия отбора указаны в разных строках, то будет выполнена логическая операция OR.

Необходимо запомнить, что имя параметра запроса не должно совпадать с наименованием самого поля. Например, в условие отбора поля Месяц нельзя вводить [Месяц].

  • З апустите запрос на выполнение. Задайте в диалоге: Имя агента - Никулин, Конец учета- 10.

  • Результатом выполнения данного запроса будет таблица, по структуре совпадающая с выходной таблицей по заданию 13, однако в нее будут включены записи только по агенту Никулину и с 1 по 10 месяцы включительно.

    ФИО агента

    ФИО заказчика

    Наименование товара

    Месяц

    Проданное количество

    Себестоимость

    Общая договорная стоимость

    Никулин

    Петров

    дискета 3,5 TDK

    8

    1

    8

    9

    Никулин

    Федоров

    дискета 3,5 TDK

    2

    3

    24

    27

    Никулин

    Федоров

    дискета 3,5 TDK

    5

    3

    24

    27

    Никулин

    Давидеко

    чернила

    2

    1

    90

    100

    Никулин

    Иванчук

    чернила

    5

    4

    360

    400

  • Сохраните запрос под именем «Параметрический запрос».

Задание15: Определите, сколько всего каждого изделия продал интересующий пользователя агент конкретным заказчикам от начала года до конца заданного периода. Рассчитайте прибыль агента.

Данное задание возможно выполнить с помощью запроса на группировку данных. Запрос, выполняющий вычисления над группой записей, называется запрос с групповой операцией.

В результате запроса вам необходимо получить сгруппированные данные об объемах и стоимости продаж за весь период (он определяется пользователем) по заданному заказчику. Источником данных для такого запроса может служить таблица, получаемая в результате выполнения параметрического запроса (см. задание 14). Прибыль агента равна разнице между общей договорной стоимостью и себестоимостью продукции.

  • Создайте запрос в режиме Конструктора. В диалоговом окне Добавления таблиц добавьте запрос «Параметрический запрос». Далее из таблицы «Параметрический запрос» перенесите все поля, кроме месяца в бланк запроса.

  • В свободное поле с помощью Построителя введите выражение:

Прибыль: ([Параметрический запрос]![Общая договорная стоимость]-[Параметрический запрос]![Себестоимость]).

  • Установите Вывод на экран всех полей.

  • Д алее на панели инструментов нажмите кнопку Группировка, в запросе появится еще одна строка Групповые операции:

  • В строке Групповые операции напротив полей введите:

Ф ИО агента

ФИО заказчика Группировка

Наименование товара

П роданное количество

Себестоимость Sum

Общая договорная стоимость

П рибыль - Выражение

  • Запустите запрос и сравните результат с итогом, полученным в задании 14, при этом задайте следующие значения параметров: имя агента - Никулин, конец учета: 10.

    ФИО агента

    ФИО заказчика

    Наименование товара

    Sum_Проданное количество

    Sum_Себестоимость

    Sum_Общая договорная стоимость

    Прибыль

    Никулин

    Давидеко

    чернила

    1

    90

    100

    10

    Никулин

    Иванчук

    чернила

    4

    360

    400

    40

    Никулин

    Федоров

    дискета 3,5 TDK

    6

    48

    54

    6

  • Сохраните запрос как «Запрос группировка данных»

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]