Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка на лабораторные.doc
Скачиваний:
70
Добавлен:
01.05.2014
Размер:
3.26 Mб
Скачать

Порядок выполнения работы.

  1. Работа с данными при помощи запроса - выборки.

Запустите Access. Откройте БД Teach . Щелкните по корешку Запрос, а затем по кнопке Создать и выберите способ создание запроса в режиме конструктора, без помощи Мастера.

    1. Создание запроса на основе одной таблицы БД.

Пусть надо выяснить, какие дисциплины и в каких группах ведет преподаватель Никитин Е.В. Из списка таблиц в окне Добавление таблицы выберите DIS_GR и щелкните по кнопке Добавить. Закройте окно. В окне запроса на выборку:

  • Перетащите из таблицы или выберите из раскрывающихся списков в бланке QBE запроса последовательно поля PR, DIS, GR.

  • - В условие отбора для поля PR введите “Никитин Е.В.”.

  • Закройте окно конструирования запроса, сохраните запрос под именем Nik.

  • Выполните запрос, дважды щелкнув по его имени в списке запросов, убедитесь, что результирующая таблица содержит 3 столбца: Ф.И.О., Дисциплина, Группа и 2 строки.

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

  • Сохраните запрос под именем Nik2. Для этого выполните команду ФайлСохранить как.

  • Выполните запрос Nik2, оцените результат.

  • Перейдите еще раз в режим конструирования запроса Nik и поменяйте значение в строке Условие отбора для поля PR на параметр [ФИО преподавателя?].

  • Сохраните запрос под именем PR.

  • Выполните запрос PR несколько раз, вводя разные фамилии и инициалы преподавателей.

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

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

  • Щелкните по корешку Запрос. Выберите ручной (без помощи Мастера) способ создания нового запроса, из списка таблиц выберите PREP. Щелкните по кнопке Добавить и закройте окно добавления.

  • Оказавшись в окне конструирования запроса, поместите в бланк QBE запроса 2 поля: Categ и Nagr.

  • Щелкните по кнопке панели инструментов. В бланке QBE запроса должна появиться новая строка – «Групповая операция».

  • Для поля Categ оставьте в этой строке установку по умолчанию (Группировка), а для поля Nagr выберите из списка функцию агрегирования MAX.

  • Измените свойство «Подпись поля» для поля Nagr на «Максимальная нагрузка» с помощью команды ВидСвойства.

  • Сохраните запрос под именем QGR1 и выполните его.

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

  • Вместо MAX для поля Nagr выберите Выражение и введите в строку «поле» выражение

  • MAX([Nagr])-MIN([Nagr]).

  • Для поля Categ в строке «Групповая операция» должно быть «Группировка», а в строке Условие отбора введите <> “профессор”.

  • Сохраните запрос под именем QGR2, выполните его и оцените результаты.

    1. Создание многотабличного запроса.

Пусть требуется получить ответ на вопрос, какие преподаватели ведут дисциплину ОП и имеют нагрузку не более 700 часов. Для создания такого запроса потребуются таблицы PREP и DIS_GR.

  • Щелкните по корешку Запрос, затем по кнопке Создать и выберите строку Конструктор.

  • В открывшемся окне добавления таблицы выберите таблицы PREP и DIS_GR. Проверьте правильность установки связей между ними. Связь должна быть 1:n.

  • Перетащите в бланк QBE запроса поля FIO и Nagr из таблицы PREP и поле DIS из таблицы DIS_GR.

  • Щелкните по индикатору «Вывод на экран» поля DIS, чтобы сбросить флажок, поле не должно появиться в результате запроса.

  • В строке «Условие отбора» для поля Nagr укажите <=700, а для поля DIS введите “ОП”.

  • Закройте окно конструирования запроса, сохраните запрос под именем MT1.

  • Выполните запрос. Результат должен содержать три строки.

    1. Использование Мастера запросов.

      1. Найдите с помощью Мастера всех преподавателей, которые ничего не преподают. Для этого:

  • Добавьте в таблицу PREP 2-3 строки с новыми фамилиями.

  • В окне создания запроса выберите из списка мастеров «Записи без подчиненных».

  • Укажите, что таблица, в которой исследуются записи, - это PREP, а подчиненная ей таблица - DIS_GR.

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

  • Попросите Мастера показать вам созданный запрос в режиме конструктора (Изменение структуры запроса), а затем выполните его. Результатом запроса должен быть список преподавателей с указанием их категорий, который вы внесли в таблицу PREP перед началом работы с Мастером.

      1. Создайте с помощью Мастера перекрестный запрос на базе таблицы Pred, которая находится в БД Dis. Результатом такого запроса должна быть таблица, названия строк которой – это названия предметов, а названия столбцов – номера семестров, на пересечении строк и столбцов должно находиться количество часов, отводимых на данный предмет в данном семестре.

  • Импортируйте таблицу Predв БД Teach.

  • Дополните ее данными таким образом, чтобы некоторые предметы читались в нескольких семестрах.

  • В окне БД выберите корешок Запросы и щелкните по кнопке Создать.

  • В списке типов запросов выберите Перекрестный запрос.

  • В открывшемся диалоговом окне выберите таблицу Pred, перейдите в следующее окно.

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

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

  • В качестве функции для вычисления значений, находящихся на пересечении строк и столбцов, нужно выбрать сумму (Sum). Индикатор вычисления итогового значения для каждой строки должен быть установлен в "Да", перейдите в следующее окно.

  • Завершите формирование запроса, задав ему имя CrossQ, посмотрите, как выглядит результат запроса.

  1. Модификация данных при помощи запросов - действий.

    1. Запрос на создание новой таблицы.

Мы уже использовали этот тип запроса в лабораторной работе 2 для создания таблицы, являющейся соединением таблиц Prep и Dis_Gr. Теперь используем такой запрос для получения из перекрестного запроса CrossQ таблицы Pred1 с полями: Предмет, Всего часов. Для этого:

  • Находясь в окне БД, выберите корешок Запросы и щелкните по кнопке Создать.

  • В режиме конструктора выберите запрос CrossQ в качестве основы нового запроса и добавьте его в окно запроса.

  • Создайте запрос - выборку с полями, содержащими коды или названия предметов и общее число часов, отводимых на каждый предмет, которое содержится в поле итоговых значений запроса CrossQ, сохраните новый запрос под именем CreateQ, проверьте правильность его выполнения.

  • Преобразуйте полученный запрос в запрос на создание таблицы (ЗапросСоздание таблицы…), указав для создаваемой таблицы имя Pred1. Новая таблица создается в БД Teach.

  • Выполните запрос и убедитесь, что в БД Teach появилась новая таблица Pred1.

  • Переименуйте поля полученной таблицы в Предмет и Всего часов соответственно.

    1. Запрос на обновление.

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

  • Находясь в окне БД Teach, создайте запрос – выборку, чтобы отобрать из таблицы Prep всех ассистентов, сохраните запрос под именем Update и убедитесь в правильности его выполнения.

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

  • В бланке QBE-запроса появится строка «Обновление», на пересечении этой строки со столбцом Nagr введите выражение [Nagr] * 1,1.

  • Сохраните изменения, выполните запрос и убедитесь, что ожидаемые изменения в таблице Prep произошли.

    1. Запрос на добавление

Данные или их часть могут добавляться в таблицу из другой таблицы этой или другой базы данных. Можно также добавить в таблицу одну строку, задав значения полей в виде констант непосредственно в бланке QBE - запроса. Воспользуемся этой возможностью для добавления в таблицу Pred1 строки: Основы экономики, 40. Для этого:

  • Откройте окно конструирования нового запроса и выберите команду ЗапросДобавление.

  • В появившемся диалоговом окне введите имя таблицы, в которую будут добавляться данные, это таблица Pred1.

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

  • В строку «Поле» в столбец Предмет поместите значение “Основы экономики”, а в столбец Всего часов – значение 40.

  • Сохраните запрос под именем InsertQ и выполните его.

  • Убедитесь, что в таблице Pred1 появилась новая строка.

    1. Запрос на удаление

Такой запрос предназначен для удаления из указанной таблицы всех строк или строк, соответствующих заданному условию. Удалим, например, из таблицы Pr_Dis все строки, касающиеся преподавателя Малышева. Для этого:

  • Создайте новый запрос-выборку в режиме запроса, добавив в окно запроса таблицу Pr_Dis и перетащив поочередно все поля этой таблицы в бланк QBE – запроса, в строку «Условие отбора» поля FIO необходимо ввести "Малышев С.В.".

  • Сохраните запрос под именем DelQ и выполните его, чтобы убедиться в том, что выбираются строки, удовлетворяющие условию.

  • Преобразуйте запрос - выборку в запрос на удаление, выполнив команду ЗапросУдаление.

  • Сохраните изменения и выполните запрос, убедитесь, что информация о Малышеве исчезла из таблицы.