ность записей) и называется Dynaset (динамический, временный набор данных). В эту таблицу включены выбранные из основной таблицы блоки данных, которые удовлетворяют критерию запроса. Dynaset – динамический набор данных, т. е. при каждом выполнении запроса он строится вновь на основе «свежих» табличных данных.
4.2. Процедуры проектирования запросов
Выделяют два типа запросов: QBE-запросы (QBE – Query By Example – запросы по образцу), которые пользователь формирует, задавая отдельные параметры в окне проектирования с использованием подсказок (образцов), и SQL-запросы (SQL – Structured Query Language – структурированный язык запросов), формулируя которые пользователь применяет инструкции и функции, выстраивая некоторое описание на языке SQL. Между QBE- и SQL- запросами существует однозначное соответствие, и Access позволяет выполнять трансляцию запроса из одной формы в другую и обратно.
4.2.1. Проектирование QBE-запросов
QBE-запросы называются также запросами выбора. Запрос выбора является стандартным типом запроса, и для его проектирования в окне банка данных сначала следует щелкнуть на пиктограмме запроса Query, а затем на кнопке New (Новый). Access индицирует пустой проект запроса, а также диалоговое окно Add Table (добавить таблицу). В этом окне следует выполнить двойной щелчок мышью на тех таблицах, на базе которых необходимо изготовить запрос. После того как все таблицы выбраны, диалоговое окно Add Table можно закрыть командной кнопкой Close.
Связывание таблиц в запросе. Если запрос строится на базе нескольких таблиц, то между этими таблицами нужно объявить отношение, связывая их поля друг с другом. Связь отображается на экране соединительной линией между связываемыми полями обеих таблиц. Если между таблицами уже существуют отношения, то соответствующие связи индицируются автоматически. Чтобы объявить связь между двумя таблицами прямо в окне проектирования запроса, следует отбуксировать поле одной таблицы в поле такого же типа другой таблицы.
Добавление и удаление полей. Добавить поля к запросу можно буксировкой полей из списка в верхней части окна проектирования в нижнюю часть, в область спецификации запроса QBE. Используемое запросом поле маркируется в
21
списке и буксируется в очередную колонку спецификации, в строку Field (Поле). Вместо буксировки можно выполнить двойной щелчок на имени поля. Поле можно выбрать и прямо в строке Field, развернув имеющийся здесь список.
Для удаления поля из области проектирования запроса следует маркировать колонку удаляемого поля, выполнив щелчок «мышью» над ней в селекторной строке. Затем нужно нажать клавишу [Del] или выбрать из Edit-меню директиву Delete Column (удалить колонку).
Ввод критериев отбора. Критерии отбора – это инструкции, посредством которых пользователь сообщает Access, какие блоки данных должны отбираться по запросу и индицироваться в Dynaset. Критерии могут задаваться для одного поля запроса или нескольких полей. Для задания критерия в режиме проектирования запроса следует щелкнуть «мышью» в строке Criteria (Критерии) и ввести выражение для критерия отбора значений соответствующего поля.
Сортировка блоков данных в запросе. Блоки данных в запросе (точнее, в
генерируемом при выполнении запроса наборе Dynaset) могут быть рассортированы алфавитным или числовым способом в возрастающей (А-Я, 0-9 или убывающей Я-А, 9-0) последовательности по содержимому отдельных полей. Выполнять сортировки можно одновременно по содержимому нескольких полей (до десяти). Для выполнения сортировки следует в окне проектирования щелкнуть «мышью» в строке спецификации Sort того столбца (поля), по которому необходимо выполнить сортировку. В этой ячейке нужно указать способ сортировки Ascending (по возрастанию) или Descending (по убыванию), который можно выбрать из списка. Этот список содержит и значение Not sorted (не сортировано), позволяющее отказаться от сортировки по содержимому данного поля.
Подавление индикации полей в запросе. В спецификации запроса можно подавить поле, если его индикация в Dynaset не нужна. Причем подавить можно и поле, по содержимому которого производится сортировка. Поле будет видимо в таблице Dynaset, если в соответствующей колонке спецификации запроса в строке Show (показать) стоит отметка (контрольный индикатор включен). Для подавления индикации достаточно щелкнуть на этом индикаторе и отметка исчезнет.
Проведение вычислений. Пользователь может применить запрос для проведения вычислений с блоками данных. Можно задать в каждом поле некоторую функцию, обрабатывающую содержимое этого поля. Результат обра-
22
ботки выдается в Dynaset. Функция обработки задается в строке Total, которая появляется после нажатия в пиктографическом меню кнопки с греческой литерой G (сигма). Тип функции можно выбрать в этой строке, развернув список возможных значений: Sum – суммируется содержимое данного поля в столбце; Avg – вычисляется среднее значение поля в столбце; Min – минимальное значение поля в столбце; Max – максимальное значение поля в столбце; Count – число значений поля в столбце; First – первое значение поля в столбце; Last – последнее значение поля в столбце; StDev – стандартное отклонение значений в столбце; Var – вариация значений.
Индикация результата запроса (Dynaset). После того как запрос спроек-
тирован, его можно выполнить, щелкнув «мышью» в строке пиктограмм на кнопке с восклицательным знаком или вызывая в меню Query директиву Run (выполнить). Access индицирует отобранные по запросу в Dynaset блоки в виде таблицы.
4.2.2.Проектирование SQL-запросов
Спомощью структурированного языка запросов SQL в рамках Access пользователь может сформулировать сколь угодно сложные по структуре критериев и вычислений запросы. Этот же язык позволяет управлять обработкой запросов. SQL-запрос представляет собой последовательность инструкций, в которую могут включаться выражения и вызовы функций. Когда в режиме проектирования пользователь создает спецификацию запроса в форме QBE, Access строит на его основе соответствующий SQL-запрос. Для того чтобы отобразить на экране этот SQL-запрос или внести в него исправления, в режиме проектирования следует выбрать директиву SQL из меню View.
4.2.3. Типы запросов
Наряду с запросами выбора с помощью Access можно реализовать также запросы действий, параметрические запросы и запросы создания кросс-таблиц.
Запросы действия. С помощью запроса действия пользователь может изменять или переносить данные таблицы, а также актуализировать, добавлять или удалять группы блоков данных, изготавливать новые таблицы из набора Dynaset. Различают четыре типа запросов действий: запрос добавления, запрос удаления, запрос актуализации и запрос создания таблицы. В окне банка данных Access устанавливает перед именем запроса действия восклицательный знак (!).
23
Запросы добавления. С помощью запроса добавления блоки данных одной таблицы (все или отобранные запросом) можно присоединить в конец другой таблицы, которая может находиться как в том же банке данных, так и
вдругом. Если необходимо добавить блоки данных к таблице другого банка, сначала следует присоединить таблицу-источник к банку, содержащему целевую таблицу, с помощью директивы Attach Table (присоединить таблицу) меню File. Чтобы выбрать добавляемые блоки данных, следует составить запрос выбора. Затем надлежит выполнить составленный запрос и оценить результат в Dynaset, переключившись в табличный режим с помощью опции Datasheet (таблица) меню View. После того как необходимые данные отобраны в Dynaset, следует вернуться назад в режим проектирования и вызвать директиву Append (добавить) из меню Query.
Запрос удаления. С помощью запроса удаления пользователь может удалить группу блоков данных, отобранных по определенным критериям. При этом следует проявить осмотрительность и тщательно проанализировать критерии отбора, поскольку эту операцию отменить нельзя.
Для удаления записей из таблицы сначала следует спроектировать запрос выбора, чтобы выбрать удаляемые блоки данных. Отбор блоков данных выполняется в соответствии с заданными в строке Criteria критериями. По завершении задания критериев отбора следует выполнить запрос выбора, чтобы оценить корректность сформулированных условий. Затем следует вернуться назад в режим проектирования.
ВQuery-меню выбирается директива Delete (удалить). Access добавляет
вспецификацию запроса строку Delete и вводит в ячейки в столбцах полей значение Where. Это означает, что пользователь может установить дополнительные критерии отбора. Далее следует выполнить запрос, нажав кнопку с восклицательным знаком в строке пиктограмм. В специальном диалоговом окне Access укажет, сколько записей удаляется из таблицы и запросит подтверждение OK для выполнения удаления.
Запрос создания таблицы. Из динамического набора Dynaset, сформированного при выполнении запроса, можно изготовить таблицу, используя запрос создания таблицы. Применять запросы создания таблиц следует, например, для архивирования старых блоков данных или сохранения резервных копий таблиц.
Сначала следует изготовить запрос выбора и получить динамический набор данных Dynaset, заодно проверив при этом корректность запроса. Если
24
Dynaset соответствует представлениям пользователя, следует вернуться назад в режим проектирования и в Query-меню выбрать директиву Make Table (создать таблицу). Access открывает диалоговое окно Query Properties (Характеристики запроса), в которое следует ввести имя новой таблицы и нажать OK. Далее следует выполнить запрос, нажав кнопку с восклицательным знаком в строке пиктограмм. В специальном диалоговом окне Access укажет, сколько записей вносится в новую таблицу и запросит подтверждение OK для выполнения этой операции.
4.3.Порядок выполнения работы
Впроцессе выполнения работы требуется разработать ряд запросов для выборки данных, отвечающих определенным условиям, из базы данных Dekanat. Для этого поступите следующим образом.
1. Войдите в среду Windows и вызовите СУБД Access. Откройте в рабочем каталоге базу Dekanat.
2. Вызовите Мастер запросов с помощью команд меню:
Создание → Мастер запросов → Простой запрос.
На базе таблицы Студенты создайте запрос Выбрать_студент в форме
QBE для выборки информации о конкретном студенте. В качестве критерия выборки укажите равенство поля Фамилия требуемому значению. Выполните запрос поочередно для всех членов бригады.
3.Спроектируйте запрос выборки Выбрать_преподаватель на базе таблиц: Преподаватели, Дисциплины. При проектировании запроса используйте связь между таблицами, установленную в схеме базы данных Dekanat. Выполните запрос для получения информации о конкретном преподавателе.
4.Спроектируйте запрос выборки Выбрать_дисциплина с использованием таблиц Дисциплины и Преподаватели. При проектировании запроса установите связь таблиц с помощью полей Вн_код_преподавателя и Код_преподавателя. Выполните запрос для получения информации о конкретной дисциплине.
5.На базе таблиц Студенты, Экзамены, Дисциплины и Преподаватели
спроектируйте запрос создания таблицы Создать_зачетка для конкретного студента. Для этого сначала изготовьте запрос выборки Выбрать_зачетка,
связав таблицы Экзамены, Студенты, Дисциплины, Преподаватели и указав в качестве критерия выборки фамилию студента. Выполните запрос и проверьте правильность его выполнения. На основе полученного запроса с по-
25