Добавил:
Меня зовут Катунин Виктор, на данный момент являюсь абитуриентом в СГЭУ, пытаюсь рассортировать все файлы СГЭУ, преобразовать, улучшить и добавить что-то от себя Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика / Методички / Методичка Патлань_Киселева.doc
Скачиваний:
13
Добавлен:
02.08.2023
Размер:
971.26 Кб
Скачать

7.3. Назначение и особенности проектирования запросов разных типов

В Access есть несколько типов запросов. Нужный тип запроса выбирается из раскрывающегося списка на панели инструментов :

  • Запрос на выборку является наиболее часто используемым типом запроса. Запросы этого типа возвращают данные из одной или нескольких таблиц и отображают их в виде таблицы, записи в которой можно обновлять. Запросы на выборку можно также использовать для группировки записей и вычисления сумм, средних значений, подсчета записей и нахождения других типов итоговых значений. Запрос на выборку может содержать и вычисляемые поля. Запросы такого типа и были описаны выше. Частным случаем запроса на выборку может служить "запрос без подчинённых" - поиск записей, не имеющих подчинённых записей в других таблицах (например, можно найти клиентов, не сделавших ни одного заказа). Для создания такого запроса используется "Мастер запросов" – команда ЗАПРОС/СОЗДАТЬ/ЗАПИСИ БЕЗ ПОДЧИНЁННЫХ

  • Запрос с параметрами — это запрос, при выполнении отображающий в собственном диалоговом окне приглашение ввести данные, например условие для возвращения записей или значение, которое требуется вставить в поле. Текст приглашения при проектировании запроса заключается в квадратные скобки. Например, запрос, бланк которого приведён на рис.7.8, при запуске выводит диалоговое окно, в которое можно ввести название требуемого товара, и затем будут возвращены записи только для этого товара (см. рис.7.9 и 7.10).

Рис. 7.8. Пример бланка запроса с параметрами

Рис. 7.9. Диалоговое окно запроса с параметрами

Рис. 7.10. Пример выполненного запроса с параметрами

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

  • Перекрестные запросы используют для расчетов и представления данных в структуре, облегчающей их анализ. Перекрестный запрос подсчитывает сумму, среднее, число значений или выполняет другие статистические расчеты, после чего результаты группируются в виде таблицы по двум наборам данных, один из которых определяет заголовки столбцов, а другой заголовки строк. Таким образом, структура перекрёстного запроса напоминает структуру электронной таблицы. Если в перекрёстный запрос нужно включить поля из нескольких таблиц и/или запросов, сначала создаётся запрос на выборку, содержащий все необходимые поля, а затем в мастере проектируется собственно перекрёстный запрос. Например, следует сравнить спрос на продукцию различных фирм. Предварительно создаётся запрос на выборку с полями "Фирма-производитель", "Наименование" и "Продано". Затем задаётся команда ЗАПРОС/СОЗДАТЬ/ПЕРЕКРЁСТНЫЙ ЗАПРОС, выбирается исходный запрос и продолжается проектирование запроса в мастере создания перекрёстного запроса. На рис. 7.11 показано окно мастера, а именно, тот шаг, на котором выбираются поля, которые будут служить заголовками строк (здесь это поле "Фирма-производитель").

Рис. 7.11. Выбор полей – заголовков строк в перекрёстном запросе

На следующем шаге выбирается поле, значения которого будут использованы для заголовков столбцов (здесь – поле "Наименование"). Далее выбирается функция, вычисляющая значение ячейки на пересечении строк и столбцов (у нас – это сумма). Результат работы перекрёстного запроса показан на рис. 7.12.

Рис. 7.12. Результат выполнения перекрёстного запроса

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

  1. Запрос на удаление удаляет группу записей из одной или нескольких таблиц. Например, запрос на удаление позволяет удалить записи о товарах, поставки которых прекращены или на которые нет заказов. С помощью запроса на удаление можно удалять только всю запись, а не отдельные поля внутри нее. При помощи запроса на удаление можно удалить записи из одной таблицы, из нескольких таблиц с отношением "один-к-одному" или из нескольких таблиц с отношением "один-ко-многим", если разрешено каскадное удаление. Например, можно удалить всех клиентов из Тольятти и сделанные ими заказы. Однако, если для добавления условия требуется включить таблицу на стороне "многие" вместе с таблицей на стороне "один", запрос необходимо выполнить дважды, так как один запрос не позволяет удалить записи из главной таблицы и из связанных таблиц одновременно. Для проектирования запроса на удаление нужно в конструкторе запросов задать команду ЗАПРОС/УДАЛЕНИЕ. В бланк запроса на удаление записей должна быть включена таблица, из которой удаляются записи (нужно просто перетащить звездочку * из списка полей этой таблицы в бланк запроса). В бланк запроса должны быть включены и поля, которые определяют условия отбора. В бланке запроса в ячейки строки "Удаление" автоматически вводятся слова "Из" или "Условие" соответственно для таблицы, из которой удаляются записи, и поля, для которого задаются условия отбора. На рис. 7.13 показан бланк запроса на удаление, с помощью которого удаляются записи о заказах неплатёжеспособных клиентов – у них на счету меньше 1000.

Рис. 7.13. Запрос на удаление в режиме конструктора

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

Рис. 7.14. Запрос на обновление в режиме конструктора

  1. Запрос на добавление добавляет группу записей из одной или нескольких таблиц в конец одной или нескольких таблиц. Например, появилось несколько новых клиентов, а также база данных, содержащая сведения о них. Чтобы не вводить все данные вручную, их можно добавить в таблицу "КЛИЕНТЫ".

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

NB! Если таблицы, участвующие в формировании запроса, не соединены прямо или косвенно друг с другом, то для Microsoft Access остается неизвестным, какие записи связаны с какими, и на экране отображаются все комбинации записей между двумя таблицами ("полное объединение" или "декартово произведение"). Таким образом, если обе таблица содержат по 10 записей, то в результате запроса будет 100 записей (10*10). Время выполнения запроса увеличится, а полученные в конечном счете результаты будут неверны. В этом случае рекомендуется ввести в бланк запроса одну или несколько дополнительных таблиц или запросов, которые будут служить в качестве моста между таблицами, данные которых должны быть использованы. Например, при проектировании запроса, использующего данные только таблиц "ПОСТАВЩИКИ" и ЗАКАЗЫ И ПРОДАЖИ" (в описываемой БД они не связаны между собой), можно ввести в качестве моста таблицу "ТОВАРЫ", связанную с обеими нужными таблицами. Поля из последней таблицы в запросе не будут анализироваться, но выборка из таблиц "ПОСТАВЩИКИ" и ЗАКАЗЫ И ПРОДАЖИ" будет выполняться вполне корректно.