Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Фатхутдинова / Access-для выполнении КР.doc
Скачиваний:
40
Добавлен:
23.01.2014
Размер:
1.04 Mб
Скачать
      1. Поиск информации в базе данных

В MS Access пользователь осуществляет поиск информации с помощью специального объектов MS Access, называемых объектом «запрос». Имеется несколько типов данных объектов:

а) запрос на выборку (запрос с критерием поиска, запрос с параметром, запрос с вычисляемым полем, запрос с итоговыми операциями, запрос к связанным таблицам).

б) запросы на изменение (обновление, удаление, создание таблицы), которые были рассмотрены в п.3.3.2.

в) перекрестные запросы.

г) специфические запросы SQL.

С процедурой создания основного вида объекта «запрос» – «запроса на выборку» вы познакомились на лабораторных работах [3]. Однако прежде чем привести конкретные примеры объектов «запрос», сделаем несколько полезных замечаний. В основном пользователи формируют запрос в бланке QBE, а не пишут его явно на языке SQL (хотя режим просмотра SQL всегда возможен). Напомним, что в силу специфики работы бланка QBE при записи условий отбора следует учесть следующее: условия, записанные в разных полях одной строки, соединяются логической операцией AND, а условия, записанные в разных строках, соединяются логической операцией OR.

Обратите внимание на эту особенность, так как она часто приводит к неверным результатам выполнения ваших запросов. Для облегчения формирования вычисляемых полей, включенных в объект «запрос», пользуйтесь построителем выражений, вызываемым по кнопке . Это облегчит использование встроенных функций и операцийMS Access. Однако всегда помните, что вычисляемые поля отображаются только в объекте «запрос», и не сохраняются в исходных объектах «таблица».

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

Чтобы получить подобный список, сформируем объект «запрос» с параметром, в качестве которого будет выступать название авиакомпании. Информация для этого объекта «запрос» располагается в объектах «таблица» AirCompany, AviaPark и LA. Для формирования данного объекта «запрос» необходимо выполнить следующее:

1) в окне базы данных перейдите во вкладку «Запросы» (рис. 15);

Рис. 15

2) дважды щелкните на элементе “Создание запроса в режиме конструктора”, перед вами появится пустой бланк запроса (так называемый бланк QBE) и диалоговое окно с перечнем информационных объектов базы данных (рис.16)

Рис.16

3) отметьте необходимые информационные объекты (таблицы AirCompany, AviaPark и LA) и нажмите кнопку “Добавить”. После этого в верхней части бланка объекта «запрос» появится фрагмент схемы данных (рис.31);

4) в строку “Поле” мышью перетащите необходимые поля объектов «таблица» (Name_LA, Name_C, Data). Бланк объекта «запрос» приобретет вид, представленный на рис. 17.

Рис. 17

5) для добавления в объект «запрос» параметра (в данном примере это название авиакомпании) в столбце с соответствующим полем (Name_C) и в строке “Условие отбора” запишите текст, поместив его в квадратные скобки (Рис.17). Это пояснительный текст, который появится позднее на этапе выполнения объекта «запрос»;

6) в столбце “Поле: Data” и строке Сортировка укажите тип сортировки - “по возрастанию”;

7) запустите объект «запрос» нажатием кнопки .

Выполнение созданногообъект «запрос» начинается с появления окна с заголовком “Введите значение параметра”, с текстом, поясняющим какую информацию необходимо ввести (“Авиакомпания?” – именно этот текст записали в строке “Условие отбора” в квадратных скобках (пункт 5)) и текстовым полем для ввода значения заданного параметра (в данном случае - Аэрофлот).

8) нажмите кнопку . На экране появится результат выполненногообъекта «запрос» – список воздушных судов, принадлежащих авиакомпании “Аэрофлот”, упорядоченный по сроку приобретения воздушного судна (Рис.18).

Рис.18

Таким образом, компании Аэрофлот принадлежат два воздушных судна: Ту-134, приобретенный 25.01.1990г. и Ту-134, приобретенный 02.01.2004г.

Запрос2. Получить список воздушных судов, приобретенных ранее заданного количества лет. Пункты 1), 2) и 3) выполняются аналогично Запросу1.

4) в строку “Поле” мышью перетащите необходимые поля (N_Comp, N_LA, Data) объекта «таблица» AviaPark. Бланк объекта «запрос» приобретет вид, представленный на рис. 19.

Рис. 19

5) с помощью кнопки - “Построитель выражений” введите необходимое выражение с использованием встроенных функций текущей даты (Now) и вычисления года (Year), (рис.19). Данное выражение вычисляет срок эксплуатации самолета (в годах) с момента его приобретения;

6) для определения параметра объекта «запрос» (в данном примере это количество лет) в столбце, соответствующем этому полю (Выражение1) и строке “Условие отбора” запишите текст “Введите количество лет”, поместив его в квадратные скобки. В данном случае следует учитывать, что ввод параметра пользователем осуществляется в текстовое поле и поэтому системой воспринимается как текст. В связи с этим к вводимому значению параметра необходимо применить встроенную функцию преобразования этого значения к целому числу (Int);

7) запустите объект «запрос» нажатием кнопки .

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

Следующие 7 самолетов имеют срок службы более одного года (значение введенного параметра равно 1):

Запрос3. Определить количество воздушных судов каждого типа (пассажирских, транспортных), принадлежащих каждой авиакомпании (общий авиапарк).

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

1) в окне базы данных перейдите во вкладку “Запросы”;

2) создайте в режиме конструктора следующий простой объект «запрос»:

Рис.20

3) сохраните его, например, с именем Запрос31;

4) на вкладке «Запросы» нажмите кнопку , далее выберите “Перекрестный запрос”, нажмитекнопку , в появившемся окне щелкните по переключателю “Запросы”, выберите “Запрос31”, нажмитекнопку ,в результате чего появляется диалоговое окно (рис. 21).

Рис.21

5) выберите поле N_Comp (Номер авиакомпании), которое будет использоваться в качестве заголовков строк, и нажмите кнопку (рис.22);

Рис. 22

6) выберите поле Vid_LA (Тип самолета), которое будет использоваться в качестве заголовков столбцов, поле Expr1001 (второе поле Vid_LA) и функцию Число и нажмите кнопку , в появившемся окне введите название объекта «запрос» и нажмите кнопку , объект «запрос» выполнится с результатом: (рис. 23):

Рис. 23

7) просмотрите сформированный объект «запрос» в режиме конструктора, нажав кнопку (рис. 24).

Рис. 24

Итак, в авиакомпаниях “Аэрофлот” и “Истлайн” имеются по одному транспортному самолету, а пассажирские - в авиакомпаниях “Аэрофлот”, “Истлайн”, “Внуковские авиалинии” и “AirFrance” в количестве 1, 1, 3, 2 соответственно.

Запрос4. Определить суммарное число посадочных мест всех самолетов заданной авиакомпании. Этот запрос реализуется с помощью объекта «запрос» на выборку с использованием групповых операций. Выполните этапы 1), 2) и 3) аналогично Запросу 1.

4) в строку “Поле” мышью перетащите необходимые поля со значениями номеров авиакомпаний и количеством посадочных мест (N_Comp из таблицы AviaPark, Kol_Pass из таблицы LA).

5) выполните команду Вид/Групповые операции. Заполните появившуюся строку в соответствии с образцом (рис.25);

6) бланк запроса приобретет вид, представленный на рис. 25. Рис.25

7) сохраните полученный объект «запрос» и запустите его нажатием кнопки .

Результат Запроса 4 имеет вид:

Одна из трактовок полученного результата запроса может быть следующей: авиакомпания “Аэрофлот” ежедневно может перевозить 150 пассажиров, авиакомпания “Внуковские авиалинии” - 450 пассажиров, “Авиакомпания Истлайн” - 120 пассажиров, авиакомпания “AirFrance” - 340 пассажиров.

Запрос5. Составить список моделей самолетов по всем авиакомпаниям, имеющих максимальную вместимость.

Этот запрос реализуется с помощью объекта «запрос» на выборку, но в отличие от реализации, приведенных выше Запроса1, Запроса2 и Запроса4, источником данных являются объект «запрос» и объект «таблица». Это обусловлено тем, что сначала необходимо определить максимальную вместимость, а затем использовать полученное значение в качестве условия отбора записей из объекта «таблица».

1) создайте в режиме конструктора и сохранитеобъект «запрос» по объекту «таблица» LA, представленный на рис.26 и определяющий максимальную вместимость самолетов, эксплуатирующихся во всех авиакомпаниях (Запрос51);

2) выполнив созданный объект «запрос», убедитесь в том, что он работает правильно и выдает следующие данные (рис. 27):

Рис. 26

Рис. 27

3) создайте в режиме конструктора объект «запрос», реализующий основной Запрос5. Для этого в качестве исходных данных в область запроса добавьте объекты «таблица» AviaPark и LA из вкладки “Таблицы” и объект «запрос» Запрос51 из вкладки “Запросы” диалогового окна.

4) с помощью мыши установите связь между полями Max-Kol_Pass (Запрос51) и Kol_Pass (объект «таблица» LA) (рис.17). Установление этой связи и определенная ранее связь между объектами объект (AviaPark и LA) определяет условие выбора из объектов «таблица» AviaPark только тех записей о самолетах, принадлежащих различным авиакомпаниям, у которых число посадочных мест совпадает с вычисленным значением (Max-Kol_Pass) в Запросе51.

5) в строку “Поле” мышью перетащите необходимые поля со значениями номеров авиакомпаний, моделью самолетов и количеством посадочных мест (N_Comp из объекта «таблица» AviaPark, Name_LA и Kol_Pass из объекта «таблица» LA). Объект «запрос» выглядит следующим образом (рис. 28);

Рис. 28

6) сохраните объект «запрос» и выполните его кнопкой или двойным щелчком на его имени во вкладке «Запросы». Результат будет следующим (рис. 29):

Рис. 29

Таким образом, только две авиакомпании (Аэрофлот и AirFrance) обладают самолетами с максимальной вместимостью. Заметим, что, если бы у той или другой авиакомпании было несколько подобных самолетов, то в результирующей таблице каждый из них занял отдельную строку.