– запрос на добавление — добавляет группу записей из одной таблицы в другую таблицу.

запрос на удаление — позволяет удалить группу записей из одной или нескольких таблиц.

запрос на обновление — вносит изменения в группу записей одной или нескольких таблиц.

запрос на создание таблицы — позволяет создать таблицу на основе данных, содержащихся в других таблицах БД.

4. Запрос SQLзапрос, который может быть создан только с помощью SQL. Существует три типа таких запросов:

запрос-объединение — позволяет объединить поля из нескольких таблиц или запросов в один набор данных;

запрос к серверу — передает инструкции SQL удаленной базе данных;

управляющий запрос — создает, изменяет или удаляет таблицы или индексы базы данных Access.

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

7.3. Создание запроса

Прежде чем приступить к созданию запроса, следует продумать ответы на следующие вопросы:

– какая таблица или таблицы содержат нужную информацию,

– как связать эти таблицы,

– какой тип запроса использовать,

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

– каким должен быть порядок их сортировки,

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

– какое имя должен получить создаваемый запрос.

Как уже говорилось, запрос можно создать с помощью Мастера и с помощью Конструктора, однако есть некоторые особенности.

С помощью мастеров можно создать запросы следующих типов:

простой запрос;

перекрестный запрос;

поиск повторяющихся записей;

поиск записей, не имеющих подчиненных.

7.3.1. Создание запроса в режиме Конструктор

Больше возможностей для создания запроса предоставляет конструктор запросов. Если вы включили в запрос несколько таблиц, и между ними были установлены связи, то Access автоматически показывает их в верхней части окна запроса, рисуя линии объединения между связанными полями. Линию объединения можно создать самостоятельно, переместив ключевое поле главной таблицы на связываемое с ним поле подчиненной таблицы.

В нижней части бланка запроса нужно указать параметры создаваемого запроса. Каждый столбец бланка запроса соответствует одному из полей запроса, которое может быть полем из списка, а также вычисляемым или итоговым полем (см. рис.7.3).

Рис.7.3. Окно Конструктора запросов

Для каждого поля можно указать в соответствующих строках бланка порядок сортировки записей по этому полю; будет ли оно включено в динамический набор — результат запроса, а также можно определить условия отбора его значений. Внизу окна находится полоса прокрутки полей запроса. Бланк запроса содержит еще две строки, которые изначально обычно не видны на экране. Это строки Имя таблицы и Групповая операция. Чтобы отобразить их на экране, нужно выбрать в меню Вид соответствующие команды.

7.3.2. Включение полей в бланк запроса

В бланк запроса следует включать только те поля, данные из которых выводятся на просмотр, обновляются или используются для задания условий отбора, группировки и сортировки. Чтобы включить поле из списка полей таблицы или запроса в бланк запроса, достаточно дважды щелкнуть мышью по этому полю. Для добавления сразу нескольких полей нужно выделить в списке эти поля, держа нажатой клавишу Ctrl, и затем перенести всю выделенную группу с помощью мыши в бланк запроса. Если добавляемые поля в списке идут подряд, то для их выделения можно, держа нажатой клавишу Shift, щелкнуть мышью по первому полю, а затем по последнему полю.

7.3.3. Добавление вычисляемого поля

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

Примеры вычисляемых полей :

ФИО: [Фамилия] & " " & [Имя] & " " & [Отчество] – объединяет текстовые поля в одно;

Стоимость заказа: [Цена] * [Количество] – высчитывает стоимость;

Год рождения: Year([Дата рождения]) – вычисляет год рождения

Цена со скидкой: [Цена]*0,9 – формирует новую цену со скидкой.

Например, на рис. 7.4 представлен результат выполнения первого запроса ФИО. Этот запрос формирует единое текстовое поле, содержащее и имя, и фамилию и отчество. Для записи выражения мы воспользовались Построителем выражений. Для вызова Построителя нужно щелкнуть правой кнопкой мыши на ячейке Поле, куда необходимо поместить вычисляемое поле и выбрать пункт Построить. Для запуска запроса необходимо перейти в режим Таблицы или нажать на кнопку Выполнить в окне запросов.

Рис.7.4. Окно Построителя выражений

Для того, чтобы не сделать ошибок при наборе таких сложных выражений, лучше воспользуйтесь списком таблиц ниже (см. рис.7.4). Просто выберите соответствующие поля таблицы и поставьте между ними необходимые знаки по формуле. Результат выполнения запроса представлен на рис.7.5.

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

Для вывода результатов выполнения запроса нужно установить флажки в строке «Вывод на экран» бланка для тех полей, которые требуется отображать, и снять флажки для неотображаемых полей. Последние поля не будут включены в результирующий динамический набор.

7.4. Отбор записей в однотабличных запросах

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

7.4.1.Точное совпадение значений полей

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

Пример. Требуется извлечь из таблицы Студенты сведения о девушках группы 502 МО. В поле Группа бланка запроса нужно ввести в строке Условия отбора значение-шаблон «502 МО», а в поле Пол — значение-шаблон "ж" и отменить вывод на экран содержимого этих полей. Созданный бланк запроса будет иметь следующий вид (см. рис. 7.6).

Рис. 7.6. Запрос на выборку девушек 502 группы

Результат выполнения запроса в режиме таблице показан на рисунке 7.7.

Рис. 7.7. Результат запроса

7.4.2. Шаблоны общего вида. Оператор Like

Часто условием отбора записей является не полное, а частичное совпадение значений в указанных полях исходной таблицы, например, если значения в текстовом поле содержат заданные символы. В этом случае при записи в строке условий соответствующего шаблона используются уже известные спецсимволы ?, # и *. Условие отбора имеет следующий вид: Like <шаблон>. Как правило, вводить оператор Like не нужно. В большинстве случаев Access самостоятельно добавит его после завершения ввода строки, содержащей любой из вышеприведенных символов шаблона.

Таблица 7.1. Примеры условий с шаблонами

Условие Комментарий
Like "п*в" любой текст, начинающийся с буквы «п» и заканчивающийся буквой «в»
Like ”*запрос*" любой текст, содержащий слово «запрос»;
Like "1?.05.72" любая дата между 10 и 19 мая 72 года;
Like "*.01.98" любая дата в январе 98 года;
Like "*.03.*" любая дата в марте
Like "*.*.98" любая дата в 98 году
Like "*.0[4-6].00" любая дата во втором квартале 2000 года.

Например, чтобы получить информацию о студентах, фамилия которых начинается с буквы Г, нужно ввести в поле Фамилия два символа: "Г" и "*". После нажатия клавиши Enter Access заключит введенные символы в кавычки и добавит слева оператор Like. В итоге условие отбора нужных записей примет следующий вид: Like "Г* (см. рис.7.8).