Создание запросов в Access. Виды запросов

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

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

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

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

Рис. 4.5. Запрос "Сотрудники Запрос" в режиме Конструктора запросов

Рис. 4.6. Панель инструментов Конструктор запросов

Таблица 4.1. Описание кнопок на панели инструментов Конструктор запросов

Команда меню

Описание
Вид (View) Вид, Режим таблицы (View, Datasheet View) Отображение запроса в различных режимах. Чтобы изменить режим отображения запроса, нажмите стрелку справа от кнопки и в появившемся списке выделите нужный элемент. Если просто нажать эту кнопку, запрос будет отображен в режиме Таблицы
Сохранить (Save) Файл, Сохранить (File, Save) Сохранение активного запроса
Печать (Print) Печать результатов запроса без открытия диалогового окна Печать
Предварительный просмотр (Print Preview) Файл, Предварительный просмотр (File, Print Preview) Предварительный просмотр запроса перед печатью
Орфография (Spelling) Сервис, Орфография (Tools, Spelling) Проверка орфографии в текстовых полях запроса
Вырезать (Cut) Правка, Вырезать (Edit, Cut) Удаление выделенных объектов из запроса в буфер обмена Windows
Копировать (Сору) Правка, Копировать (Edit, Copy) Копирование выделенных объектов запроса в буфер обмена
Вставить (Paste) Правка, Вставить (Edit, Paste) Вставка содержимого буфера обмена в запрос
Формат по образцу (Format Painter) Копирование параметров форматирования из одного выделенного объекта в другой такого же типа
Отменить (Undo) Правка, Отменить (Edit, Undo) Отмена последнего изменения запроса
Тип запроса (Query Туре) Запрос, Выборка (Query, Select Query) Изменение типа запроса. Для изменения типа запроса щелкните по стрелке справа от кнопки и выберите из списка нужный тип запроса
Запуск (Run) Запрос, Запуск (Query, Run) Выполнение запроса
Отобразить таблицу (Show Table) Запрос, Добавить таблицу (Query, Show Table) Выводится диалоговое окно Добавление таблицы (Show Table)
Групповые операции (Totals) Вид, Групповые операции (View, Totals) Группировка записей в запросе и расчет итоговых значений
Набор значений (Top Values) Отобразить только первые записи запроса. Количество отображаемых записей указывается в поле ввода либо в штуках, либо в процентах
Свойства (Properties) Вид, Свойства (View, Properties) Открытие окон свойств выделенных объектов: запроса или поля запроса
Построитель (Build) Вызов построителя для создания выражения. Кнопка доступна только тогда, когда активизировано свойство запроса или поля запроса, которое допускает ввод выражения, например Условие отбора (Criteria)
Окно базы данных (Database Window) Окно, 1 (Window, 1) Отображение окна базы данных
Новый объект (New Object) Создание нового объекта базы данных. Чтобы выбрать тип создаваемого объекта, нажмите стрелку справа от кнопки
Справка по Microsoft Access (Microsoft Access Help) Справка, Справка по Microsoft Access (Help, Microsoft Access Help) Вызов помощника и получение справки по Access 2002

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

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

>

Примеры разных способов включения полей в результат запроса в режиме Конструктора запросов приведены на рис. 4.9-4.11.

Рис. 4.9.

Рис. 4.10.

Чтобы добавить в запрос еще одну таблицу или другой запрос, необходимо:


Замечание

Добавить таблицу или еще один запрос в окно Конструктора запросов можно также путем перетаскивания мышью названия таблицы или запроса из окна базы данных.

Чтобы удалить базовую таблицу из запроса, необходимо выделить ее, щелкнув на любом месте в списке ее полей, и нажать клавишу .

Чтобы удалить поле из запроса, выделите нужный столбец в бланке запроса, а затем нажмите клавишу . Чтобы выделить столбец, пользуйтесь областью выделения столбцов - узкой серой полоской над столбцами в бланке запроса. Когда вы подводите указатель мыши к этой области, он преобразуется в жирную стрелку, направленную вниз.

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

В режиме Конструктора запросов можно изменять имена полей запроса. Чтобы переименовать поле, необходимо установить курсор в бланке запроса перед первой буквой его имени и ввести новое имя и символ двоеточия. Пример запроса с измененными именами полей приведен на рис. 4.12. Изменение имени поля в бланке запроса приводит к изменению заголовка столбца при просмотре запроса в режиме таблицы. Кроме того, если на основе запроса создать новый объект, например форму или отчет, в новом объекте будет использовано новое имя поля. Имя поля базовой таблицы при этом не изменяется. Это имя также не изменяется в тех формах и отчетах, которые были созданы на основе запроса до изменения имени поля. Имена полей в запросах должны соответствовать соглашениям об именах Microsoft Access.

Рис. 4.12.

Чтобы использовать новое имя поля только в заголовках столбцов в режиме таблицы или как подпись полей в формах и отчетах, следует задать для этого поля свойство Подпись (Caption), а не переименовывать поле в бланке. (Об установке свойств поля см. разд. "Настройка свойств полей в запросе и свойств самого запроса" гл. 8 )

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

Замечание

Изменение ширины столбцов в окне Конструктора запросов или в окне расширенного фильтра не влияет на ширину столбцов запроса в режиме Таблицы или объекта, для которого применен фильтр.

В строке Условие отбора (Criteria) и в строке или (Or) указываются условия отбора записей. Такими условиями могут быть логические выражения. Например, (>30), (="Иванов"), (=10) и т. п. (0 создании выражений в условиях запроса см. разд. "Использование выражений в запросах" ниже в этой главе.)

Условия, находящиеся в одной строке, но в разных столбцах бланка, объединяются по логическому оператору And (И). Если нужно объединить условия отбора по логическому оператору Or (ИЛИ), разместите эти условия в разных строках бланка запроса. Пример использования нескольких условий отбора приведен на рис. 4.13.

Рис. 4.13.

Если критерий отбора очень сложный, можно вставлять дополнительные строки условий. Для этого необходимо:

  1. Выделить строку, которая должна оказаться под вставляемой строкой. Для этого нужно подвести указатель мыши к левой границе строки (он должен превратиться в жирную стрелку, указывающую вправо) и щелкнуть левой кнопкой мыши.
  2. Выполнить команду Вставка, Строки (Insert, Rows) или нажать клавишу . Новая пустая строка вставляется над выбранной. В нее можно вносить условия отбора.

Для удаления строки условий отбора:

  1. Щелкните левой кнопкой мыши в любом месте строки.
  2. Выполните команду Правка, Удалить строки (Edit, Delete Rows).

Чтобы установить порядок сортировки записей в запросе, используйте строку Сортировка (Sort). Для каждого поля, по которому должны сортироваться записи, выберите из списка соответствующий порядок сортировки: по возрастанию (Ascending) или по убыванию (Descending). По умолчанию во всех полях запроса устанавливается значение (отсутствует) (Not sorted). Пример использования поля со списком Сортировка (Sort) приведен на рис. 4.14.

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

Можно легко удалить поле из результирующей таблицы запроса, если просто сбросить флажок Вывод на экран (Show) в этом столбце бланка запроса. По умолчанию этот флажок установлен для всех полей запроса. Ситуация, когда поле не должно отображаться в результате запроса, возникает обычно, когда оно включается в бланк запроса только для того, чтобы указать условие отбора или сортировки записей. Пример такого запроса приведен на рис. 4.15. В запрос включены все поля таблицы "Товары" (Products) (это задано в первом столбце бланка запроса), а поля "КодТипа" и "Марка" включены только для того, чтобы указать порядок сортировки. Поэтому флажок Вывод на экран (Show) у этих полей сброшен. В противном случае эти поля вывелись бы дважды.

Рис. 4.14.

Рис. 4.15.

Если вы хотите очистить бланк запроса для того, чтобы создать новый, нужно выполнить команду Правка, Очистить бланк (Edit, Clear Grid).

После формирования бланка запроса его можно сохранить, нажав на кнопку Сохранить (Save) на панели инструментов или выполнив команду меню Файл, Сохранить (File, Save). При этом появляется диалоговое окно, в котором нужно ввести имя сохраняемого запроса (рис. 4.16). Запрос можно сохранить и закрыв его.

Результаты выполнения запроса можно увидеть, переключившись в режим Таблицы (Datasheet View) с помощью кнопки Вид (View) или нажав кнопку Запуск (Run) на панели инструментов.

Width="351" height="182">

Рис. 4.16. Диалоговое окно Сохранение

Результат выполнения запроса, созданного в режиме Конструктора, приведен на рис. 4.17.

Использование окна запроса

1. Создание простого запроса

Откроем базу данных STUD, как было рассмотрено в ЛР1. Создадим запрос, выводящий информацию о студентах, у которых имеются задолженности.

Для создания запроса активизируем окно базы данных (см. ЛР1). После этого щелкнем по корешку "Запрос" и кнопке "Создать". В появившемся диалоговом окне "Создание запроса" выберите кнопку "Конструктор". Access откроет диалоговое окно "Добавление таблицы", позволяющее выбрать базовые таблицы и запросы для создаваемого запроса. Выберите таблицы "Результаты" и "Cтуденты", нажимая кнопку "Добавить", после чего закройте это окно кнопкой "Закрыть".

Открывшееся окно конструктора запросов состоит из двух частей: верхняя содержит списки полей выбранных таблиц, а нижняя - бланк QBE для создания запроса. Каждый столбец бланка описывает одно поле, участвующее в запросе.

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

Предмет
Номер_С

перетащив их в бланк QBE . Рассмотренным выше методом перетащите из таблицы “Студенты” поле Фамилия.


Запрос “Задолженность” будет иметь вид, как показано на рисунке.
Установка связей между таблицами производится автоматически, используя структуру связей, созданную при генерации проекта БД. Можно задавать другие варианты связи таблиц и иные типы связей (внешнее объединение, "один-к-одному", "один-ко-многим" и т.д.). Изменение связей производится в верхней части окна выбором связанного поля в описании одной таблицы и транспортировкой его при нажатой кнопке мышки на описание соответствующего поля связанной таблицы. Тип связи можно изменить, активизировав ее щелчком мышки на линии связи.

Условие для отбора нужных нам полей производится включением этого условия для данного поля в строке QBE "Условие отбора". Несколько значений отбора вводятся в одну строку, разделенные логическими условиями AND или OR, либо вводятся в последующие ячейки строки "или".
Установим для таблицы "Результаты" условие отбора студентов, у которых задолженности, для чего в столбец описания поля внесем строку "Задолженность" из таблицы "Результаты", и в строке "Условие отбора" введем:
Да

Сбросим для этого поля флажок "Показать", запрещающий вывод данного поля в выборке (т.к его не обязательно выводить).
Кроме стандартных операторов сравнения "=", "<", ">", "<=", ">=", Access поддерживает также BEETWEN, IN, LIKE.
В запросе могут присутствовать т.н. вычисляемые поля - вычисленные значения над любыми полями таблицы. Access поддерживает большое число функций и операторов, применяемых при генерации вычисляемых полей.
Чтобы просмотреть результат запроса необходимо на панели нажать кнопку:

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

Строки итоговой таблицы желательно отсортировать по полю "Фамилия" таблицы "Студенты". Для этого в столбце с описанием данного поля в строке "Сортировка" выберем пункт "по возрастанию". При необходимости сортировки по нескольким полям Access сортирует данные в порядке их расположения в бланке QBE. После просмотра запроса видно, что необходимо ввести поле Имя из таблицы “Студенты”, т.к фамилии повторяютя и запрос не несет необходимой информации. Чтобы вставить поле, перетяните его в сетку QBE на место, где он должен находится и все остальные поля передвинуться на одну позицию в право.
Запустить полученный запрос на выполнение можно также командой "Выполнить" меню "Запрос". Проверим полученные результаты на соответствие критериям отбора. Сохраним полученный запрос под именем "Задолженности". Запрос представляет собой таблицу:

Создадим запрос, в котором будет вычисляться дополнительное поле. Кафедра вычислительной техники решила своим работникам к новому году выплатить премию в размере 10% от зарплаты. Создадим запрос на базе таблицы “Преподаватели”, с полями Фамилия, Кафедра, Должность, Зарплата. Чтобы создать вычисляемое поле “Премия”, выводящее информацию о величине премии работнику, в новом столбце (следующим за заполненным), в строке “Поле” введем выражение Зарплата*0,1. Изменим заголовок поля, введя перед выражение его название. Ячейка будет содержать: «Премия: [Зарплата]*0,1».

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

1.2. Создание итогового запроса

Итоговые запросы позволяют получать статистическую информацию по группам данных, как например: сумму, среднее арифметическое, мат.ожидание, дисперсию значений полей таблицы; число значений полей, удовлетворяющих определенным условиям и т.д.
Создадим запрос среднего бала студента. Откроем новый бланк запроса, внесем в него таблицу "Студенты", “Результаты” и установим вывод полей "Номер_С", "Фамилия", "Оценка_Т", "Оценка_П", “Оценка_Л”.

Для вычисления в запросе итоговых значений щелкнем по кнопке "Групповые операции" панели инструментов. В бланке QBE появится строка "Групповая операция", где для каждого описанного поля в этой строке установлено по умолчанию "Группировка". Теперь записи по каждому полю будут группироваться, но итог подводиться не будет. Для выведения итоговых значений необходимо вместо слова "Группировка" установить какую-нибудь групповую операцию (см прил.1).
Для полей “Оценка_Т”, “Оценка_П”, “Оценка_Л” операцию "Avg", выводящую среднее значение поля для группы записей (получим средний бал).

Изменим также заголовки полей выводимой таблицы. Для этого в описании полей в строке "Поле" введем их новые названия, отделяя их от описания двоеточием:
Оценка_Т: Теория
Оценка_П: Практика
Оценка_Л: Лабы

Часть выражения, расположенная до двоеточия выводится после запуска запроса как заголовок столбца, вместо выводимого Access по умолчанию. Таким способом можно формировать более понятные заголовки полей, чем генерируемые базой.
Сохраним полученный запрос под именем "Итог". Запустите запрос и проанализируйте полученные результаты.

Встречаются задачи, в которых параметры запросов заранее неизвестны, или есть необходимость в их изменении. Для этого в Access предусмотрена возможность ввода параметров запросов непосредственно перед их исполнением. Чтобы установить ввод параметра вместо конкретного значения, в строке "Условие отбора" вводятся имя или фраза, заключенные в квадратные скобки. Все, введенное в квадратных скобках Access рассматривает как имя параметра, и выводится в диалоговом окне запроса как комментарий в вводимому параметру. В запросе можно использовать несколько параметров, но с уникальными именами.

Создадим запрос, выводящий список преподавателей работающих на задаваемой пользователем кафедре. За основу возьмем таблицу "Преподаватели". Выберем в бланк вывода пункт "Преподаватели.*", выводящий все поля таблицы "Преподаватели”. Введем еще раз описание поля “Кафедра”, сбросим для него флажок вывода на экран, и в строке "Условие отбора" этого поля введем выражение:
=[Введите название кафедры]

Сохраним полученный запрос как "Выборка преподавателей по кафедрам". Выполнив запуск запроса, мы увидим диалоговое окно, запрашивающее название кафедры.

После ввода параметра Access выводит список преподавателей, местом работы которых является запрашиваемая кафедра.
Ввод параметров можно использовать при любом типе запросов: итоговом, перекрестном, запросе-действии и т.д.

1.4. Создание перекрестного запроса

Access поддеpживает специальный тип итоговых запpосов, называемый перекрестным. Перекрестный запрос выводит вычисленные значения как функцию от существующих полей. Так в Access можно вывести запрос, описывающий суммарный зароботок по должностям.
Необходимое требование к созданию перекрестного запроса наличие поля - заголовка строки, поля - заголовка столбца, и одно поле вычисляемого значения. Поля, являющиеся заголовками строк и столбцов должны иметь в строке "Групповая операция" установку "Группировка". Для поля - значения необходимо выбрать в "Групповой операции" какую-либо групповую функцию, или выражение, содержащее групповую операцию.

Для нашего запроса для таблицы "Преподаватели" в меню "Запрос" установим указатель "Перекрестный". Access добавит в блок QBE строку "Перекрестная таблица". Затем в бланк перенесем поле "Должность", установим “заголовки столбцов”.

Следующее поле-"Кафедра”, установим “заголовки строк”
Результирующее поле- “Зарплата” , для него установим “значение”
"групповая операция" - Avg,
Сохраним полученный запрос под имеем "Зарплаты по должностям".

1.5. Создание запроса типа "внешнее объединение"

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

Создадим запрос, выводящий информацию обо всех студентах, с задолженностями и без. В этом запросе будет использоваться внешнее объединение таблиц "Студенты" и "Результаты" по совпадению поля "Номер_С" со всеми записями таблицы "Студенты".
Для создания внешнего объединения необходимо изменить параметры объединения. Откроем запрос "Задолженность" в режиме конструктора. Щелкнем по линии связи между таблицами "Студенты" и "Результаты" для открытия диалогового окна "Параметры объединения".

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

Выберем третий тип связи и щелкнем на кнопке "Ок". После этого на линии соединения таблиц появится стрелка, указывающая на внешнее объединение. Сохраним модифицированный запрос (через “Сохранить как” ("Save as.."), чтобы не затереть предыдущий запрос) под именем "Внешнее объединение по студентам".

Лекция 16. Создание запросов средствами MS Access 2000

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

§ соединение данных нескольких таблиц;

§ отображение только требуемых полей;

§ формирование сложных критериев отбора записей;

§ вычисления с использованием данных из исходных таблиц;

§ группировку информации по каким-либо критериям;

§ модификацию данных в таблицах.

MS Access предоставляет удобные механизмы быстрого создания запросов без особой подготовки, тогда как в других СУБД часто требуются знание языковых средств, для создания запросов. Для создания запросов MS Access предлагает следующие средства:

§ Конструктор запросов – средство конструирования запросов с использованием QBE (Query by example – запрос по образцу), требует минимальных знаний. Средство, уступающее режиму SQL .

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

§ Перекрестный запрос – позволяет создавать результирующие таблицы на основе результатов расчетов, полученных при анализе группы таблиц;

§ Запрос на повторяющиеся записи – средство создания запросов для выявления повторяющихся записей, выполнено в виде мастера.

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

Создание запросов начинается с выбора категории «Запросы» окна диалога «Базы данных». Затем, кнопкой «Создать» может быть вызвано окно диалога «Новый запрос», в котором выбирается один из вариантов создания запроса (рисунок 16.1).

Рисунок 16.1 - Диалоговое окно «Новый запрос»

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

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


Рисунок 16.2 - Окно мастера создания запросов

Процесс создания запроса с помощью мастера сводится к следующим шагам:

§ Запускается мастер создания простых запросов, например командой – Создание запроса с помощью мастера

§ в раскрывающемся списке «Таблицы и запросы» последовательно выбираются таблицы или запросы, информация из которых необходима пользователю, а затем, из списка «Доступные поля» в список «Выбранные поля» перемещаются требуемые поля (рисунок 16.2).

§ На втором шаге работы мастера определяется тип запроса: подробный или итоговый. Если выбран итоговый запрос, то необходимо определить итоговые операции над полями запроса: Max , Min , Sum , Avg или Count .

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

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

Конструктор редко используется для создания запросов, чаще используется как средство модификации уже существующих. Конструктор запросов использует QBE (Query by example – запрос по образцу) позволяющий сформировать относительно сложные запросы на основе специального бланка, заполнение которого позволяет сформировать запрос, безусловно, этот способ уступает непосредственному использованию конструкций языка SQL , но требует значительно меньших знаний.

При необходимости можно использовать язык SQL , для этого необходимо перейти в режим SQL , переход выполняется командой контекстного меню конструктора запросов – «Режим SQL ».

Окно конструктора (рисунок 16.3) разделено на две части. Верхняя часть предназначена для расположения таблиц, на основе которых формируется запрос. Добавление таблиц в запрос осуществляется командой панели инструментов - Отобразить таблицу .


Рисунок 16.3 - Окно конструктора запроса. Пример ввода условия.

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

Включение новых полей в запрос выполняется простым перетаскиванием имени поля из списков полей таблиц (верхней части конструктора) в требуемый столбец строки «Поле:», при этом имя таблицы определяется автоматически.

При необходимости сортировки по какому-либо полю в столбце этого поля устанавливается свойство «Сортировка» в значение По возрастанию или По убыванию , выбором из раскрывающегося списка.

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

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

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

Количество строк в QBE может варьироваться в зависимости от типа создаваемого запроса, например при использовании группировки появится новая строка – «Групповая операция».

Установка критериев отбора записей

Определение критериев выборки в запросах является одной из основных задач. Чтобы сформировать требуемый пользователю набор данных необходимо определить значения условий отбора в строке «Условие отбора:» QBE. В условиях отбора можно использовать логические операторы (or , and , not ), операторы сравнения (<, >, <=, >=, <>, = ), а также операторы Between , In и Like .

Можно задать несколько условий отбора, соединенных логическим оператором или ( or ) , для некоторого поля одним из двух способов:

1. ввести всё условие в одну ячейку строки «Условие отбора:», с использованием логическогооператораили (or ).

2. одну часть условия указать в ячейке строки «Условие отбора:», а вторую часть условия вписать в нижнюю ячейку строки «Или:».

Оба варианта будут эквивалентными, второй вариант изображен на рисунке 16.4. Результатом этого запроса будет список студентов имеющих оценки 4 или 5.


Рисунок 16.4 - Использование логического оператора или ( or ) .

Логическая операцияи ( and ) используется в том случае, когда должны быть выполнены оба условия одновременно и только в этом случае запись будет включена в результирующий набор данных. Например, условие >2 and <5 даст список студентов имеющих оценки 3 и 4.

Логическая операция and может быть использована не только для одного поля, но и для нескольких полей, условия в которых должны выполниться одновременно, однако, в этом случае она используется неявно. На рисунке 16.5 показано неявное использование логической операции and . В результате такого запроса будут выданы все студенты, проживающие в городе «Уфа» и имеющие оценку 5. Фактически, если заглянуть в код SQL (в режиме SQL ) то можно увидеть следующее условие:

[Студенты].[Город] = “Уфа” and [Студенты и занятия].[Балл] = “5”


Рисунок 16.5 – Пример использования логической операции и ( and )

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

Оператор B etween позволяет задать диапазон значений, например диапазон от 10 до 20 может быть определен следующим образом:

between 10 and 20

Оператор I n позволяет использовать для сравнения список значений, указываемый в качестве аргумента. Например:

in (“первый”,”второй”,”третий”)

Оператор L ike полезен для поиска образцов в текстовых полях, причем позволяет использовать шаблоны:

* - обозначает любое количество символов;

Любой одиночный символ;

# - указывает, что в данной позиции должна быть цифра.

Например, для выбора фамилии, начинающейся с буквы П и с окончанием “ов” можно записать следующие условие:

Like П*ов

Особый подход к работе с полями типа дата. Значение даты в условиях отбора должно быть заключено в символы #. Например:

>#31.12.1996#

Если требуется выделить временные события конкретного дня, месяца или года, то можно использовать встроенные функции MS Access :

§ Day (дата) – возвращает значение дня месяца в диапазоне от 1 до 31;

§ Month (дата) – возвращает значение месяца в диапазоне от 1 до 12;

§ Year (дата) – возвращает значение года в диапазоне от 100 до 9999;

Текущую дату можно определить функцией Now (), используемую без аргументов.

Вычисляемые поля

В запросах на выборку можно определять вычисляемые поля, значения которых будут получены в результате каких-либо арифметических операций над полями участвующими в запросе. Например, если необходимо определить размер надбавки, равной 15% от оклада, то можно записать в строке «Поле» свободного столбца бланка запросов следующее выражение:

Надбавка: [ Оклад]*0.15

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

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

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

Допустим, существует запрос «Отпуск товаров со склада», который содержит поля «КолОтп» (количество отпущенное) и «ЦОтп» (цена отпускная), требуется определить сумму продажи. Открываем запрос в режиме конструктора, переходим на пустой столбец и запускаем построитель выражений командой «Построить», контекстного меню . Находим в среднем списке имя поля «ЦОтп» и дважды щелкаем по нему мышкой. Нажимаем кнопку «*» и повторяем ту же последовательность действий для поля «КолОтп». Получаем требуемое выражение (рисунок 16.6).


Рисунок 16.6 - Окно построителя выражений

Прежде чем применить созданное выражение, рекомендуется определить имя вычисляемого поля, например «Сумма»:

Сумма: [ЦОтп]*[КолОтп]

После нажатия «ОК» полученный результат будет помещен в новый столбец бланка QBE.

Контрольные вопросы

1. Что такое запрос?

2. В чем заключаются функции запроса?

3. Какие способы создания запросов существуют в MS Access ?

4. Чем отличаются возможности различных способов создания запросов?

5. Как создается запрос с помощью мастера?

6. Что представляет собой бланк запросов?

7. Как сформировать условия отбора записей?

8. Назовите основные логические операторы.

9. Что представляет собой оператор b etween?

10. В чем назначение оператора Like ?

11. Как создаются вычисляемые поля?

12. Преимущества и недостатки конструктора запросов?


Задания для самостоятельной работы

Задание 1. Создайте запрос «Просроченные книги», по следующему описанию:

1. В окне «Базы данных» выбираем категорию «Запросы».

2. Открываем окно мастера командой «Создание запроса с помощью мастера».

3. В раскрывающемся списке «Таблиц и запросы» выбираем таблицу «Книги». Из списка «Доступные поля» в список «Выбранные поля» перемещаем поля «Название» и «Автор».

4. В раскрывающемся списке «Таблиц и запросы» выбираем таблицу «Экземпляры». Из списка «Доступные поля» в список «Выбранные поля» перемещаем поля «Инвентарный номер», «Дата возврата» и «Наличие».

5. В раскрывающемся списке «Таблиц и запросы» выбираем таблицу «Читатели». Из списка «Доступные поля» в список «Выбранные поля» перемещаем поля «Номер_ЧБ», «ФИО», «Тел_дом», «Тел_раб». Нажимаем кнопку «Далее».

6. На данном этапе выбираем подробный запрос и нажимаем кнопку «Далее».

7. Указываем имя запросаПросроченные_книги и нажимаем кнопку «Готово».

8. Откроем запрос«Просроченные_книги» в режиме конструктора, нажав кнопку «Конструктор» (рисунок 16.7).


9. В бланке запроса в строке «Условие отбора» для поля «Дата_возврата» укажем значение < Now ().

10. В бланке запроса в строке «Условие отбора» для поля «Наличие» установим значение нет и снимем флажок «Вывод на экран».

11. Закроем окно конструктора.

Таким образом, отбираемые записи должны удовлетворять сразу двум условиям: дата возврата должна быть меньше текущей и книга должна отсутствовать в библиотеке.

Задание 2. Создайте простой запрос, на получение информации о том, к каким предметным областям относятся книги.

Задание 3. Из запроса «Просроченные_книги» извлеките информацию о должниках (Номер читательского билета, ФИО, Домашний и рабочий телефоны)

Задание 4. Создайте запрос на получение списка книг одного автора.

Сегодня мы начнем рассматривать такое приложение как — Microsoft Access 2003 , которое умеет создавать собственные базы данных (формат mdb ), а также создавать клиентские приложения к существующим базам на основе MS SQL Server. Темой сегодняшней статьи будет создание новых запросов из Access, имеется в виду, как простые запросы, так и различные функции, представления и процедуры. Под запросом здесь понимается объекты базы данных.

О Microsoft Access

Microsoft Access – программный продукт компании Microsoft, являющейся реляционной СУБД. Имеет огромные возможности при организации базы данных, создания отдельного приложения, которое может взаимодействовать с множеством других СУБД. Наиболее часто встречающееся решение клиент-сервер, где в качестве клиента выступает приложение, написанное в Access (язык VBA, формы и многое другое ), а сервером является СУБД Microsoft SQL Server. Однако Access поддерживает и взаимодействие с другими СУБД, например, такими как: MySql или PostgreSQL. О Access можно разговаривать долго, но цель сегодняшней статьи именно создание запросов (объектов ) из Access.

Переходим к практике и начнем с простой базы mdb, т.е. как там создать эти самые запросы.

Создание запросов в Microsoft Access 2003 — база MDB

Для начала открываем базу, затем нажимаем на объекты «Запросы» и жмем кнопку «Создать» .

Примечание! Имеется в виду, что база у Вас уже есть.

И перед Вами откроется новое окно выбора типа запроса

Давайте рассмотрим каждый из этих типов запросов подробней.

Типы запросов в Access 2003 — база MDB

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

Если не нравится это делать в графическом редакторе, то можете переключиться в режим SQL, для этого нажмите пункт меню «Вид» , затем «Режим SQL» .

Простой запрос – это, можно сказать, такой же конструктор, только немного другого вида и поменьше возможностей.

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

Повторяющееся записи – это как видно из названия поиск повторяющихся записей.

Записи без подчиненных – это поиск тех записей, которые отсутствуют в той или иной таблице.

С базами mdb достаточно, так как их редко используют на предприятиях, обычно используют следующую схему – пишут отдельный клиент, а все данные хранят на сервере с помощью СУБД в нашем случае — это MS SQL Server, а клиент Access (.adp).

Создание запросов в Microsoft Access 2003 — база MS SQL Server

Давайте рассмотрим создание новых запросов из клиента Access на базе MS SQL Server (подразумевается, что клиент adp и база данных на основе MS SQL Server у Вас уже есть ).

Примечание! Данная статья не подразумевает изучение sql, поэтому на момент прочтения этой статьи Вы уже должны понимать основы sql и понятие основных объектов в базе данных таких как: представление, функция, процедура. Если Вы совсем новичок в этом, то сначала, конечно же, рекомендуется освоить SQL, так как многие термины ниже Вам будут не понятны. Рекомендуемые статьи:

  • Что такое представления VIEWS в базах данных? И зачем они нужны?

Начало все такое же, открывает проект, затем нажимаем на объекты «Запросы» и жмем кнопку «Создать» .

И теперь подробней.

Типы запросов в Access 2003 — база MS SQL Server

Конструктор встроенной функции – это, можно сказать, обычное представление, только в нее можно передавать параметры, затем выполняются какие-то запросы на сервере, и возвращается таблица. Это своего рода функция, которая возвращает данные в виде таблицы. К ней обращаются следующим образом (если говорить об sql ):

SELECT * FROM my_test_tabl_func(par1, par2 ……)

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

Затем если Вы хотите добавить входящие параметры можете просто в условие ставить знак @ и название переменной, например, так:

SELECT * FROM table WHERE kod = @par

После на панели в свойствах функции

на вкладке «параметры функции» появится те параметры, которые Вы указали, причем передавать их нужно в том порядке, в котором они здесь указанны.

Конструктор представления – это создание обычного представления, в просто народе «Вьюха» .

Конструктор сохраненной процедуры – создание процедуры с помощью конструктора, принцип такой же, как и в вышеупомянутых функциях. Напомню процедура — это набор sql операторов, как на выборку, так и на изменение данных.

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

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

Ввод табличной функции – это создание функции, которая вернет набор записей. Похожа на встроенную функцию.

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

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

Конечно же, все эти объекты Вы можете создать и на сервере с помощью, например, Enterprise Manager (устарел, сейчас SQL Server Management Studio ), но мы сегодня рассматриваем возможность создания этих объектов из access клиента.

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