Запросы с произвольной выборкой




 

Пусть необходимо получать информацию о начисленных суммах заказа по различным фирмам. Для решения этой задачи можно использовать два пути:

· сконструировать запрос отдельно для каждой фирмы. Это не очень эффективно, т.к. количество фирм меняется, что заставляет постоянно добавлять новые запросы.

· создать один запрос на выборку, задавая условия поиска в специально созданной форме (запрос с произвольной выборкой).

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

Запрос с произвольной выборкой будет состоять из двух частей: формы для задания критериев выборки и измененного запроса Сумма заказа 2.

1. Создадим пустую Форму в режиме конструктора. Разместим на новой форме необходимые компоненты:

· Перетащим на форму элемент Поле, изменим надпись перед Полем: удалим условное название «Поле» и введем комментарий «Введите название фирмы».

· Выберем элемент Кнопка и перетащим его на форму.

В открывшемся окне Создание кнопок выберем категорию выполнить запрос

Нажмем кнопку Далее и выберем запрос, который откроется при нажатии на эту кнопку – Сумма заказа 2

Далее выберем оформление для кнопки (Текст или рисунок).

В результате выполненных действий форма для запроса примет вид

 

Остается закрыть Конструктор и дать новой форме имя Форма запроса

 

2. В связи с тем, что условия для выборки будут задавать из формы, необходимо преобразовать Запрос Сумма заказа 2.

Для этого откроем запрос в режиме конструктора. В поле Наименование. Фирма (строку Условие отбора)ввести выражение: Like [Forms]![Форма запроса1]![Поле0]

Выражение рекомендуется вводить с помощью построителя выражений, выбирая операцию Like, потом нужную форму в списке, и требуемый элемент (Поле) из имеющихся и нажимая кнопку Вставить. Закроем запрос, сохранив изменения.

Откроем закладку Формы и откроем Форму запроса1. Введем условие для отбора записей

Результат выполнения запроса

Корректировка данных средствами запроса

1. Использование групповых операций в запросах

Групповые операции позволяют выделить группы записей с одинаковыми значениями в указанных полях и использовать для других полей этих групп определенную статистическую функцию.

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

1. Создадим запрос на выборку для таблицы Заказ-Товар. Из списка таблицы Заказ-Товар перетащим в бланк запроса поля Код товара, по которому должна производиться группировка и Количество товара, будет вычисляться функция Sum для подсчета количества товара.

2. Правой кнопкой в области полей запроса добавим графу Итоги

3. Нажмем на кнопку Групповые операции. Заменим слово Группировка в столбце Кол-во товара на функцию Sum

 

Сохранить запрос с именем Кол-во товара.

2. Конструирование запроса на создание таблицы

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

Сформируем запрос на создание таблицы, используя запрос Кол-во товара. Для этого выбираем режим К онструктор. Преобразуем этот запрос в запрос на создание таблицы, выбирается пункт меню Запрос ~ Создание таблицы. В окне Создания таблицы введем имя создаваемой таблицы – Кол-во товара в заказе. Закроем запрос.

Нажмем на запрос «Количество товара», согласимся с изменениями, и получим новую таблицу

3. Конструирование запроса на обновление

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

1. Добавим в структуру таблиц еще одну – таблица Склад.

Наименование полей Тип Примечание
Код товара Числовой Ключевое поле
Получено Числовой  
Остаток Числовой  

 

Настроим связи, сделаем подстановку нужных полей. Заполнить таблицу записями для всех товаров. При этом значение поля Получено должно быть больше значения поля Остаток и оба должны быть положительными.

2. Создадим запрос на обновление на примере обновления поля Остаток в таблице Склад. Остаток высчитывается по формуле:

Получено на складе – Кол-во товара в заказе.

Количество товара в заказе получено в запросе на выборку Кол-во товара с использованием функции Sum.

!Запрос на обновление непосредственно на основе запроса построить нельзя!

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

Для формирования запроса на обновление сначала создается запрос на выборку на основе трех таблиц – обновляемой таблицы Склад, таблицы Товар и таблицы Кол-во товара в заказе. Для преобразования запроса на выборку в запрос на обновление выбирается пункт меню Запрос ~ Обновление.

Перетащить поле Остаток из списка таблицы Склад. В строке Обновление ввести формулу (можно с помощью построителя выражений):

[Склад]![Получено]-[Кол-во товара в заказе]![Sum-Количество]

Сохранить запрос под именем Обновление Склада.

Выполненные нами запросы на создание и обновление должны работать по следующей схеме: сначала вносятся данные в таблицы Заказ_Фирма и Заказ_Товар, т.е. добавляются товары в заказ. Следовательно, их необходимо со склада списать. Откроем таблицу Склад, посмотрим на столбец Остаток, запомним значения. Для списания товара вызываем запрос на создание таблицы Количество товара, если запрос уже выполнялся и таблица уже существует, подтвердим её замену. После этого запускаем запрос Обновление склада, при этом СУБД, учитывая данные только что измененные данные в таблице Количество товара, изменит значения остатков в таблице Склад.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2021-12-14 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: