- •Інструктивно-методична карта лабораторного заняття № 4
- •Вправа 9.3. Оновлення поля таблиці обчислюваним значенням
- •Вправа 9.4. Оновлення декількох полів таблиці
- •Вправа 9.5. Створення запиту на додавання
- •Вправа 9.6. Створення запиту на видалення
- •Вправа 10.1. Створення перехресної таблиці
- •Вправа 10.3. Створення перехресної таблиці в режимі конструктора
Вправа 9.3. Оновлення поля таблиці обчислюваним значенням
Розглянемо формування запиту на оновлення з використанням виразу на прикладі заповнення поля ГОДИНИ для лекційних занять в таблиці ВИВЧЕННЯ. Хай оновлення поля ГОДИНИ повинне проводитися за допомогою даних, обчислюваних на основі полів ЛЕК (годинник лекцій) і ЧС (число семестрів) з таблиці ПРЕДМЕТ. Розрахункове число годин по лекціях визначимо по формулі ЛЕК/ЧС.
Відповідно до задачі в записах лекційних занять таблиці ВИВЧЕННЯ необхідне відновити поле ГОДИНИ розрахунковим числом годин. Вибрати записи про лекційні заняття можна по значенню поля ВИДЗ цієї таблиці, оскільки в ньому вказаний вид заняття. Дані для розрахунку середнього числа годин містяться в таблиці ПРЕДМЕТ. Таким чином, запит повинен будуватися на основі таблиць ВИВЧЕННЯ і ПРЕДМЕТ.
Створіть запит на вибірку на основі таблиць ВИВЧЕННЯ і ПРЕДМЕТ.
Перетворіть його в запит на оновлення, натискуючи відповідну кнопку на панелі інструментів.
Включіть в бланк запиту поле, що обновляється, ГОДИНИ таблиці ВИВЧЕННЯ. В рядку Оновлення (Update Query) для цього поля введіть вираз [ЛЕК]/[ЧС]. Імена полів обов'язково укладайте в квадратні дужки.
Для відбору в таблиці ВИВЧЕННЯ записів, що обновляються, про лекційні заняття в бланк запиту включіть поле ВИДЗ і вкажіть в рядку Умову відбору (Criteria) значення — лек.
Виконайте запит, натиснувши кнопку Запуск (Run) або за допомогою команди Запит | Запуск (Query | Run). В діалоговому вікні з'явиться повідомлення про число записів, що обновляються.
Прогляньте вміст поля ГОДИНИ до і після оновлення, натискуючи кнопку Вид (View).
Щоб бачити результати оновлення в таблиці ВИВЧЕННЯ, відкрийте її одночасно із запитом.
При використовуванні в запиті на оновлення таблиць, що знаходяться відносно 1:M, обновляти можна тільки вміст стовпців таблиці із сторони "багато".
Вправа 9.4. Оновлення декількох полів таблиці
В базі даних є дві таблиці: ТОВАР з довідковими відомостями про кожне з товарів, у тому числі про його відпускну ціну (ЦІНА), і ВІДВАНТАЖЕННЯ, що містить відомості про кількість (КІЛ), ціну (ЦІНА_ОД) і вартість (ВАРТІСТЬ) відвантаженого товару. Таблиці знаходяться відносно 1:М, тобто по кожному товару проводилося декілька відвантажень, і між ними встановлений зв'язок по полю КОД_ТОВАРА. Припустимо, що змінилася ціна товару і необхідно в таблиці ВІДВАНТАЖЕННЯ в кожному записі із заданим кодом товару змінити ціну і підрахувати нову вартість відвантаженого.
Створіть запит на оновлення на основі двох таблиць: таблиці, що обновляється, ВІДВАНТАЖЕННЯ і таблиці ТОВАР, з якої вибирається нова ціна для розрахунку вартості відвантаженого товару.
Включіть в бланк запиту з таблиці ВІДВАНТАЖЕННЯ поля, що обновляються, ВАРТІСТЬ і ЦІНА. В рядок Оновлення (Update То) поля ВАРТІСТЬ введіть обчислюваний вираз [ЦІНА]*[ВІДВАНТАЖЕНО], визначальне його нове значення. Вираз можна створити за допомогою будівника виразів. В рядок Оновлення (Update То) поля ЦІНА_ОД ім'я поля [ЦІНА].
Зауваження
Значення, привласнювані полям таблиці, повинні бути сумісні з властивостями і накладеними обмеженнями на їх значення. Крім того, вони не повинні приводити до порушення цілісності даних. Інакше запит виконуватися не буде.
Для відбору записів, що обновляються, включіть в бланк запиту поле КОД-ТОВАРУ і введіть в рядок Умову відбору параметр [Код товару].
Виконайте запит. Введіть значення параметра Код товару відповідно до тих, що є в таблиці.
В діалоговому вікні з повідомленням про число записів, що обновляються, і питанням про продовження операції оновлення натисніть кнопку ОК.
Перейдіть в режим SQL. Еквівалентна запиту на оновлення інструкція UPDATE буде записана таким чином:
UPDATE ТОВАР INNER JOIN ВІДВАНТАЖЕННЯ ON
ТОВАР.КОД_ТОВАРУ = ВІДВАНТАЖЕННЯ.КОД_ТОВАРУ
SET ВІДВАНТАЖЕННЯ.ВАРТІСТЬ = [ЦІНА]*[ВІДВАНТАЖЕНО]
ВІДВАНТАЖЕННЯ.ЦІНА_ОД = [ЦІНА]
WHERE (((ТОВАР.КОД_ТОВАРУ)=[Код товару]));
Інструкція UPDATE обновляє вказані в пропозиції set поля (ВІДВАНТАЖЕННЯ.ВАРТІСТЬ, ВІДВАНТАЖЕННЯ.ЦІНА_ОД), привласнюючи значення заданих виразів ([ЦІНА]*[ВІДВАНТАЖЕНО] [ЦІНА]) у всіх записах, які задовольняють умові відбору, заданій в пропозиції where. Імена таблиць, що використовуються в запиті, і спосіб їх об'єднання задаються безпосередньо за ім'ям інструкції update.
Додавання даних з іншої таблиці
За допомогою Запиту на додавання (Append Query) проводиться додавання записів з таблиці з результатами запиту в таблицю бази даних. Тому в запиті повинні бути сформовані записи з полями, відповідними полям в доповнюваній записами таблиці бази даних.
Структура запису таблиці запиту може не повністю співпадати із структурою запису таблиці, в яку додаються записи. В записі запиту може бути менше полів, якщо на поля в таблиці, куди додаються записи, не накладена вимога по обов'язковості їх заповнення. Допускається невідповідність типів полів, якщо можливе перетворення типу даних одного поля в тип даних іншого поля. Крім того, в бланк запиту можуть бути включені поля, по яких задаються умови відбору.
