Запрос с параметром
Запрос с параметром. Специальный «интерактивный» тип запроса: прежде чем запрос будет выполнен, на экран выводится диалоговое окно с приглашением ввести один или ряд параметров, например условие отбора записей по определенному полю. Запрос, таким образом, допускает некоторую модификацию при каждом своем запуске, что очень удобно, например при генерировании месячных или квартальных отчетов о доходах предприятия. Запросы с параметрами могут быть отнесены к отдельному типу условно, так как ввод параметра можно организовать для запросов на выборку, запросов на изменение и перекрестных запросов.
В формулах, используемых для нахождения данных вычисляемых полей, могут присутствовать не только значения существующих или других вычисляемых полей или некоторые константы, но и переменные величины, которые можно ввести в процессе выполнения запроса с помощью специального диалогового окна. Такие запросы, как уже упоминалось выше, называются параметрическими.
Рассмотрим создание параметрического запроса на простом примере. В таблице Товары для каждого из товаров указана его фиксированная цена (поле ЦенаПродажи). Предположим, что в рамках предпраздничных акций на все товары объявляется некоторая скидка, величина которой может изменяться. Чтобы вычислить новые цены на товары с учетом той или иной скидки, можно создать запрос с параметром, в роли которого и будет выступать величина скидки.
Бланк запроса приведен на рис.1. Как видно, в бланке запроса создается новое вычисляемое поле, Цена со скидкой, в ячейку Поле которого вводится следующая формула: Цена со скидкой: [ЦенаПродажи]*(1-[Скидка в процентах]/100).
|
Рис. 1. Бланк запроса с одним параметром
При выполнении запроса программа Access открывает диалоговое окно Введите значение параметра, куда необходимо ввести нужную для вычислений величину (рис.2).
Рис. 2. Диалоговое окно Введите значение параметра
После ввода параметра и щелчка на кнопке ОК значения вычисляемого поля рассчитываются с учетом указанной величины скидки. Результирующая таблица показана на рис.3.
Рис. 3. Результаты выполнения запроса
Параметры могут использоваться также для ввода критерия отбора записей. Такой подход целесообразен, если заранее предполагается, что запрос будет запускаться неоднократно, но одно или несколько условий придется изменять. Например, в запросе к таблице Клиенты, отображающем список всех клиентов с указанием их данных, можно запрашивать наименование фирмы клиента. Тогда при каждом запуске запроса название фирмы, введенное пользователем в диалоговое окно Введите значение параметра, будет преобразовано в условие отбора, и в результирующую таблицу программа Access включит только те записи, которые соответствуют этому критерию. На рис.4 приведен бланк и диалоговое окно ввода такого запроса, в котором для поля Фирма в строке Условие отбора вместо конкретного значения указана подсказка для ввода параметра – [ Введите название фирмы ].
Рис. 4. Запрос с параметром, где параметром является условие отбора для поля Фирма
Перекрестные запросы
Более сложная категория запросов на выборку, в которых также используется группировка записей, но уже "двухмерная" (по строкам и по столбцам), — это перекрестные запросы. Они группируются по двум наборам данных: первый выводится в столбце слева (это заголовки строк, например наименование товара), а второй – в верхней строке (заголовки столбцов, например порядковые номера кварталов). Итоговая таблица может, таким образом, отображать поквартальные итоги продаж определенных товаров.
|
Для создания перекрестного запроса требуется как минимум три элемента: поле для определения заголовков строк, поле, определяющее заголовки столбцов, и поле для выбора значений, с которыми будут непосредственно производиться вычисления.
В программе Access предусмотрен специальный мастер, с помощью которого можно построить перекрестный запрос.
Естественно, при создании перекрестного запроса под руководством мастера приходится мириться с некоторыми ограничениями. Во-первых, мастер позволяет работать с полями только одной таблицы или запроса, поэтому, чтобы включить в перекрестный запрос данные из нескольких таблиц, необходимо составить вспомогательный запрос и использовать его в качестве источника записей. Во-вторых, в процессе создания запроса с помощью мастера нет возможности указать дополнительные условия отбора, поэтому созданный мастером запрос необходимо дорабатывать уже в режиме конструктора. Кроме того, мастер не позволяет изменить заголовки столбцов.
Чтобы построить перекрестный запрос под руководством мастера, выполните следующее.
1. Щелкните на кнопке Мастер запросов в группе Другие (вкладка Создание). На экране появится диалоговое окно Новый запрос (рис. 5).
|
2. Выберите из списка доступных методов создания нового запроса элемент Перекрестный запрос и щелкните на кнопке ОК.
Рис. 5. Диалоговое окно Новый запрос
3. В первом диалоговом окне мастера укажите источник данных для перекрестного запроса. Для этого выберите элемент Запросы в группе опций Показать, а затем из расположенного выше списка — запрос СуммаПродажи (рис. 6). Щелкните на кнопке Далее.
Рис. 6. Диалоговое окно выбора источника данных для перекрестного запроса
4. Выберите из списка Доступные поля те поля, значения которых будут использоваться как заголовки строк. Чтобы сделать это, щелкните на имени нужного поля, а затем на кнопке со значком ">" (или просто дважды щелкните на имени поля). Выделенное поле переместится в список Выбранные поля. В данном случае в список Выбранные поля следует перенести поле КодТ (рис. 7). Щелкните на кнопке Далее.
5. Выберите поле, значения которого будут использованы в качестве заголовков столбцов. Таким полем в данном примере является поле ДатаОформления (рис. 8). Выберите данное поле и щелкните на кнопке Далее.
Рис. 7.
6. Выберите интервал группировки дат для столбцов, например Квартал.
Рис. 8.
7. Выберите итоговую операцию, которую необходимо применить для обработки данных поля Всего. Для данного примера такой функцией будет суммирование (Sum). Если это необходимо, оставьте установленным флажок Да, чтобы вычислить итоговое значение для каждой строки (рис. 9). Затем щелкните на кнопке Далее.
8. Заключительное окно мастера предлагает указать имя запроса. Введите нужный заголовок (например, Квартальные объемы продаж за 2008) и щелкните на кнопке Готово, чтобы просмотреть результаты выполнения перекрестного запроса (рис. 10).
Рис. 9.
Рис. 10. Результат выполнения перекрестного запроса
Модифицирующие запросы
До настоящего момента любые правки в таблицы вносились в режиме просмотра таблицы. Однако понятно, что при обслуживании реальных баз данных должны быть предусмотрены иные механизмы, автоматизирующие модификацию большого числа записей в таблицах. Таким механизмом в Microsoft Access 2007 являются модифицирующие запросы.
Существует четыре типа модифицирующих запросов:
• Запрос на создания таблицы;
• Запрос на удаление;
• Запрос на добавление записей;
• Запрос на обновление.
Основой для любого запроса на изменение служит обычный запрос на выборку, определяющий ту группу записей, над которыми будут выполнены некоторые действия. Поэтому при создании запроса на изменение сначала необходимо построить (в режиме конструктора или с помощью мастера) запрос на выборку, а затем изменить в режиме конструктора его тип. Сделать это можно, выбрав подходящий тип запроса с помощью команд группы Тип запроса на ленте (вкладка Конструктор).
Чтобы обезопасить в равной степени и себя, и непосредственно данные, которые подлежат изменению, при работе с запросами на изменение не забывайте делать резервные копии исходных таблиц.
Чтобы предотвратить потерю важных данных, перед запуском любого запроса такого типа воспользуйтесь командой Режим таблицы (одна из команд кнопки Вид группы Результаты), чтобы просмотреть те изменения, которые ожидают таблицу в результате выполнения запроса.