Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

БД-Лабораторные работы / БД-Практическая работа№9

.doc
Скачиваний:
76
Добавлен:
04.06.2015
Размер:
877.57 Кб
Скачать

БД

Практическая работа № 9

ЦЕЛЬ

Получение навыков создания запросов на изменение.

Теоретический материал

Запросы на изменение

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

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

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

  • На добавление записей. Запрос на добавление добавляет группу записей из одной или нескольких таблиц в конец одной или нескольких таблиц. Например, появилось несколько новых клиентов, а также база данных, содержащая сведения о них. Чтобы не вводить все данные вручную, их можно добавить в таблицу «Клиенты».

  • На создание таблицы. Запрос на создание таблицы создает новую таблицу на основе всех или части данных из одной или нескольких таблиц. Запрос на создание таблицы полезен при создании таблицы для экспорта в другие базы данных Microsoft Access или при создания архивной таблицы, содержащей старые записи.

Ограничения обновления полей

Запрос на обновление нельзя использовать для обновления данных в полях указанных ниже типов.

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

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

  • Поля с типом данных "Счетчик".    Значения в полях с типом данных "Счетчик" изменяются только при добавлении записи в таблицу.

  • Поля в запросах уникальных значений и уникальных записей.    Значения в таких запросах суммируются. Некоторые значения представляют собой одну запись, другие — несколько. Обновить эти значения невозможно, т. к. нельзя определить, какие записи были исключены как повторяющиеся. Это ограничение распространяется и на запросы на обновление, и на обновление данных вручную путем ввода значений в форму или таблицу.

  • Поля в запросе на объединение.    Данные из полей в запросе на объединение невозможно обновить, т. к. каждая запись, которая содержится в двух или более источниках данных, появляется в результатах запроса на объединение только один раз. Поскольку некоторые повторяющиеся записи удаляются из результатов, Access не может обновить все необходимые записи.

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

Таблица 1 - Примеры выражений в строке Обновление.

Выражение

Результат

"Продавец"

В поле типа "Текстовый" заменяет текстовое значение строкой "Продавец".

#10.08.2007#

В поле типа "Дата/время" изменяет значение даты на "10-авг-07".

Да

В поле типа "Да/Нет" изменяет значение Нет на Да.

"PN" & [ИнвНомер]

Добавляет буквы "PN" к началу каждого указанного инвентарного номера.

[Цена] * [Количество]

Перемножает значения полей с именами "Цена" и "Количество".

[СтоимостьДоставки] * 1,5

Увеличивает значения в поле "СтоимостьДоставки" на 50 процентов.

DSum("[Количество] * [Цена]","Заказано", "[КодТовара]=" &  [КодТовара])

Если значение поля "КодТовара" в текущей таблице совпадает со значением поля "КодТовара" в таблице "Заказано", данное выражение обновляет итоговые значения продаж, рассчитывая их как произведение значений в полях "Цена" и "Количество". Выражение использует функцию DSum, так как она может выполнять операции с несколькими таблицами и полями таблиц.

Right([Индекс], 5)

Обрезает (удаляет) левые символы в текстовой или числовой строке, оставляя пять правых символов.

IIf(IsNull([Цена]), 0, [Цена])

Заменяет пустое (неизвестное или неопределенное) значение нулем (0) в поле с именем "Цена".

ХОД РАБОТЫ

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

Задание 1. Создать запрос, обновляющий значения таблицы книги, так чтобы для литературы, срок эксплуатации, который превысил 5 лет, стоимость книги уменьшалась на 5%.

  1. Чтобы работали запросы на обновление проверьте, включены ли макросы VBA.

  1. Добавляем в бланк запроса поля: Код книги, Название,

Стоимость книги и Дата издания из таблицы Книги.

  1. Создать вычисляемое поле – Срок эксплуатации.

  2. Вычислить срок эксплуатации.

  3. Ввести в строку Условие отбора, для вывода книг срок эксплуатации которых больше 5.

  4. Выполните запрос, просмотрите отображенные записи, если таких записей нет, исправьте некоторые данные в поле «Дата издания» таблицы «Книги».

  5. Перейдите в режим конструктора запроса.

  6. Измените тип запроса с Выборки на Обновление, в группе Тип запроса включить Обновление

  7. После изменения типа запроса в появившейся строке «Обновление» для столбца «Стоимость книги» пишем нужную формулу [Стоимость книги]*0,95.

  8. Выполните запрос. В появившемся диалоговом окне подтвердите обновление записей. После нажатия кнопки «Да», данные в таблице должны обновиться.

  9. Чтобы проверить обновились ли данные в таблице, снова переключаем тип запроса на выборку и выполняем запрос, получаем, что цена книги снизилась на 5%.

  10. Сохраните запрос как Задание4_1.

Задание 2. Создать запрос, обновляющий значения таблицы книги, так чтобы журналы, срок эксплуатации, которых превысил 10 лет, местом хранения стал архив.

  1. Добавьте необходимые поля, из таблицы Книги.

  2. Создайте вычисляемое поле.

  3. Установите необходимые условия отбора.

  4. Выполните запрос, просмотрите отображенные записи, если таких записей нет, исправьте некоторые данные.

  5. Измените тип запроса на Обновление.

  6. После изменения типа запроса в появившейся строке «Обновление» для столбца «Место хранения» пишем “2” (2- обозначение места хранения – архив).

  7. Выполните запрос. В появившемся диалоговом окне подтвердите обновление записей. После нажатия кнопки «Да», данные в таблице должны обновиться.

  8. Чтобы проверить обновились ли данные в таблице, снова переключаем тип запроса на выборку и выполняем запрос.

  9. Сохраните запрос как Задание4_2.

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

  1. Добавьте поля, из таблицы Книги: Название, Вид печатной продукции.

  2. Выполните запрос, просмотрите отображенные записи.

  3. Измените тип запроса на Обновление.

  4. После изменения типа запроса в появившейся строке «Обновление» для столбца «Вид печатной продукции» введите выражение Lеft([Книги]![Вид_печaтной_прoдукции];2).

  5. Выполните запрос. В появившемся диалоговом окне подтвердите обновление записей. После нажатия кнопки «Да», данные в таблице должны обновиться.

  6. Чтобы проверить обновились ли данные в таблице, снова переключаем тип запроса на выборку и выполняем запрос.

  7. Сохраните запрос как Задание4_3.

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

  1. Добавьте поля, из таблицы Книги: Код книги, Название.

  2. Выполните запрос, просмотрите отображенные записи.

  3. Измените тип запроса на Обновление.

  4. После изменения типа запроса в появившейся строке «Обновление» для столбца «Предметная область» введите выражение

"Предмет-" & [Книги]![Прeдмeтная_oбласть].

  1. Выполните запрос. В появившемся диалоговом окне подтвердите обновление записей. После нажатия кнопки «Да», данные в таблице должны обновиться.

  2. Чтобы проверить обновились ли данные в таблице, снова переключаем тип запроса на выборку и выполняем запрос.

  3. Сохраните запрос как Задание4_4.

Задание 5. Создайте запрос, удаляющий записи о брошюрах, срок эксплуатации которых больше 10 лет.

  1. Добавьте необходимые поля, из таблицы Книги.

  2. Создайте вычисляемое поле.

  3. Установите необходимые условия отбора.

  4. Выполните запрос, просмотрите отображенные записи, если таких записей нет, исправьте некоторые данные.

  5. Измените тип запроса на Удаление .

  6. После изменения типа запроса в появившейся строке «Удаление» для всех столбцов выбрать – Условие и в строке условие отбора указать необходимые условия.

  7. Выполните запрос. В появившемся диалоговом окне подтвердите удаление записей. После нажатия кнопки «Да», данные в таблице должны удалиться.

  8. Чтобы проверить удалились ли данные в таблице, снова переключаем тип запроса на выборку и выполняем запрос, данных не должно быть.

  9. Сохраните запрос как Задание4_5.

Задание 6. Создание запроса на создание таблицы Авторы – Книги, содержащую данные о авторах (Фамилия, имя, отчество) и книгах (Название, Предметная область, количество экземпляров).

  1. Создайте запрос на выборку, включив все необходимые поля.

  2. Выполните запрос, просмотрите отображенные записи, если таких записей нет, исправьте некоторые данные.

  1. На вкладке Конструктор в группе Тип запроса выберите команду Создание таблицы .

  1. В открывшемся диалоговом окне Создание таблицы, в поле Имя таблицы введите имя новой таблицы – Авторы-Книги.

  2. Нажмите кнопку Выполнить , а затем — кнопку Да для подтверждения операции.

  3. Новая таблица появится в списке таблиц.