- •Глава 2
- •Порядок выполнения работы.
- •Задание для самостоятельной работы.
- •Приложение к лр №1
- •Лабораторная работа 2: Модификация структуры бд. Цель работы
- •Общие сведения.
- •Порядок выполнения работы.
- •Задание для самостоятельной работы.
- •Лабораторная работа 3. Корректировка данных. Цель работы
- •Общие сведения.
- •Порядок выполнения работы.
- •Задание для самостоятельной работы.
- •Лабораторная работа 4: Сортировка, индексация, поиск и фильтрация данных. Цель работы
- •Общие сведения.
- •Порядок выполнения работы.
- •Задание для самостоятельной работы.
- •Лабораторная работа 5: Импорт, экспорт и присоединение данных Цель работы
- •Общие сведения
- •Порядок выполнения работы.
- •Задание для самостоятельной работы.
- •Лабораторная работа 6: Создание запросов на языке qbe. Цель работы
- •Общие сведения.
- •Порядок выполнения работы.
- •Задание для самостоятельной работы.
- •Лабораторная работа 7: Создание экранной формы. Цель работы
- •Общие сведения.
- •Порядок выполнения работы.
- •Задание для самостоятельной работы.
- •Лабораторная работа № 8: Создание отчетов. Цель работ
- •Общие сведения.
- •Порядок выполнения работы.
- •Задание для самостоятельной работы.
- •Лабораторная работа № 9: Создание макросов. Цель работы
- •Общие сведения.
- •Порядок выполнения работы.
- •Задание для самостоятельной работы.
- •Лабораторная работа 10: Создание меню приложения. Цель работы
- •Общие сведения.
- •Порядок выполнения работы.
- •Задание для самостоятельной работы.
- •Лабораторная работа 11: Создание приложения. Цель работы
- •Общие сведения
- •Порядок выполнения работы
Порядок выполнения работы.
Работа с данными при помощи запроса - выборки.
Запустите Access. Откройте БД Teach . Щелкните по корешку Запрос, а затем по кнопке Создать и выберите способ создание запроса в режиме конструктора, без помощи Мастера.
Создание запроса на основе одной таблицы БД.
Пусть надо выяснить, какие дисциплины и в каких группах ведет преподаватель Никитин Е.В. Из списка таблиц в окне Добавление таблицы выберите DIS_GR и щелкните по кнопке Добавить. Закройте окно. В окне запроса на выборку:
Перетащите из таблицы или выберите из раскрывающихся списков в бланке QBE запроса последовательно поля PR, DIS, GR.
- В условие отбора для поля PR введите “Никитин Е.В.”.
Закройте окно конструирования запроса, сохраните запрос под именем Nik.
Выполните запрос, дважды щелкнув по его имени в списке запросов, убедитесь, что результирующая таблица содержит 3 столбца: Ф.И.О., Дисциплина, Группа и 2 строки.
Перейдите в режим конструирования запроса, щелкните по индикатору «Вывод на экран» поля PR, чтобы сбросить его, и установите сортировку по возрастанию для поля DIS.
Сохраните запрос под именем Nik2. Для этого выполните команду ФайлСохранить как.
Выполните запрос Nik2, оцените результат.
Перейдите еще раз в режим конструирования запроса Nik и поменяйте значение в строке Условие отбора для поля PR на параметр [ФИО преподавателя?].
Сохраните запрос под именем PR.
Выполните запрос PR несколько раз, вводя разные фамилии и инициалы преподавателей.
Создание итогового запроса.
Пусть надо выяснить, какова максимальная нагрузка преподавателей каждой из категорий.
Щелкните по корешку Запрос. Выберите ручной (без помощи Мастера) способ создания нового запроса, из списка таблиц выберите PREP. Щелкните по кнопке Добавить и закройте окно добавления.
Оказавшись в окне конструирования запроса, поместите в бланк QBE запроса 2 поля: Categ и Nagr.
Щелкните по кнопке панели инструментов. В бланке QBE запроса должна появиться новая строка – «Групповая операция».
Для поля Categ оставьте в этой строке установку по умолчанию (Группировка), а для поля Nagr выберите из списка функцию агрегирования MAX.
Измените свойство «Подпись поля» для поля Nagr на «Максимальная нагрузка» с помощью команды ВидСвойства.
Сохраните запрос под именем QGR1 и выполните его.
Оценив результаты запроса, создайте на его основе запрос, который позволяет получить разброс нагрузки (разницу между максимальной и минимальной) для преподавателей каждой категории кроме профессоров. Для этого внесите следующие изменения:
Вместо MAX для поля Nagr выберите Выражение и введите в строку «поле» выражение
MAX([Nagr])-MIN([Nagr]).
Для поля Categ в строке «Групповая операция» должно быть «Группировка», а в строке Условие отбора введите <> “профессор”.
Сохраните запрос под именем QGR2, выполните его и оцените результаты.
Создание многотабличного запроса.
Пусть требуется получить ответ на вопрос, какие преподаватели ведут дисциплину ОП и имеют нагрузку не более 700 часов. Для создания такого запроса потребуются таблицы PREP и DIS_GR.
Щелкните по корешку Запрос, затем по кнопке Создать и выберите строку Конструктор.
В открывшемся окне добавления таблицы выберите таблицы PREP и DIS_GR. Проверьте правильность установки связей между ними. Связь должна быть 1:n.
Перетащите в бланк QBE запроса поля FIO и Nagr из таблицы PREP и поле DIS из таблицы DIS_GR.
Щелкните по индикатору «Вывод на экран» поля DIS, чтобы сбросить флажок, поле не должно появиться в результате запроса.
В строке «Условие отбора» для поля Nagr укажите <=700, а для поля DIS введите “ОП”.
Закройте окно конструирования запроса, сохраните запрос под именем MT1.
Выполните запрос. Результат должен содержать три строки.
Использование Мастера запросов.
Найдите с помощью Мастера всех преподавателей, которые ничего не преподают. Для этого:
Добавьте в таблицу PREP 2-3 строки с новыми фамилиями.
В окне создания запроса выберите из списка мастеров «Записи без подчиненных».
Укажите, что таблица, в которой исследуются записи, - это PREP, а подчиненная ей таблица - DIS_GR.
В качестве полей, выводимых на экран, укажите фамилию и категорию преподавателя.
Попросите Мастера показать вам созданный запрос в режиме конструктора (Изменение структуры запроса), а затем выполните его. Результатом запроса должен быть список преподавателей с указанием их категорий, который вы внесли в таблицу PREP перед началом работы с Мастером.
Создайте с помощью Мастера перекрестный запрос на базе таблицы Pred, которая находится в БД Dis. Результатом такого запроса должна быть таблица, названия строк которой – это названия предметов, а названия столбцов – номера семестров, на пересечении строк и столбцов должно находиться количество часов, отводимых на данный предмет в данном семестре.
Импортируйте таблицу Predв БД Teach.
Дополните ее данными таким образом, чтобы некоторые предметы читались в нескольких семестрах.
В окне БД выберите корешок Запросы и щелкните по кнопке Создать.
В списке типов запросов выберите Перекрестный запрос.
В открывшемся диалоговом окне выберите таблицу Pred, перейдите в следующее окно.
В качестве заголовков строк выберите поле с кодом или названием предмета, перейдите в следующее окно.
Для использования в качестве заголовков столбцов выберите значения поля Семестр, перейдите в следующее окно.
В качестве функции для вычисления значений, находящихся на пересечении строк и столбцов, нужно выбрать сумму (Sum). Индикатор вычисления итогового значения для каждой строки должен быть установлен в "Да", перейдите в следующее окно.
Завершите формирование запроса, задав ему имя CrossQ, посмотрите, как выглядит результат запроса.
Модификация данных при помощи запросов - действий.
Запрос на создание новой таблицы.
Мы уже использовали этот тип запроса в лабораторной работе 2 для создания таблицы, являющейся соединением таблиц Prep и Dis_Gr. Теперь используем такой запрос для получения из перекрестного запроса CrossQ таблицы Pred1 с полями: Предмет, Всего часов. Для этого:
Находясь в окне БД, выберите корешок Запросы и щелкните по кнопке Создать.
В режиме конструктора выберите запрос CrossQ в качестве основы нового запроса и добавьте его в окно запроса.
Создайте запрос - выборку с полями, содержащими коды или названия предметов и общее число часов, отводимых на каждый предмет, которое содержится в поле итоговых значений запроса CrossQ, сохраните новый запрос под именем CreateQ, проверьте правильность его выполнения.
Преобразуйте полученный запрос в запрос на создание таблицы (ЗапросСоздание таблицы…), указав для создаваемой таблицы имя Pred1. Новая таблица создается в БД Teach.
Выполните запрос и убедитесь, что в БД Teach появилась новая таблица Pred1.
Переименуйте поля полученной таблицы в Предмет и Всего часов соответственно.
Запрос на обновление.
Такой запрос используется с целью внесения одинаковых изменений в несколько записей. Увеличим, например, на 10 процентов нагрузку всех ассистентов. Для этого:
Находясь в окне БД Teach, создайте запрос – выборку, чтобы отобрать из таблицы Prep всех ассистентов, сохраните запрос под именем Update и убедитесь в правильности его выполнения.
Преобразуйте созданный запрос в запрос на обновление, для этого, находясь в режиме конструирования запроса, из меню Запрос надо выбрать строку Обновление (ЗапросОбновление).
В бланке QBE-запроса появится строка «Обновление», на пересечении этой строки со столбцом Nagr введите выражение [Nagr] * 1,1.
Сохраните изменения, выполните запрос и убедитесь, что ожидаемые изменения в таблице Prep произошли.
Запрос на добавление
Данные или их часть могут добавляться в таблицу из другой таблицы этой или другой базы данных. Можно также добавить в таблицу одну строку, задав значения полей в виде констант непосредственно в бланке QBE - запроса. Воспользуемся этой возможностью для добавления в таблицу Pred1 строки: Основы экономики, 40. Для этого:
Откройте окно конструирования нового запроса и выберите команду ЗапросДобавление.
В появившемся диалоговом окне введите имя таблицы, в которую будут добавляться данные, это таблица Pred1.
В бланке QBE - запроса появится строка «Добавление», укажите в ней последовательно имена полей, выбирая их из разворачивающихся списков.
В строку «Поле» в столбец Предмет поместите значение “Основы экономики”, а в столбец Всего часов – значение 40.
Сохраните запрос под именем InsertQ и выполните его.
Убедитесь, что в таблице Pred1 появилась новая строка.
Запрос на удаление
Такой запрос предназначен для удаления из указанной таблицы всех строк или строк, соответствующих заданному условию. Удалим, например, из таблицы Pr_Dis все строки, касающиеся преподавателя Малышева. Для этого:
Создайте новый запрос-выборку в режиме запроса, добавив в окно запроса таблицу Pr_Dis и перетащив поочередно все поля этой таблицы в бланк QBE – запроса, в строку «Условие отбора» поля FIO необходимо ввести "Малышев С.В.".
Сохраните запрос под именем DelQ и выполните его, чтобы убедиться в том, что выбираются строки, удовлетворяющие условию.
Преобразуйте запрос - выборку в запрос на удаление, выполнив команду ЗапросУдаление.
Сохраните изменения и выполните запрос, убедитесь, что информация о Малышеве исчезла из таблицы.