Запросы позволяют выбирать необходимые данные из одной или нескольких взаимосвязанных таблиц , производить необходимые вычисления и получать результат в виде таблицы . При помощи запросов можно производить обновление записей в таблицах , добавление и удаление записей , группировать записи с одинаковыми значениями , выполнять над ними групповые операции, выполнять различные вычисления. Последовательное выполнение ряда запросов позволяет решать достаточно сложные задачи , не прибегая к программированию .
Запрос может быть сформулирован в среде MS Access на двух языках
ü QBE (Query By Example) - язык запросов по примеру (образцу), предназначенный для пользователей - не программистов.
ü SQL (Structured Query Language) - структурированный язык запросов, используемый пользователями - программистами в программах приложений на VBA (Visual Basic for Application). Язык SQL имеет большие возможности по сравнению с языком запросов QBE. Это означает, что все, что можно сформулировать на языке QBE, можно сформулировать и на SQL, но не наоборот. Например, язык QBE не позволяет создавать и редактировать структуру таблицы и пр
В процессе создания запроса на одном языке запросов ACCESS автоматически формулирует запрос и на другом (если это возможно). В результате выполнения большинства запросов создаются временные, динамические таблицы, которые существуют до закрытия запроса.
Виды Запросов:
ü Запрос на Выборку--выбирает данные из взаимосвязанных таблиц и других запросов. Результатом является таблица , которая существует до закрытия запроса.
ü Запрос на Создание Таблицы-- основан на запросе на выборку , но результат сохраняется в таблице
ü Запросы на Обновление , Добавление , Удаление--Запросы действия , в результате которых изменяются данные в таблице.
ü Перекрестный Запрос – предназначен для группирования данных и представления их в компактном виде, удобен для анализа.
Разработка Запроса производится в режиме Конструктора.Для создания запроса выделите объектЗапросы , нажмите кнопку Создать и выберите режим Конструктора. Укажите используемые в запросе таблицу или таблицы (как при работе со схемой данных).
Верхнее окно Запроса в режиме Конструктора отображает схему данных (можно при необходимости изменять связи между таблицами) , а нижнее Бланк Запроса По образцу. Каждый столбец бланка относится к одному полю , с которым нужно работать в Запросе. Поля могут использоваться для включения их в результат выполнения Запроса , для задания сортировки, а также для создания условий отбора записей
При заполнении бланка запросов по образцу необходимо :
ü ·В строку Поле включить имена полей , используемых в Запросе.
· Двойной щелчок мыши на имени поля в таблице, вынесенной в верхнюю часть бланка. При этом имя таблицы автоматически заносится в соответствующую строку внизу бланка
· выделить имя поля в таблице в верхней части бланка, перетащить мышью в нужный столбец бланка в строку Поле.
· выбрать нужное поле из списка в строке Поле внизу бланка запроса
ü Для включения всех полей таблицы можно перетащить символ *.
ü ·В строке Вывод на экран отметить поля , которые должны быть включены в результирующую таблицу (Можно для поля задать условие отбора , но значение поля не отображать на экране)
ü ·В строке Условие отбора задать условия отбора записей (например >100 ,Иванов , Like С*, between 10 and 20)
Выполняя запрос, получаем ответ в виде так называемого динамического набора данных, который не сохраняется при сохранении запроса, однако он может быть использован как источник данных (наравне с таблицами) для построения другого запроса. Динамический набор данных можно сохранить, например в таблице, если выполнить запрос на создание таблицы или запрос на добавление данных, а также использовать в формах и отчетах
Для просмотра результата запроса необходимо воспользоваться кнопкой Представление Таблицы на панели или пунктом меню Вид – Режим Таблицы.
Для просмотра запроса в режиме SQL необходимо воспользоваться пунктом меню Вид – Режим SQL
Примеры условий отбора:
>10
больше 10
< >2
не равно 2
Between 5 And 10
больше 5, но меньше 10
Date( )
за текущую дату
< Date -30
месяц назад
Between Date( ) And Date( ) - 90
в течении последних 90 дней
Between Date( ) And DateAdd(‘’м’’;-3;Date( ))
в течении последних трех месяцев
Between 01.01.97 And 31.12.97
За 1997 год
Иванов (‘‘Иванов’’)
только для Иванова
И* (Like ‘’И*’’)
все клиенты фамилия , которых начинается на И
Like “[!ъ]*”
Строка не должна начинаться со знака ъ
[Введите Фамилию Сотрудника]
Просит задать фамилию
Between [Введите Дату1] And [ Введите Дату2]
возможность самому задавать временной интервал
Between 01.01.00 & [Год] And 31.12.00 & [Год]
За введенный с клавиатуры год
In(1;10;50;100)
1 или 10 или 50 или 100
In(“Минск”; “Киев”)
Минск или Киев
Null.
(пусто)- не введено никакого значения
Not IsNull
(не пусто), т. е. значение введено
Условие отбора может быть записано в одном столбце бланка или в нескольких. В последнем случае запрос будет булевским с использованием операции And. Чтобы построить булевский запрос с использованием операции Or, необходимо воспользоваться строкой или бланка запроса. По такому же принципу можно создать булевский запрос с использованием обеих операций
Запросы на выборкупозволяют выбирать данные из одной или нескольких взаимосвязанных таблицв соответствии с указанными условиями отбора. На основе запроса на выборку строятся все остальные запросы.
В запросах, в отличии от таблиц над полями могут производится вычисления . При этом могут использоваться как арифметические выражения так и встроенные функции MS Access . Вычисляемое поле , включенное в запрос позволяет получить новое поле с результатами вычислений только в таблице запроса и не создает полей в таблицах БД.
Сформировать выражение можно при помощи Построителя выражений ,который запускается из контекстного меню , связанного со строкой Условие отбора на бланке или при помощи соответствующей кнопке на панели инструментов. При составлении выражений имена полей заключаются в квадратные скобки , символьные константы - в кавычки , имена объектов БД отделяются от полей "!"
Открыв окно построителя, в его поле ввода можно писать выражения с помощью клавиатуры, а можно условие формировать с помощью кнопок построителя, выбирая операнды из списков.
Результат выполнения запроса
Параметрические Запросы. Конкретное значение поля в условии отбора может вводится непосредственно в бланк Запроса или задаваться пользователем при выполнении Запросы в диалоговом окне. Например используя таблицу КЛИЕНТЫ можно создать параметрический запрос , позволяющий просматривать только клиентов то из одного города , то из другого города. Для этого в строку Условие отбора ввести [Назовите город] для поля Город. Результат можно просмотреть в режиме таблицы .
В данном примере введено условие , позволяющее пользователю самому вводить фамилию клиента и дату заказа. При выполнении запроса сначала выполняется условие записанное в левом столбце ([Введите дату]).
Итоговые запросы позволяют выполнять вычисления над группами записей. Группирование данных позволяет получать статистическую, итоговую и др. информацию по отдельным группам данных. Группировать данные можно по одному или нескольким полям. Пример выполнения итогового запроса, с группировкой по клиенту
Тот же запрос в режиме Конструктора
Для создания запроса необходимо
ü Выбрать все таблицы, так как они участвуют в создании вычисляемого поля.
ü Из таблицы Товары включить в запрос поле Название
ü Создать вычисляемое поле Стоимость
ü Для отображения строки Групповая операция воспользоваться командой Вид - Групповые операции
ü Для поля Стоимость выбрать групповую операцию Sum, а для поля Наименование —. Группировка
Внимание! Группировка - означает, что данное поле является полем группирования (устанавливается по умолчанию)
Sum - суммирование всех значений поля по группе данных
Avg - среднее значение поля по группе
Min или Max - минимальное или максимальное значение поля в группе
Count - количество записей, входящих в группу
StDev -среднеквадратическое отклонение
Var - дисперсия
First или Last - первое или последнее значение поля в группе
Выражение - позволяет ввести выражение вместо имени поля в строке Поле бланка запроса
Условие - показывает, что это поле используется только для задания условия отбора данных в запросе . Это поле не отображается в динамическом наборе данных.
Если группировка производится по нескольким полям , то слово Группировка должно быть в каждом из них
Совет! Для подсчета общей стоимости используется групповая операция Sum, а для подсчета количества заказов –Count.
Перекрестные Запросы предназначены для группирования данных и представления их в компактном виде. Позволяют представить большой объем данных в виде удобном для восприятия, анализа, сравнения. Могут использоваться в качестве базового при создании отчета.
Внимание! Перекрестный запрос может содержать несколько полей с заголовками строк, но только одно поле с заголовками столбцов или значение
Пример запрос, показывающего для каждого товара в каком объеме, каким клиентом и на какую сумму он был закуплен с разбивкой по товарам
Тот же запрос в режиме Конструктора
Создание перекрестного запроса
ü создать запрос на выборку данных на основе таблицы Товары и Клиенты, Продажи, отобразив в динамическом наборе поля: Фамилия и Название
ü Создать два вычисляемых поля Стоимость.
ü преобразовать запрос на выборку в перекрестный запрос при помощи пункта меню Запрос - ПерекрестныйиликнопкиТип запроса напанели Инструментов
ü выбрать Sumв строке Групповая операция для вычисляемых полей
ü заполнить строку перекрестная таблица.
Для отображения в поле Стоимость символа денежной единицы
ü Выделите поле Стоимость
ü Воспользуйтесь командой Свойство из Контекстного меню
ü В стоке формат установите Денежный
Для сохранения результата запроса используется Запрос На Создание Таблицы. Он основан на Запросе на выборку , но результат сохраняется в таблице. Запрос на выборку можно преобразовать в запрос на создание таблицы при помощи пункта меню Запрос—Создание Таблицы.