Разработка запросов к базе данных
Запрос позволяет выбрать необходимые данные из одной или несколько взаимосвязанных таблиц, произвести вычисления и получить результат в виде таблицы.
Через запрос можно производить обновление данных в таблицах, добавление и удаление записей. Запрос строится на основе одной или нескольких таблиц БД.
В Microsoft Access имеется удобное для пользователя графическое средство формирования запроса по образцу – QBE (Query By Example), с помощью которого может быть построен сложный запрос. QBE включает подсхему данных с используемыми таблицами и бланк запроса. При конструировании запроса достаточно, работая мышью, выделить и перетащить необходимые поля из таблиц, представленных в схеме данных запроса в бланк запроса и ввести условия отбора записей.
Средствами запроса можно:
- выбрать записи, удовлетворяющие условиям отбора;
- включить в результирующую таблицу запроса нужные поля;
- произвести вычисления в каждой из полученных записей;
- сгруппировать записи с одинаковыми значениями в одном или нескольких полях и выполнить над ними групповые функции;
- произвести обновление полей в выбранном подмножестве записей;
- создать новую таблицу БД, используя данные из существующих таблиц;
- удалить выбранное подмножество записей из таблицы БД;
- добавить выбранное подмножество записей в другую таблицу.
Многотабличный запрос позволяет сформировать новую таблицу, записи которой образуются путем объединения взаимосвязанных записей из разных таблиц БД и включения, нужных полей из этих таблиц.
Виды запросов:
- запрос на выборку– выбирает данные из взаимосвязанных таблиц и других запросов. Результатом его, является таблица, которая существует до закрытия запроса;
- запрос на создание таблицы– основан на запросе выборки, но в отличие от него результат запроса сохраняется в новой таблице;
- запрос на обновление, добавление, удаление – это запросы – действия, в результате выполнения которых изменяются данные в таблицах.
Особую роль играет запрос на выборку. Непосредственное использование в запросе другого запроса невозможно. В этом случае включаемый запрос надо преобразовать в запрос на создание таблицы. Этот запрос отличается от запроса на выборку только сохранением результата запроса.
Разработка запроса производится в режиме Конструктора запросов.
Для создания запроса в окне БД надо открыть вкладку Запрос и нажать кнопку Создать. В открывавшемся окне Новый запрос выбрать Конструктор. В окне Добавление таблицы выбрать используемые в запросе таблицы и нажать кнопку Добавить. Затем кнопкой Закрыть выйти из окна Добавление таблицы. В результате появится окно Конструктора запросов <имя запроса>: запрос на выборку.
Окно Конструктора запросов разделено на две панели:
Верхняя панельсодержит схему данных запроса, которая включает выбранные для данного запроса таблицы. Таблицы представлены списками полей. Схема данных отображает связи между таблицами, имеющие в схеме данных базы, и связи объединения, которые устанавливает Access, если таблицы имеют поля с одинаковыми именами и типами данных. Кроме того, пользователь сам может установить нужные связи (объединения), перетащив задействованные в связи поля у одного списка полей в другой.
Нижняя панель является бланком запроса по образцу, который нужно заполнить.
Каждый столбец бланка относится к одному полю, с которым нужно работать в запросе. Поля могут использоваться для включения их в результат выполнения запроса, для заданий сортировки по ним и для заданий условий отбора записей.
При заполнении бланка запроса необходимо: в строкуПолевключить имена полей, используемых в запросе, в строке Вывод на экранотметить поля, которые должны быть включены в результирующую таблицу, в строке Условие отборазадать условия записей, в строке Сортировка выбрать порядок сортировки записей результата.
Каждый столбец бланка запроса соответствует одному из полей таблиц. Кроме того, здесь может размещаться вычислимое поле, значение которого вычисляется на основе значений других полей, или итоговое поле, использующее одну из встроенных групповых функций Access. Для включения нужных полей из таблиц в соответствующие столбцы запроса достаточно перетащить нужное поле из списка полей таблицы в схеме данных запроса в первую строку бланка запроса.
Условия отбора записей.
Условия отбора записей могут задаваться для одного или нескольких полей в соответствующей строке бланка запроса. Условием отбораявляется выражение, которое состоит из операторов сравнения и операндов, используемых для сравнения. В качестве операндов выражения могут использоваться некоторые заданные значения и идентификаторы (ссылки).
Идентификаторпредставляет собой ссылку на значение поля, элемента управления или свойства. Идентификаторами могут быть имена полей, таблиц, запросов, фирм, отчетов и т.д. Они должны заключаться в квадратные скобки. Если необходимо указать ссылку на поле в конкретной таблице, форме, отчете, то перед именем поля ставится имя таблицы, также заключенное в квадратные скобки, отделенное от имени поля! Например, [Имя таблицы]![Имя поля]
Вычисляемые поля.
В запросе над полями могут производиться вычисления. Результат вычисления образует вычисляемое поле в таблице, создаваемой по запросу.
Выражение вводится в бланк запроса в пустую ячейку строки Поле. В этой ячейке после нажатия клавиши ENTER или перевода курсора в другую ячейку формируется имя поля Выражение N,где N – целое число, увеличивающееся на единицу для каждого нового создаваемого вычисляемого поля в запросе. Имя вычисляемого поля выводится перед выражением и отделяется от него двоеточием. Например,
И Выражение 1: [Цена]*[Количество], где Цена и Количество – имена полей.
Имя вычисляемого поля <Выражение 1>становится заголовком столбца в таблице с результатами выполнения запроса. Это имя можно изменить. Пользователь имеет возможность переименовать вычисляемое поле. Для этого достаточно в бланке запроса вместо Выражение Nввести новое имя.
Если требуется подсчитать например, количество товаров, имеющихся на каждом складе, составляется запрос, позволяющий сгруппировать данные с одинаковыми значениями определенных полей и необходимые вычисления. В этих запросах можно использовать два типа полей: поля, по которым осуществляется группировка данных, и поля, для которых проводятся вычисления. Для того чтобы составить итоговый запрос, находясь в режиме Конструкторазапроса, следует выбрать пиктограмму Групповые операцииили воспользоваться командойВид/Групповые операции.При составлении запросов к связанным таблицам можно вводить критерии поиска, определять вычисляемые поля или вычислять итоговые значения. С помощью команды Вид/Имена таблиц можно включить строку для имен таблиц, что позволит определить принадлежность полей.
Параметры запросы.
Для избежания того, чтобы для каждого значения критерия создавать новый запрос, создается запрос с параметрами, который позволяет более удобно задавать критерии выбора. С помощью такого запроса можно отобразить на экране, например, поставки, осуществленные до определенной даты. Для этого надо открыть окно запроса и добавить в него таблицу. Далее нужно создать запрос, отбуксировав необходимые поля в бланк запроса QBE и задав условие выбора. В качестве условия следует ввести параметр, заключенный в квадратные скобки. При выполнении запроса Access отображает на экране этот параметр и ожидает ввода. Ввод параметра становится составной частью выполнения запроса. По умолчанию Access преобразует введенные в запрос параметры в текстовый тип данных. Поэтому следует выбрать команду Запрос/Параметры из меню, в результате чего Access откроет окно диалога Параметры запроса. Надо ввести параметр, например, «Дата поставки» без квадратных скобок в диалоговое окно и в качестве типа данных указать соответствующий тип. Затем нужно закрыть диалоговое окно нажатием кнопки ОК.
Если в запрос вводится несколько параметров, то порядок их ввода через диалоговые окна определяется порядком расположения полей с параметрами в бланке запроса.
Мастера создания запросов.
Мастер запросов ускоряет процесс создания запроса, автоматически выполняя первоначальные простейшие действия по подготовке запроса. Вызванный Мастер запросов запрашивает у пользователя сведения и создает запрос на основе ответов пользователей. При необходимости можно в режиме Конструктора редактировать запрос.
Создание запроса с помощью Мастера начинается с выбора в окне БД вкладки Запросыи нажатия кнопки Создать. В окне диалога Новый запроснадо выбрать из списка нужный вид запроса. Далее следует выполнять инструкции, выводящиеся в окнах диалога Мастера. В последнем окне диалога предлагается выбрать запуск запроса или просмотр структуры запроса в режиме Конструктора.
С помощью Мастера можно создать:
- простой запрос на выборку;
- запрос для поиска повторяющихся записей;
- запрос для поиска записей, не имеющих подчиненных записей;
- перекрестный запрос.
Заметим, что запрос для поиска повторяющихся записей и запрос для поиска записей, не имеющих подчиненных, являются элементарными запросами на выборку.