Создание баз данных Access: Учебное пособие, страница 12

   При создании нового запроса в окне Конструктора раскрывается диалоговое окно Добавление таблицы с вкладками, позволяющими выбрать объекты, содер­жащие требуемые данные. Для добавления в запрос каждого из объектов нужно выделить его имя и нажать кнопку Добавить. После появления всех необходимых объектов в верхней части окна Конструктора окно Добавление таблицы нужно закрыть. При необходимости это окно вновь можно вызвать, щелкнув правой кнопкой мыши в верхней части окна и выбрав из контекстного меню команду До­бавить таблицу.

   Если запрос строится на нескольких таблицах или запросах, то они должны быть связаны.

   Поля добавляются в бланк запроса перетаскиванием их мышью из списка полей или двойным щелчком мыши. Затем определяются условия отбора, порядок сортировки, создаются вычисляемые поля, устанавливаются необходимые флаж­ки. Созданный запрос необходимо сохранить, определив его имя. Результат вы­полнения запроса можно просмотреть в режиме Таблицы.

   Условие отбора позволяет определить, какие именно записи следует ото­брать с помощью запроса. Обычно условие отбора представляет собой конкретное значение того или иного поля. Это значение указывается в строке Условие отбора бланка запроса. Символьные значения заключаются в кавычки, Access сам добав­ляет кавычки к введенному тексту. Календарные даты и время заключаются в сим­волы #. При определении условий отбора можно использовать операторы сравне­ния =, <, >, <=, >=, о и логические операторы OR и AND. Значения, введенные в разных строчках бланка запроса, рассматриваются как операнды операции ИЛИ. Значения, введенные в разных столбцах, рассматриваются как операнды логиче­ского И.

   При определении условия отбора необходимо использовать те значения по­ля, которые хранятся в таблице, но не подстановочные значения. Пусть, например, необходимо отобрать записи о покупках, сделанных клиентом РГРТА, и в качестве источника данных используется таблица ПОКУПКИ. Тогда в условии отбора для поля КодКлиента необходимо указать код РГРТА, т. е. цифру 4. Если этот же запрос создать на двух таблицах - ПОКУПКИ и КЛИЕНТЫ, то в качестве условия отбора для поля ИмяКлиента надо ввести слово РГРТА.

   В запрос можно добавлять вычисляемые поля, содержимое которых являет­ся результатом арифметических операций над определенными полями таблиц. Для создания вычисляемого поля надо в свободном столбце бланка запроса в строке Поле ввести имена полей, являющихся операндами, и указать оператор. Здесь же нужно задать имя вычисляемого поля. Например, можно составить запрос, форми­рующий список покупателей, названий купленных ими книг, количество куплен­ных экземпляров каждой из книг, цену книги и стоимость каждой покупки. В бланке такого запроса надо указать поля КодКлиента (таблица ПОКУПКИ), Код-Книги (таблица ПОКУПКИ), Количество (таблица ПОКУПКИ), ЦенаПокупки (таблица КНИГИ) и вычисляемое поле

    Сумма: [ЦенаПокупки]*[Количество]

   Выражение для вычисляемого поля удобнее вводить в Область ввода. Для ее вызова надо после щелчка в свободной ячейке нажать Shift+F2.

   Если в бланк этого запроса добавить поле КодПокупки, установить для него порядок сортировки По возрастаниюи снять флажок вывода на экран, то ото­бранные записи будут выводиться в том же порядке, что и в таблице ПОКУПКИ.

   В запросе можно предусмотреть подсчет итоговых значений, например под­считать общее количество всех книг, купленных каждым из клиентов, и итоговую стоимость всех сделанных им покупок. Такой запрос называется Итоговым за­просом. Для составления такого запроса надо нажать кнопку Групповые опера­ции в режиме Конструктора запроса. В бланке запроса появится новая строка Групповая операция, а в каждом поле - установка Группировка.Теперь записи бу­дут группироваться по каждому полю и набор отобранных записей будет содер­жать по одной строке для каждого уникального значения тех полей запроса, для которых оставлена установка Группировка. Для вычисления итогов надо в соот­ветствующих полях заменить установку Группировка на конкретную итоговую фунщию,которую можно выбрать в раскрывающемся списке. Существует девять функций для выполнения групповых операций. В их числе:

    Sum - возвращает сумму всех значений данного поля в каждой группе;

    Avg - возвращает среднее арифметическое значений полей в группе;

    Min, Max - возвращает наименьшее или наибольшее значение в каждой  

группе,

    Count - возвращает число записей в группе, для которых значения данного поля отличны от Null.

   Групповые операции можно выполнять и над вычисляемыми полями.

   Так, например, для подведения итогов по объемам покупок, сделанных каж­дым из клиентов, можно составить итоговый запрос на таблицах ПОКУПКИ и КНИГИ. В качестве источника данных для итогового запроса можно использовать также рассмотренный выше запрос с вычисляемым полем. В бланк итогового за­проса надо включить поля КодКлиента, Количество из таблицы ПОКУПКИ и соз­дать вычисляемое поле Сумма так, как это описано выше. Для первого из полей надо оставить установку Группировка,а для двух других полей эту установку сле­дует заменить итоговой функцией Sum. В результате выполнения запроса сформи­руется список, содержащий по одной записи для каждого клиента с итоговыми

значениями - общим количеством купленных этим клиентом книг и общей стои­мостью всех сделанных им покупок.

   Полям записей запроса можно задать свойства, отличные от свойств полей таблиц. Например, можно определить новые значения свойства Подпись, опреде­ляющие имена столбцов выводимой на экран таблицы. Для этого нужно щелкнуть правой кнопкой мыши в любой ячейке соответствующего столбца и из контекст­ного меню вызвать окно Свойства поля. Для вызова этого окна можно воспользо­ваться также кнопкой Свойства на панели инструментов или командой меню Вид / Свойства.

   В рассмотренных выше запросах условия отбора вводились непосредствен­но в бланк запроса. Однако удобнее было бы иметь возможность изменять в за­просе условия отбора, вводя конкретные значения для поиска перед выполнением запроса. Эту задачу можно решить, создав запрос с параметром.