
- •Федеральное агентство по образованию
- •Содержание
- •Цель курсовой работы
- •Краткие теоретические сведения о субд Access 2000
- •Реляционные базы данных и субд
- •Объекты субд Access 2000 и их назначение
- •Пример выполнения задания на курсовую работу
- •Словесное описание предметной области и постановка задачи
- •Определение логической модели базы данных.
- •Разработка приложения к базе данных
- •Реализация процедур добавления, удаления и обновления информации
- •Реализация процедур группового добавления, удаления и обновления информации
- •Поиск информации в базе данных
- •Автоматизация поиска, обновления и манипулирования данными с помощью кнопочной формы ms Access
- •Автоматизация поиска данных с помощью объекта ms Access «макросы»
- •Оформление объекта «отчет» c помощью «мастера отчетов»
- •Оформление результатов поиска с помощью объекта «отчет» в режиме “конструктор”
- •Запуск приложения
- •Организация защиты информации
- •Контрольные вопросы
- •Список литературы
Поиск информации в базе данных
В 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) обладают самолетами с максимальной вместимостью. Заметим, что, если бы у той или другой авиакомпании было несколько подобных самолетов, то в результирующей таблице каждый из них занял отдельную строку.