Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratorna #2.doc
Скачиваний:
1
Добавлен:
22.04.2019
Размер:
686.08 Кб
Скачать

ЛАБОРАТОРНА РОБОТА №5.

Тема: Створення запитів.. Використання фільтрів

Мета: Навчитися створювати запити, використовувати фільтри

Прилади та обладнання: IBM PC, OC Windows NT.

Хід роботи:

Виконати приклади створення запитів

У базі даних "Борей" створено 21 запит різного типу, які можна використати для ознайомлення з можливостями створення запитів у програмі Access 2000. Відкривши запит у режимі конструктора, користувач побачить структуру створеного запиту.

Запропоновані нижче приклади розглядають способи створення нових запитів до таблиць навчальної бази даних "Борей", а також пояснюють деякі специфічні елементи структури уже існуючих запитів.

Для створення нових запитів доцільно створити копію файла бази даних "Борей", яка знаходиться у файлі Борей.mdb, оскільки в результаті виконання вправ можна порушити структури об'єктів та зв'язки між таблицями, а також цілісність даних.

Приклад 1 Створення запиту на відображення окремих стовпців таблиці та збереження такої вибірки як окремої таблиці

Створимо запит Телефони клієнтів на основі даних таблиці Клиєнти. який відображатиме лише назву клієнта, його телефон та факс.

Для створення такого запиту, скористаємось майстром простих запитів, у першому вікні майстра у полі Таблицы и запросы виберемо зі списку об'єктів елемент Таблица:

" Клиєнти ", а серед усіх доступних полів виберемо Название, Телефон та Факс. У наступному вікні запиту змінимо назву запиту на Телефони клієнтів та задамо опцію, яка дозволить змінити макет запиту. Після цього відкриється вікно конструктора запиту (мал. 3.21).

Після цього виберемо у списку кнопки Тип запроса елемент Создание таблици та введемо у діалоговому вікні Создание таблицьі назву створюваної таблиці - Клієн-

ти (телефони). Запустивши створений запит на виконання, програма повідомить про те, що в нову таблицю бази даних буде вмішено 91 запис.

Після закриття вікна конструктора запиту та підтвердження для збереження змін, на вкладці запитів БД з'явиться запитала утворення таблиці з відповідною пікто­грамою, а на вкладці таблиць - нова таблиця Клієнти (телефони), у якій знаходяться записи про всіх клієнтів, але відображено лише поля телеіронів та факсів. У конструкторі таблиці можна змінити підписи полів.

Приклад 2-- Створення критеріїв пошуку для запитів на вибірку

2.1. Створимо запити до таблиці Товари, які вибиратимуть записи, що відповідають заданим критеріям:

а) товари певної категорії (наприклад, молочні продукти) (запит Молочні продукти);

6) усі товари, крім заданої категорії {наприклад, крім молочних проектів) (запит Не молочні продукти):

в) товари, кількість яких на складі перевішує 100 одиниць (запит Більше 100):

г) товари, кількість яких вимірюється.е штуках (запит Штуки)',

д) товари, ціна яких знаходиться в діапазоні 100-200 p. (запит діапазон цін).

а) Інформацію про категорії товарів знаходимо у таблиці Типи ~ молочним продуктам відповідає цифра 4.

У таблиці Товари ідентифікатор тину знаходиться у полі Тип, якому у структурі таблиці відповідає поле КодТи-па. Це є поле підстановок даних полів КодТипа та Категория Таблиця Типи: на вкладці Подстановка у рядку властивостей Источник строк (мал. 3.22) знаходиться вираз, який вказує на те, що дані поля беруться з полів таблиш Типи; цю інформацію також можна отримати у вікні Инструкция SQL:

построитель запросов, яке відкриється після натискання кнопки побудовувача виразів рядка Источішк строк').

Для створення запиту скористаємось конструктором, У вікно якого помстимо всі поля таблиці Товари. Оскільки умова для відбору даних накладається на поле, яке є ідентифікатором типу (КодТипа), це поле потрібно додатково помістити на бланк запиту, знявши опцію для його виведення на екран та ввівши критерій відбору - цифру 4 (код типу для молочних продуктів). Додатково можна задати сортування за алфавітом для поля назв товарів Марка (також знявши параметр відображення на екрані для цього поля). Вікно конструктора запиту матиме вигляд, показаний на мал. 3.23.

Після виконання запиту, на екрані з'явиться динамічна таблиця, у якій будуть знаходитись відсортовані за алфавітом 10 записів молочних продуктів. |

У цій таблиці поля Марка та Тип також відображені на екрані, хоча на бланку конструктора запиту для цих полів відповідна опція не була задана. Це пояснюється тим, що у першому стовпчику бланку у рядку Поле стоїть вираз Товарьі.*, а це означає, що у результаті виконання запиту повинні відображатися усі поля таблиці.

Якщо, наприклад, потрібно було б не відображати якесь поле (У нашому випадку - КодТипа), тоді треба було перенести кожне поле таблиці окремо на бланк конструктора запиту (кожне поле при цьому займало би окремий стовпчик бланку), та зняти опцію на відображення конкретного поля.

Збережіть запит під назвою Молочні продукти.

б) Якщо у вибірку повинні ввійти усі записи, крім тих які відповідають певній умові, тобто треба створити вибірку за точним незбіганням даних у полі, то при написанні критерію використовують символ незбігання < >, який можна застосовувати до різних типів полів - текстових, числових, логічних, дати. Зокрема, якщо потрібно створити запит, який виводитиме записи усіх товарів, крім молочних продуктів, то в комірці, де записується умова для поля КодТипа повинен стояти вираз <>4.

Задамо сортування записів за категоріями. Для цього знищимо на бланку конструктора запиту поле Марка, а порядок сортування визначимо у полі КодТипа.

Після виконання запиту на екрані відобразиться 67 впорядкованих за категоріями записів з інформацією про товари усіх типів, крім молочних продуктів. Збережіть запит з назвою Не молочні продукти, використовуючи команду Файл => Сохранить как.

в) Якщо потрібно вибрати записи про товари таблиці Товари, кількість яких на складі перевищує 100 одиниць, то у стовпці поля НаСкладе бланку конструктора запиту потрібно ввести умову >100. Утвориться запит Більше 100.

г) Для створення критеріїв відбору записів часто використовуються оператори Like, Between, And, Or та символи шаблону * та ? (аналогічно як у випадку фільтрування таблиці). Щоб відобразити записи про товари таблиці Товари, кількість яких вимірюється в штуках, у стовпці поля ЕдиницаИзмерения записують критерій Like "*штук*". Збережіть запит під назвою Штуки.

д) Умова на поле Цена, за допомогою якої при виконанні запиту відображатимуться записи про товари, ціна яких Находиться в діапазоні 100-200 p., матиме вигляд:

>100 And <200 або Between 100 And 200.

Збережіть запит під назвою Діапазон ціни.

2.2 Створимо запит до таблиці Закази, який вибиратиме записи про виконані замовлення протягом 1997 p. (запит Діапазон дати).

Щоб відібрати записи про виконані замовлення протягом 1997 року, потрібно накласти на поле ДатаИсполнения таблиці Закази, умову:

>=#01.01.97# And <#01.01.98# або Between #01.01.97# And #01.01.98#.

Зауваження

——————— При написанні виразів значення дати записується між

спеціальними символами (#).

Утвориться запит Діапазон дати, який відобразить 398 з 830 записів таблиці Закази.

Зауваження ...

——————— Для відображення декількох діапазонів значень критерій

кожного діапазону записують в окремому рядку

2 3. Створимо запит до таблиці Сотрудники, який вибиратиме записи працівників, у яких немає телефону (запит Неповні дані).

Для виявлення незавершених (чи неповних) записів використовується умова Is Null. Отже, у нашому запиті на поле Телефон повинна накладатися умова Is Null.

Зауваження Для того, щоб відобразити лише працівників, у яких є телефон, повинна виконуватись умова Is Not Null.

Приклад 3. Створення параметричного запиту.

3.1. Створимо параметричний запит Параметр, який створюватиме таблгщю Категорія-товар, у яку ввійдуть записи про товар заданої користувачем категорії.

Якщо потрібно, щоб відображалася уся інформація про товар, то такий запит можна створити на основі запиту Молочні продукти створеного у Прикладі 2. На місці умови у бланку запиту достатньо ввести вираз: [Введіть код категорії товару]. Крім того, потрібно змінити назву таблиці, яка утворюватиметься після його виконання (Категорія-товар). Якщо ж достатньо, щоб відображалась лише певна інформація про кожне найменування товару, то доцільно використати конструктор простих запитів, у якому вибрати лище окремі поля таблиці Товари (наприклад, Марка, Код-Типа, Цена, ПоставкиПрекращени). У конструкторі запиту на місці умови для поля КодТипа треба записати вираз [Bвeдіть код категорії товару], задати відповідний тип запиту (запит на створення таблиці) та назву таблиці, яка утворюватиметься після виконання запиту.

Зауваження. При створенні параметричних запитів у квадратних дужках можна записувати будь-яку інформацію, що відо-

бражатиметься у діалоговому вікні Введите значение параметра, яке з'являється при його запуску.

Під запуску запиту на виконання відкриється діало­гову вікно (мал. 3.24), в яке потрібно ввести цифру - номер категорії товару.

При повторному виконання цього запиту програма повідомлятиме про знищення таблиці Категорія-товар. Користувач після цього може ввести у діалогове вікно код іншої категорії та створити нову таблицю з іншими даними.

Зауваження. При перегляді таблиці Категорія-товар видно, що поля

КодТипа та ПоставкиПрекращеньї не успадкували всіх властивостей цих полів таблиці Товари

3.2. Створимо запит до таблиці Закази, який вибиратиме записи про виконані замовлення протягом заданого періоду (запит Діапазон дати-параметричний).

Для такого запиту використовують оператори діапазону Between та And. У нашому випадку на місці критерію відбору інформації у полі ДатаИсполнения повинен стояти вираз:

Between [Початок діапазону:] and [Кінець діапазону:].

Приклад 4. Створення запитів із застосуванням групових операцій

Створимо параметричний запит Аналіз наявних товарів, який обчислюватиме кількість найменувань заданої користувачем категорії наявних на складі товарів, а також визначатиме мінімальну та максимальну ціну товару вибраної категорії (на основі таблиці Товари).

Створимо спочатку запит Наявні товари на складі, який вибиратиме з таблиці Товари записи лише тих найменувань, які є на складі (вікно конструктора запиту по-казано на мал. 3.25).

За допомогою майстра на основі цього запиту створимо новий (Аналіз наявних товарів), на бланку якого будуть знаходитись лише ті поля, які братимуть участь в аналізі даних (КодТипа та Цена, причому поле Цена повинно повторюватися тричі, оскільки потрібно обчислювати кількість, знаходити мінімальне та максимальне значен-ня). Включивши опцію для використання групових операцій (кнопка Групповьіе операции панелі інструментів), у рядку Групповая операция бланку запиту задамо наступні параметри: для поля КодТипа - Группировка, для трьох полів Цена - Count, Min і Мах відповідно. Оскільки наш запит повинен бути параметричним для задання значення коду типу категорії товару, то для поля КодТипа потрібно передбачити появу діалогового вікна Введите значение параметра. Після цього вікно конструктора запиту матиме вигляд, показаний на мал. 3.26-

Після запуску на виконання цього запиту, з'явиться діалогове вікно для введення коду категорії, а потім динамічна таблиця, яка міститиме 1 запис: назву категорії, кількість найменувань на складі даної категорії, а також ціна найдешевшого та найдорожчого товару з цієї категорії

Приклад 5. Створення запиту з обчислювальними полями

А) Створення нового поля

Створимо запит Надбавка, який обчислюватиме 15% надбавку на ціну кожного товару та відображатиме цю інформацію у окремому полі динамічної таблгщі

Спочатку створимо запит на вибірку для таблиці Товари, який міститиме поля: КодТовара, Марка, Цена. Далі на перетині першого вільного стовпчика та рядка Поле запишемо вираз: [Цена]*0,15. Після натискання клавіші [Enter], програма вставить перед введеним виразом назву нового поля Виражение1. Цю назву можна змінити на Надбавка - назву нового поля, в якому відображатиметься нова ціна. Вікно бланку конструктора матиме вигляд, показаний на мал. 3.27.

У динамічній таблиці результату виконання запиту з'явиться нове поле, якого не було у вихідній таблиці.

Зауваження. Зверніть увагу на те, що обчислювальне поле не успадковує властивостей поля Цена, тобто для нього не встановлено грошового формату- Щоб змінити формат поля, потрібно у вікні конструктора запиту викликати кон-текстне меню поля Надбавка і вибрати елемент Свойства та задати відповідний формат.

Збережіть запит під назвою Надбавка.

Б) Оновлення даних

Припустимо, іцо потрібно підняти ціну усіх товарів таблиці Товари на 5%, тобто однаково змінити всі дані поля.

Зауваження Скільки після оновленії всі старі дані знищуються і їх не можна відновити, то іперед створенням запиту на оновлення рекомендується створити копію таблиці Товари (наприклад Товари-копія).

На бланку конструктора запиту на оновлення повинні знаходитися лише ті полія, дані яких потрібно змінити. Тому на бланку запиту до таблиці Товари-копія повинно знаходитись лише поле Цена. Після вибору зі списку кнопки Тип запроса елемента Обновление на перетині рядка Обновление, який після цьго з'явиться, та стовпчика Цена введемо вираз: [Цена]* 1,05.

Виконання такого запиту приведе до того, що у таблиці Товари_копія всі ціни будуть збільшені на один і той самий коефіцієнт - 0,05.

Збережіть запит під назвою Нова ціна. Кожне наступне виконання цього запиту збіліьшуватиме ціну на 5%.

В) Операцц з текстовими полями

Створимо запит Категорія+код, який обєднає інформацію двох полів таблиці Типи (поле Категория і КодТипа) в одному полі (Нове поле).

Програма Access 2000 дозволяє виконувати логічні операції не лише з числовими даними, а й з текстовими полями. Створимо за допомогою майстра запит до таблиці Типи в який ввійдуть поля Категория і КодТипа. У режимі конструктора задамо вираз, який визначатиме нове поле:

. [Категория] & "-(" & [КодТипа] & ")",

де символ "-" означає пробел.

Назвемо новостворене поле Нове поле. Виконання такого запиту призведе до появи нового поля, де знаходиться інформація про категорію товару, а в дужках відповідно код типу.

Приклад 6. Створення у запитах виразів за допомогою побудовувача

А) Створення простого виразу

Обчислимо суму замовлень кожного клієнта (на основі записів таблиці Закази).

Оскільки ціни на товари, величина замовлення та розмір знижки для кожного найменування знаходяться в таблиці Заказано, а інформація про замовлення окремим клієнтом (товар та кількість) знаходиться у таблиці Закази, то запит повинен включати поля двох зв'язаних таблиць.

Вартість замовлення одного найменування обчислюється за формулою:

[Цена]*[Количество]*(1-[Скидка]/100). '

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

Просумувавши для кожного клієнта вартість замовлених товарів (використовуючи функцію групових операцій - Sum) отримаємо вартість замовлення кожного клієнта.

У базі даних "Борей" створимо запит Вартість замовлень, в структуру якого ввійде лише поле КодКлиента (таблиці Закази).

у вікно конструктора запиту потрібно додати таблицю Заказано, оскільки саме поля цієї таблиці повинні утворити обчислювальне поле.

Зауваження При додаванні таблиці у вікні конструктора запиту автоматично відобразиться зв'язок типу "один-до-багатьох", який зв'язує дані двох таблиць

У першому порожньому стовпці бланку конструктора запиту створимо нове поле Вартість, значення якого обчислюватимуться за наведеною вище формулою.Для створення такого виразу використаємо побудовувач виразу.Для цього, перебуваючи у комірці, де треба створити вираз, викличемо побудовувач за допомогою кнопки Построить панелі інструментів. У верхнє поле вікна побудовувача введемо знак рівності (з клавіатури або за допомогою кнопки середньої частини вікна). У лівій нижній частині вікна побудовувача виберемо папку Таблиці, а вній таблицю Заказано. Із середньої нижньої частини вікна виберемо поле Цена та перенесемо його у вікно побудовувача (двічі клацнувши по полю або натиснувши кнопку Вставить). Аналогічно будуємо вираз далі. У результаті цього у вікні побудовувача (мал. 3.28) з'явиться вираз.

= [Заказано]![Цена]*[Заказано]![Коли чество] * (1- [Заказано]![Скидка] /100 )

Натиснувши кнопку ОК вікна побудовувача, даний вираз переміститься у комірку бланку запита. Змінимо назву поля на Вартість, а у вікні властивостей поля (яке відкриється через відповідну команду контекстного меню поля) формат поля на грошовий.

Запустивши на виконання такий запит, отримаємо динамічну таблицю, в якій кожному клієнту відповідатимуть декілька записів з порахованою вартістю кожного окремого замовлення.

Для того, щоб просумувати усі замовлення для кожного клієнта, у запиті Вартість замовлень підключимо групові операції (за допомогою кнопки Групповьіе операции) та виберемо функцію додавання для поля Вартість, Вікно конструктора запиту матиме вигляд, наведений на мал. 3.29.

Зауваження При повторному відкритті конструктора запиту на бланку у комірці з обчислювальним полем буде знаходитись вираз:

Вартість: Sum([Заказано]![Цена]*[Заказано]![Количество]*

(1 -[Заказано]![Скидка]/100)),

а в рядку групових операцій - елемент Вьіраженне. Програма сама змінила вираз врахувавши операцію додавання

Б) Запити бази даних "Борей"

Аналогічним до створеного запиту Вартість замовлень є уже створений у базі даних "Борей" запит Промежуточная сумма заказа, яка відображає сумарну величину кожного замовлення (групування відбувається по полу КодЗаказа).

Зауваження функція Ccur у виразі задає грошовий формат для результату обчислень.

Для ілюстрації запитів з обчислювальними полями, вирази яких створюють за допомогою побудовувача вира­зів, варто також розглянути запит Продажи товаров в 1997, який створено на основі зв'язаних таблиць Типи, Товари, Заказано, Закази. Запит обчислює суми продажу кожного найменування по кварталах 1997 року.

Обчислювальне поле у стовпчику ПродажиТоваров таке саме, як і поле ПромежуточнаяСумма запиту Промежуточная сумма заказа. Для визначення кварталу продажу використано функцію DatePart.

Зауваження Функція DatePart визначає ціле число, яке відповідає вибраній даті, залежно від заданих параметрів (див. довідку програми Access).

У нашому випадку, функція DatePart ("q";[ДатаИсполнения]) виведе число, яке відповідатиме номеру кварталу (параметр q) для кожного значення поля ДатаИсполнения. Об'єднавши це число за допомогою символу об'єднання &

із словом Кв, отримаємо вираз на зразок “Кв 1 . Отже, у обчислювальному полі, яке повинно відображати номер кварталу, розміщено вираз:

КварталИсполнения: "Кв" & DatеРагt("q";[ДатаИсполнения])

Обмеживши виведення записів відповідним діапазоном дат, створений запит виводитиме дані про те, на яку суму було реалізовано кожного товару у 1997 p. щокварталу.

На основі полів цього запиту створено інший запит -Продажи по типам в 1997.

Варто також ознайомитись із структурою запиту Продажи по годам, який створений на основі полів таблиці Закази та запиту Промежуточная сумма заказа. Цей запит відображає записи виконаних замовлень таблиці Закази, протягом певного проміжку часу. Часовий діапазон задається початковою та кінцевою датами, які вводяться у поля діалогового вікна параметричного запиту. Умова

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]