Этот мастер способен обнаружить записи, не связанные с другими таблицами в БД. В нашем примере с его помощью можно найти студентов, которые не сдавали экзамены, т. е. для них нет связанных записей в таблице Успеваемость. Для получения таких результатов нужно выполнить следующие шаги (рис.31):
1 шаг: Выбор таблицы (Студенты)
2 шаг: Выбор подчиненной таблицы (Успеваемость)
3 шаг: Выбор внешнего ключа (№ _студенческого_билета.)
4 шаг: Выбор полей для отображения в запросе.
1 шаг
2 шаг
3 шаг
4 шаг
Рисунок 31. Процесс поиска записей, не имеющих подчиненных
Рисунок 32. Запрос, содержащий сведения о студентах не сдавших экзамены
Если часто приходится выполнять однотипный запрос на выборку или перекрестный запрос, изменяя при этом значение какого-либо атрибута в условии отбора, то можно использовать запрос с параметром. Запрос с параметром не требует вносить каждый раз изменения в бланк запроса, вместо этого он выводит пользователю приглашение для ввода условия отбора.
Запросы с параметром удобно использовать как основу для форм или отчетов. Например, можно вывести данные за определенное число, причем число задается пользователем как параметр запроса.
Для нашего примера мы можем создать запрос, который как параметр содержит оценку, полученную за экзамен (рис.33). Для поля, которое предлагается использовать как параметр в строке Условие отбора, нужно ввести текст приглашения для ввода условия отбора. Это приглашение будет выводиться при запуске запроса. Текст подсказки должен отличаться от имени поля, но может включать его.
В качестве параметров может быть использовано не одно, а несколько значений полей. В этом случае в строку Условие отбора вводится текст приглашения для каждого поля. Эти приглашения будут последовательно появляться при запуске запроса.
Рисунок 33. Формирование запроса с параметром
К корректирующим запросам относятся запросы на обновление, удаление и добавление записей из одной таблицы (или нескольких связанных таблиц) в конец другой таблицы (рис. 34).
Корректирующие запросы на удаление и обновление могут изменять как все записи, так и определенное их подмножество – это будет зависеть от условия отбора. При выполнении корректирующих запросов будут автоматически проверяться ограничения целостности. Если при описании таблицы было задано, что максимально возможным значением поля курс является значение 5, то при обновлении таблицы (в случае перевода студентов на следующий курс) при нарушении этого условия будет выдаваться предупреждающее сообщение, которое позволит отказаться от изменения таблиц БД.
Рисунок 34. Формирование корректирующих запросов
Для создания корректирующего запроса надо в режиме конструктора выбрать вид запроса: Обновление, Добавление, Создание таблицы.
Запрос на обновление. Для создания такого запроса нужно:
1. Выбрать таблицу или несколько таблиц, поля которых будут корректироваться.
2. Выбрать тип запроса Обновление. При этом изменится вид бланка запроса: в нем исчезнут строки Сортировка и Вывод на экран, но появится строка Обновление.
3. Включить в бланк запроса все поля, значения которых будут изменяться, а также те поля, которые нужны для задания условия отбора.
4. В строке Обновление соответствующего поля записать его новое значение или выражение, которое позволяет его получить. При создании выражения можно воспользоваться Построителем.
5. Если нужно, задать условия отбора как для обычного запроса на выборку.
Открытие запроса на обновление означает изменение значений в БД. Каждое открытие запроса – это обновление уже обновленных данных.
Запрос на удаление используется для удаления группы записей, отбираемых с помощью указанных условий отбора. В нашем примере мы можем сначала удалить студентов, которые закончили 5 курсов, а потом выполнить запрос на изменение для перевода остальных студентов на курс старше.
Рисунок 35. Формирование запроса на удаление
Запрос на добавление добавляет группу записей из одной или нескольких таблиц (источников) в конец другой таблицы (результатной). Для создания такого запроса надо:
1. Создать запрос, содержащий таблицы, записи из которых надо добавить в другую таблицу.
2. В режиме Конструктора выбрать тип запроса Добавление. На экране появится диалоговое окно Добавление.
3. В поле имя таблицы ввести имя таблицы, в которую надо добавить записи. Эта таблица может находиться как в этой же БД, так и в другой (MS FoxPro, Paradox, dBase, а так же БД MS SQL).
4. Переместить поля, которые должны входить в состав добавляемых записей, а так же те, которые используются для задания условия отбора.
5. В строку Добавление автоматически вводятся соответствующие имена исходной таблицы. Если в результатной таблице имена полей будут отличаться, то их нужно изменить.
Все поля результатной таблицы, которые имеют свойство Обязательное поле, или имеют заданные условия на значение, должны быть включены в состав добавляемых полей, иначе ни одна запись не будет добавлена по причине нарушения ограничений целостности.
Рисунок 36. Формирование запроса на добавление
Выводы
1. Запрос следует рассматривать как способ получения информации из базы данных.
2. Результатом работы запроса является виртуальная таблица, содержащая данные, интересующие пользователя.
3. Запрос можно формировать с помощью конструктора или использовать для их создания специальные программы – мастера.
4. Тип запроса пользователь выбирает сам в зависимости от характера действий, которые он намерен выполнить с помощью запроса.