Читайте также:
|
|
В общем случае для создания произвольного запроса используется универсальный язык SQL, о котором мы упоминали в п. 10.13.2. В предложении этого языка (SELECT - Выбрать) можно описать все четыре базовые операции: какие поля и откуда выбрать, какие вычислить, как их сгруппировать (просуммировать, пересчитать, найти среднее и т. п.) и при каких условиях включить записи в выборку. Однако в реальности пользоваться этим языком могут только специалисты (или очень грамотные пользователи). А для обычных людей разработчики придумали упрощенный механизм создания запроса, называемый QBE (Query By Example - Запрос по образцу). Вам предлагают бланк QBE - некую модель, заготовку запроса, и на этом бланке, пользуясь определенными соглашениями, вы сообщаете системе о своих планах: помечаете поля, вводите выражения, значения и т. п. На основании заполненного вами бланка система сама создает соответствующее предложение SELECT и сама выполняет его.
Идею создания запроса рассмотрим на простейшем примере:
составить общий список продуктов в БД TOVAR с указанием названия, общего количества и стоимости каждого продукта.
Сначала надо выполнить стандартные операции:
1) выбрать в окне базы данных вкладку Запрос (рис.110.3);
2) нажать кнопку Создать (рис. 10.3);
3) выбрать исходные таблицы для запроса (рис. 10.15).
! Обратите внимание, что запрос - это единственный объект в MS Access, для которого можно указать несколько исходных таблиц и (или) запросов.
Для нашего примера мы выбрали все три исходные таблицы - заказы, клиенты и продукты. На экране появляется окно документа <3апрос-выборка> в режиме конструктора (рис. 10.18).
В верхней части окна показана схема данных выбранных таблиц, с указанием связей и имен всех полей.
В нижней части окна размещается бланкQBE, который представляет собой макет некоей таблицы. Столбцы этой таблицы соответствуют полям создаваемого запроса, а число строк переменно и зависит от состояния флажков «Имена таблиц» и «Групповые операции» (на панели инструментов или в пункте Вид).
В строке Поле: указываются имена столбцов (полей) создаваемого запроса. Существующее имя можно выбрать из раскрывающегося списка (щелкнув мышью на поле) или просто перенести в ячейку Поле: методом «Drag-and-Drop» из таблицы в верхней части окна запроса. В первый и второй столбцы мы перенесли название продукта и количество. В ячейке Имя таблицы: (она появляется в бланке, если установлен флажок «Имена таблиц»), возникает имя таблицы, которая содержит выбранное поле.
Для вычисляемого поля в строке Поле:надо набрать формулу;
<Имя поля>:<Выражение>
Например:
Стоимость: [Количество]*[Цена]
Именно эту формулу мы набрали в третьем столбце (в строке Поле: - рис. 10-18).
Если вы собираетесь проводить в запросе групповые операции (т. е. объединять записи в группы), необходимо включить флажок «Групповые операции» - появляется строка Групповая операция:. После щелчка на любом поле этой строки появится список типов групповых операций: Группировка, Sum, Avg, Count, Выражение и др.
Для названия продукта 'мы выбрали тип Группировка - это означает, что записи с одинаковым названием продукта (например, конфеты «Южная ночь») будут объединены в одну запись. Для поля количество мы указали тип Sum - это означает, что значения поля количество в данной группе записей будут просуммированы. Тот же тип мы указали для поля Стоимость, однако система перенесла префикс Sum в выражение (см. рис. 10.18), а в строку Групповая операция: поместила другой тип - Выражение (разумеется, то же самое вы могли бы сделать и сами).
Примечание. Вероятно, вы уже догадались, что если в качестве типа групповой операции в столбце количество указать Avg (Average - Среднее) или, скажем. Count (Сосчитать), то вместо суммы в данной группе (т.е. в группе записей с одинаковым названием продукта) мы получим среднее значение количества или количество записей в этой группе.
В строке Сортировка: можно указать порядок вывода на экран записей (по возрастанию, по убыванию).
В поле Вывод на экран: находятся флажки, - установив или сбросив флажок, мы разрешим или запретим вывод данного столбца на экран-
Наконец, в строках Условие отбора: и или: можно указать условные или логические выражения,которые позволят нам отобрать для запроса только записи, удовлетворяющие заданному условию.
Если вы хотите увидеть предложение SQL, описывающее ваш запрос, выберите команду [Вид-Режим SQL] или щелкните на кнопке «Режим SQL» в панели инструментов-
Сформировав запрос, мы сохранили его в БД TOVAR под именем общий. Затем мы открыли его (т. е. выдали его окно в режиме таблицы) и получили результаты, показанные на рис. 10.19.
Обратите внимание на появление подписи Общ. колич. в столбце количество. Откуда она взялась?
Дело в том, что после формирования некоторых запросов приходится подправлять свойства того или иного столбца. В нашем примере, находясь в окне конструктора, мы последовательно выделили столбцы количество и СТОИМОСТЬ и, выбрав команду [Вид-Свойства...] (можно нажать кнопку на панели инструментов), исправили:
1)для столбца количество - подпись поля (Общ. колич.) и формат вывода числа: фиксированный, два знака после точки;
2) для столбца Стоимость - формат вывода числа.
Таким образом, в нашем примере мы рассмотрели все базовые операции формирования запроса, кроме четвертой - описания условий отбора.
Эту операцию выможете испытать, например, на такой задаче: включить в наш запрос только клиентов с кодами 40 и 60. Для этого:
1) откройтеокно запроса общий в режиме конструктора;
2) справа от, столбца СТОИМОСТЬ включите столбец КОД КЛИЕНТА;
3) в ячейке Групповая операция: укажитетип Условие;
4) выключите флажок «Вывод на экран» (и этот столбец не будет появляться на экране);
5) в ячейке Условие отбора: наберите выражение:
40 Or 60;
6) сохраните запрос под каким-нибудь другим именем и проверьте его работу.
! Как уже говорилось, MS Access довольно «либеральна» к нарушениям синтаксиса выражений. В данном случае возможны и такие, формулировки:
[Код клиента] = 40 Or [Код клиента]»
или
=40 Or =60
Наконец, попробуйте включить в запрос записи с определенной, датой или в диапазоне дат.
Обратите внимание на следующие соглашения, предусмотренные в Access.
1. Условные выражения, набранные в разных столбцах строки Условие отбора: (рис. 10.18), по умолчанию соединяются между собой знаком And. Например, если соседние столбцы имеют имена балде и КОД и вы набрали в них = 5 и >=18, то тем самым вы формулировали логическое выражение:
[Балл]=5Аnd [Код]>=18
1. Условные выражения, набранные в соседних строках одного и того же столбца, соединяются между собой знаком Оr. Например, если соседние столбец имеет имя балщ и вы набрали в строке Условие отбора: = 8, а в строке или: = 12, то тем самым вы сформулировали логическое выражение:
[Балл]=8 Or [Балл]=2.
Дата добавления: 2015-10-29; просмотров: 108 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Работа с таблицей | | | Запрос с параметром |