30-11-2012
колонтитул в word 2007, 0000001111

Виды запросов, фильтров и соединений в Microsoft Access

Одним из семи стандартных объектов Microsoft Access является запрос. Запросы используются для просмотра, анализа и изменения данных в одной или нескольких таблицах. Например, можно использовать запрос для отоб- ражения данных из одной или нескольких таблиц и отсортировать их в определенном порядке, выполнить вычисления над группой записей, осуществить выборку из таблицы по определенным условиям.

Запросы могут служить источником данных для форм и отчетов Microsoft Access. Сам запрос не содержит данных, но позволяет выбирать данные из таблиц и выполнять над ними ряд операций. В Microsoft Access существует несколько видов запросов: запросы к серверу, которые используются для выборки данных с сервера; запросы на автоподстановку, автоматически заполняющие поля для новой записи; запросы на выборку, выполняющие выборку данных из таблиц; запросы на изменение, которые дают возможность модифицировать данные в таблицах (в том числе удалять, обновлять и добавлять записи); запросы на создание таблицы, создающие новую таблицу на основе данных одной или нескольких существующих таблиц, а также другие типы запросов.

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

  • Создание запросов с помощью Мастера и с помощью Конструктора запросов
  • Особенности выполнения запросов и их изменение
  • Использование вычисляемых полей в запросе
  • Преобразование фильтра в запрос
  • Виды соединений таблиц в запросе
  • Выполнение запросов с параметрами
  • Способы вывода результатов запроса на печать
  • Передача результатов запросов в другие приложения
  • Использование выражений в запросах

Запросы и фильтры

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

Основные отличия запросов и фильтров заключаются в следующем.

  • Фильтры не позволяют в одной строке отображать данные из нескольких таблиц, т. е. объединять таблицы.
  • Фильтры не дают возможности указывать поля, которые должны отображаться в результирующем наборе записей, они всегда отображают все поля базовой таблицы.
  • Фильтры не могут быть сохранены как отдельный объект в окне базы данных (они сохраняются только в виде запроса).
  • Фильтры не позволяют вычислять суммы, средние значения, подсчитывать количество записей и находить другие итоговые значения.

Запросы могут использоваться только с закрытой таблицей или запросом. Фильтры обычно применяются при работе в режиме Формы или в режиме Таблицы для просмотра или изменения подмножества записей.

Запрос можно использовать:

  • для просмотра подмножества записей таблицы без предварительного открытия этой таблицы или формы;
  • для того чтобы объединить в виде одной таблицы на экране данные из нескольких таблиц;
  • для просмотра отдельных полей таблицы;
  • для выполнения вычислений над значениями полей.

Создание простого запроса с помощью Мастера запросов

Наиболее просто создается запрос при помощи Мастера запросов. Чтобы создать простой запрос с помощью Мастера запросов, необходимо:

  1. В окне базы данных на панели объектов выбрать ярлык Запросы (Queries).
  2. В списке запросов дважды щелкнуть левой кнопкой мыши на ярлыке Создание запроса с помощью мастера (Create query by using wizard) или нажать на кнопку Создать (New) в окне базы данных и в появившемся диалоговом окне Новый запрос (New Query) выбрать Простой запрос (Simple Query Wizard) и нажать на кнопку ОК (рис. 1).
  3. В появившемся окне Создание простых запросов (Simple Query Wizard) (рис. 2) в поле со списком Таблицы и запросы (Tables/Queries) выбрать таблицу или запрос, которые будут служить источником данных для создаваемого запроса.
  4. С помощью стрелок вправо и влево переместить из списка Доступные поля (Available Fields) в список Выбранные поля (Selected Fields) те поля, которые необходимы в конструируемом запросе. При этом порядок полей в запросе будет соответствовать порядку полей в списке Выбранные поля (Selected Fields). Если нужно включить в запрос все поля, можно воспользоваться кнопкой с двумя стрелками вправо.

    Виды запросов, фильтров и соединений в Microsoft Access
    Рис. 1. Окно создания нового запроса

    Виды запросов, фильтров и соединений в Microsoft Access
    Рис. 2. Первое диалоговое окно Мастера простых запросов

  5. Нажать кнопку Далее (Next).
  6. Следующее диалоговое окно будет последним. В нем нужно ввести имя создаваемого запроса (рис. 4.3) в поле Задайте имя запроса (What title do you want to your query?) и выбрать дальнейшие действия: Открыть запрос для просмотра данных (Open the query to view information) или Изменить макет запроса (Modify the query design).
  7. При необходимости можно установить флажок Вывести справку по работе с запросом? (Display Help on working with the query) для вывода справочной информации по работе с запросами.
  8. Нажать на кнопку Готово (Finish).

Создание и изменение запроса с помощью Конструктора запросов

Для изменения уже существующих запросов и для создания новых запросов используется Конструктор запросов. Для того чтобы открыть запрос в режиме Конструктора, выделите в списке один из существующих запросов, например только что созданный запрос "Сотрудники Запрос", и нажмите кнопку Конструктор (Design) на панели инструментов окна База данных (Database).

Появляется окно Конструктора запросов (рис. 3). В верхней части окна отображается таблица (или несколько таблиц, если запрос многотабличный) в том виде, в каком таблицы отображаются в окне Схема данных (Relationship). Таблицы – источники данных для запроса, мы будем называть базовыми таблицами запроса. В нижней части окна находится бланк запроса – таблица, ячейки которой используются для определения запроса. В бланке отображаются все столбцы, включенные в результирующее множество запроса.

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

В области панелей инструментов Access отображается панель инструментов Конструктор запросов (Queries Design). Эта панель представлена на рис. 4, а в табл. 4.1 приведено описание кнопок этой панели инструментов и соответствующие им команды меню.

Виды запросов, фильтров и соединений в Microsoft Access
Рис. 3. Запрос "Сотрудники Запрос" в режиме Конструктора запросов

Виды запросов, фильтров и соединений в Microsoft Access
Рис. 4. Панель инструментов Конструктор запросов

Создание вычисляемых полей в запросах

Создание запросов интересно не только тем, что вы можете в виде одной таблицы представить данные из нескольких связанных таблиц и отобрать нужные записи из этих таблиц. Вы можете создавать столбцы в запросе, которые являются результатом вычислений над значениями других столбцов. Такие столбцы называются вычисляемыми. Это существенно расширяет возможности запросов. Простейшим примером вычисляемого поля в запросе может быть поле, которое объединяет имя и фамилию человека. На рис. 5 показан пример такого поля в запросе, созданном на базе таблиц "Сотрудники" (Employees) и "Заказы" (Orders).

Чтобы создать вычисляемое поле, нужно ввести выражение, которое вычисляет требуемое значение, в строку Поле (Field) свободного столбца бланка запроса. В данном примере это выражение представляет собой конкатенацию полей, содержащих имя и фамилию сотрудника, с пробелом между ними. В этом выражении мы используем ссылки на поля таблицы, которые в выражении заключаются в квадратные скобки. Перед выражением нужно написать имя поля: ФИО и отделить его двоеточием от выражения.

Виды запросов, фильтров и соединений в Microsoft Access
Рис. 5. Вычисляемое поле в запросе

Совет
Если выражение длинное, его неудобно писать в строке Поле (Field). Нажмите комбинацию клавиш SHIFT + F2. Появится диалоговое окно Область ввода (Zoom) (рис. 6), в котором вводить выражение удобнее. Можно также использовать Построитель выражений, вызвав его щелчком по кнопке Построить (Build) на панели инструментов. (Подробнее об использовании Построителя выражений и о правилах составления выражений в Access см. последний раздел данной главы.)

Виды запросов, фильтров и соединений в Microsoft Access
Рис. 6. Диалоговое окно Область ввода

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

Виды соединений

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

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

  • в таблицах имеются поля с одинаковыми именами и согласованными типами, причем одно из полей является ключевым;
  • соединение было явно задано в окне Схема данных (Relationships).

Замечание
"Согласованные типы" в большинстве случаев означают одинаковые типы. Исключением является поле типа Счетчик, которое может иметь размер Длинное целое или Код репликации и может связываться с числовыми полями соответствующего размера
.

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

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

Если необходимо связать данные любым отношением, кроме отношения равенства, используют соединение по отношению или тэта-соединение). Соединение по отношению не отображается в окне Схема данных (Relationships) и не выводится в окне Конструктора запросов.

Для обозначения внутренних соединений в Access используются зарезервированные слова ANSI SQL INNER JOIN, а для указания внешних соединений – слова LEFT JOIN или RIGHT JOIN. Выражение WHERE <поле1>=<поле2> соответствует внутреннему соединению, а WHERE поле1>поле2 – соединению по отношению (одному из таких соединений).

Для связывания данных в одной таблице применяют рекурсивное соединение. Оно создается путем добавления в запрос копии таблицы (в результате чего Access назначает псевдоним для копии) и связывания полей идентичных таблиц.

колонтитулы в word 2007, 000000111111
Класс!
 
Яндекс.Метрика
Копирование возможно при указании прямой индексируемой гиперссылки
0000001