ЛАБОРАТОРНА РОБОТА №6.
Тема: Створення форм .Робота з формами в Access.
Мета: Навчитися створювати форми та працювати з формами
Прилади та обладнання: IBM PC, OC Windows NT.
Хід роботи:
Виконати приклади створення форм
Приклад 1. Створення форми, яка використовуватиметься лише для доповнення даних таблиці
Створимо форму для доповнення таблиці Клиенты бази даних "Борей " новими записами, які міститимуть інформацію про фізичні особи (не організації)
Форма повинна містити усі поля таблиці Клиенты, крім Должность, Обращаться к, Факс. Для створення такої форми найкраще скористатися автоформою (в стовпчик), а потім внести зміни у проект в режимі конструктора.
Вибравши у діалоговому вікні Новая форма (мал. 4.15) елемент Автоформа: в столбец та таблицю Клиенты, програма створить нову форму, у режимі конструктора знищимо елементи керування (написи та поля), які відповідають полям Должность, Обращаться к, Факс. Після зміни розташування елементів керування, які залишилися в проекті форми, збережемо форму з назвою Покупці. За допомогою створеної форми можна переглянути або відредагувати усі записи таблиці Клиенты не залежно від того, чи вони відображають інформацію про фізичну особу (окремого покупця), чи юридичну (організацію).
У режимі конструктора відредагуємо створену форму, змінивши її зовнішній вигляд та задавши такі властивості, щоб вона була придатною для виконання поставленого завдання, а саме для введення нових даних.
Для зміни зовнішнього вигляду скористаємося функцією автоформатування, яка почне працювати після натискання кнопки _ Автоформат панелі інструментів. Виберемо стиль оформлення (наприклад, Официальный).
Задамо параметри форматування елементам форми, виділяючи їх окремо або групами:
• змінимо тексти у написах на українські;
• задамо для написів шрифт Агіаl, а для даних у полях форми - Times New Roman. Розмір шрифту у всіх елементах повинен бути 12;
• задамо для поля, в яке заноситиметься інформація поля КодКлиента, шрифт Arial, курсив, розмір 14, зелений колір символів;
• для всіх елементів керування задамо розмір, який відповідатиме розміру даних (пункт по размеру данных списку Размер контекстного меню елементів).
• підберемо розміри областей форми так, щоб усі елементи повністю відображатися у ній.
• відкриємо форму у режимі форми, задамо оптимальний розмір для перегляду на екрані та збережемо форму. Після повторного відкриття, форма матиме задані розміри на екрані.
• змінимо властивості форми у відповідному вікні властивостей, а саме:
оскільки за замовчуванням у рядку заголовку форми міститься стара назва Клиенты, змінимо її на Покупці - введемо нову назву у комірку Подпись;
• наша форма повинна використовуватись лише для доповнення даних, тому у комірці Ввод данных введемо параметр Да;
можна заховати кнопки переходу у вікні форми, задавши у крмірці Кнопки перехода опцію Нет.
• у області заголовку помістимо напис Нувий покупець та
задамо для нього наступні параметри:
шрифт - Arial, курсив, 14 пт;
вирівнювання тексту напису - по центру;
розмір - за розміром даних;
змінимо колір фону напису та перемістимо напис так, щоб він опинився посередині області заголовку.
Після внесення описаних вище змін, форма матиме вигляд, подібний до наведеного на мал. 4.30.
a
Мал. 4.30.Вигляд форми Покупці: а) у режимі конструктора: б) у режимі форми
У формі можна створити поле зі списком, яке відображатиме значення поля Страна, причому при введенні даних нового покупця можна буде назву існуючої країни вибрати зі списку, а назву нової - ввести з клавіатури.
Дня створення такого поля натиснемо кнопку панелі елементів, яка відповідає елементу Поле со списком, та додамо цей елемент в області даних форми; при цьому запуститься майстер створення нового елемента.
Послідовність створення елемента за допомогою майстра такий:
•перший крок - вибираємо спосіб формування списку значень поля; у нашому випадку - об'єкт буде використовувати значення таблиці (мал. 4.31);
другий крок - вибираємо таблицю, в якій знаходиться потрібне поле (Клиенты);
третій крок - зі списку полів таблиці Клиенты вибе ремо поле Страна, дані з якого будуть утворювати список поля;
четвертий крок - задаємо ширину стовпця списку
• п'ятий крок - задаємо опцію, яка дозволить запам'ятати у полі Страна вибране зі списку значення, тобто активізуємо радіо клавішу Сохранить в поле (мал. 4.32);
• шостий крок - задаємо текст напису, який буде зв'язаний з полем (у нашому випадку-Країна).
Мол. 4.31. Діалогове вікно майстра для вибору способу формування значень списку
Після завершення роботи майстра знищимо поле Страна, яке було у проекті форми, розмістимо створене поле зі списком у потрібному місці форми та від форматуємо його, задавши ті ж параметри, що й для інших полів форми.
Мол. 4.32. Вікно майстра для вибору способу збереження даних списку
Для того, щоб створене поле зі списком виконувало задані в умові задачі функції, а саме дозволяло доповнювати список назв країн, змінимо деякі його властивості: v на вкладці Макет (ці властивості впливають на відображення значень у полі):
Число столбцов - 1;
Ширина столбцов - 2,5 см;
Ширина списка - 2,5 см;
на вкладці Данные:
Источник строк - SELECT [Клиенты].[Страна] FROM Клиенты;
Ограничиться списком - Нет; на вкладці Другие:
Имя - Країна
Для того, щоб у списку країн не повторювалися назви, використаємо предикат мови SQL - DISTINCT, який при виборі значень поля Страна назву кожної країни буде виводити лише один раз: у рядку властивості Источник строк (вкладка Данные вікна властивостей поля зі списком) запишемо вираз
SELECT DISTINCT [Клиенты].[Страна] FROM Клиенты.
У діалоговому вікні Последовательность перехода (яке відкриється після виконання команди Вид => Последовательность перехода) задамо послідовність переходу між полями форми відповідно до відображення їх на екрані, а саме: Код клієнта, Ім'я, Адреса, Місто, Область, Індекс, Країна, Телефон.
Збережемо зміни у проекті форми.
Відкривши форму в режимі форми, на екрані з'являється чистий бланк для занесення інформації. Клавішею [Tab] чи [Enter] можна переміщатися по полях форми та заповнювати її даними. Для внесення даних про країну можна скористатися існуючим списком або ввести назву нової країни з клавіатури. Після повторного відкривання форми, назва введеної країни уже знаходитиметься
у списку.
Заповнивши останнє поле, для збереження інформації у таблиці достатньо натиснути клавішу [Tab] чи
[Enter].
У створеній формі немає кнопок переходу, тому редагувати та переглядати записи таблиці у ній не можна. Для таких цілей можна скористатися створеною у навчальній базі даних формою Клиенты.
Використовуючи форму Покупці, доповніть таблицю Клиенты декількома записами.
Приклад 2. Створення складеної форми
Створимо форму, за допомогою якої можна було б поновлювати базу даних одночасно інформацією про постачальників (таблиця Поставщики) та про товари (таблиця Товары), які вони постачають.
У БД ''Борей" створені форми, які дозволяють переглядати список існуючих товарів (Список товаров), доповнювати даними окремо таблиці товарів (Товары) та постачальників (Поставщики).
Форми Список товаров та Товары існують незалежно одна від одної, а форма Поставщики окрім того, що дозволяє переглядати, редагувати та доповнювати записи відповідної таблиці, може також використовуватись для перегляду та доповнення записів таблиці Товары, які стосуються конкретного постачальника (для цього використовуються кнопки форми Просмотр товаров і Ввод товаров, які виводять на екран форми Список товаров та Товары). Отже, форма Поставщики зв'язана з формами Список товаров та Товары.
Створимо складену форму, яка виводитиме на екран усі поля, потрібні для одночасного заповнення обох таблиць, тобто створюючи новий запис про постачальника (таблиця Поставщики), можна зразу ж заносити інформацію про запропонований ним товар у таблицю Товары.
Почнемо процес створення такої форми з використання майстра форм. Виберемо назви усіх обов'язкових полів таблиць Поставщики та Товары (найкраще використати усі поля таблиць) та задамо у діалоговому вікні майстра опцію Подчиненные формы. Далі виберемо табличний вигляд для представлення даних у підпорядкованій формі, а також стандартний стиль оформлення. Головну форму назвемо Постачальник_новии, а підлеглу - Товар_новий. Відкривши створену форму у режимі конструктора, знищимо деякі необов'язкові поля, а саме: Обращаться к, Должность та Домашняя страница. Змінимо тексти у написах на українські, а також можемо змінити параметри шрифту для елементів керування головної форми. Збільшимо напис, який відповідає підлеглій формі (Товар_новии) на Новий товар та від форматуємо його так, щоб утворювався ефект тіні (зразок відредагованої форми показано на мал. 4.33). У головній формі не варто редагувати підлеглу форму.
Мал. 4.33. Зразок створеної складеної форми
Підлегла форма існує на вкладці Формы вікна бази даних як самостійний об'єкт (Товар_новии), тому для редагування відкриємо її у режимі конструктора.
Оскільки в процесі роботи майстра ми задали табличний вигляд дчя підлеглої форми, то розміщення полів у конструкторі не відіграє ніякої ролі. Знищимо елементи керування, які зв'язані з необов'язковими полями Поставщик, Единица измерения, Ожидается, Минимальный запас, Поставки прекращены. Також можна знищити усі написи у заголовку та не відображати цю область в режимі конструктора, оскільки вона не відображатиметься у підлеглій формі. Переглянувши підлеглу форму у режимі таблиці, можна підібрати оптимальну ширину дтя кожного стовпця, а в режимі конструктора змінити підписи цих стовпців, відповідно до мал. 4.33 (властивість Имя вкладки Другие або Все вікна властивостей елемента керування).
Після внесення усіх змін збережемо підлеглу форму та переглянемо головну форму, підібравши оптимальний розмір для елемента керування, який повинен відображати таблицю підлеглої форми.
У режимі форми створена форма виглядатиме подібно до показаної на мал. 4.33.
Повернувшись в режим конструктора, заховаємо кнопки переходу (рядок Запись) у підпорядкованій формі, оскільки вони перевантажують форму. Для того, щоб переглянути увесь список товарів, яким забезпечив постачальник фірму, можна використати бігунок рядка прокрутки, який з'являється на екрані.
При заповненні такої форми, доповнюється таблиця постачальників та товарів, причому доповнені записи зберігають зв'язок, який встановлений між цими таблицями.
Використовуючи складену форму Постачальник_новии створіть запис для нового постачальника та 2-3 записи товарів, який доставив цей постачальник. Доповніть також список товарів, які доставляє уже існуючий постачальник, новими найменуваннями..
Приклад 3 Створення складеної форми з обчислювальним полем
Створимо форму (бланк замовлення) для роздрібних покупців, ціна реалізації яких на 10% більша за початкові/ ціну. Якщо вартість покупки перевищує 1000 у.о., то надається знижка у розмірі 2% на загальну вартість замовлення (у базі даних "Борей" передбачена можливість надання знижки на окремий товар).
Крок 1. Оскільки нас цікавить бланк замовлення лише для роздрібних покупців (для них поля Обращаться к та Должность приймають лише нульові значення), то для їх вибору з таблиці Клиенты потрібно створити запит 170-кущі_запит, який відображатиме усі не порожні поля, крім поля Факс, для яких вище згадані поля приймають нульове значення. Критерієм відбору у цьому випадку буде умова Is Null, яка накладається на поля Обращаться к та Должность.
Крок 2. Для обчислення вартості замовлення з урахуванням ціни реалізації, знижок на окремі найменування, знижки на сумарну величину замовлення та вартість замовлення з урахуванням сумарної знижки, створимо запит Замовлення_Сума, який міститиме поля таблиці Заказано (КодЗаказа, КодТовара, Цена, Количество, Скидка) та обчислювальне поле Вартість, у якому обчислюватиметься вартість замовленого товару (окремо кожного найменування) з урахуванням, знижки на товар у кожному замовленні. Обчислення здійснюватимуться за виразом [Цена]*[Количество]*(1-[Скидка]).
Вікно бланку запиту матиме вигляд, показаний на мал. 4.34.
Мал. 4.34. Вікно конструктора запиту Замовлення_Сума
Крок 3. Для створення форми скористаємось майстром форм, у якому:
• на першому кроці виберемо поля, дані яких відображатимуться у формі:
із запиту Продавці _запит - усі поля;
із запиту Замовлення_Сума - усі поля, крім КодЗаказа-,
з таблиці Заказы - поля КодЗаказа і ДатаИсполнения.
• на другому кроці задамо тип підлеглих форм, причому головною має виступати форма, у якій знаходяться поля запиту Покупецъ_запит (мал. 4.35), відповідно до запропонованого майстром вигляду представлення даних, бачимо, що у нашій формі буде дві підлеглі;
• на наступних кроках виберемо табличне представлення для підлеглих форм, а також стиль оформлення (наприклад рисунок суми) та збережемо створені форми під назвами: головна - Замовлення_роздріб, підлеглі - Номер замовлення та Товари_роздріб.
Мол. 4.35. Діалогове вікно майстра створення форми із заданим виглядом представлення даних
Крок 4. Процес редагування створеної форми почнемо з внесення змін у підлеглі форми, які можна по черзі відкрити (як окремі об'єкти бази даних) у режимі конструктора.
Редагування форми Номер_замовлення
Ця форма повинна відображати на екран код замовлення та дату його виконання, тому вона може бути подана у вигляді простої форми (у вікні властивостей форми для властивості Режим по умолчанию (вкладка Макет або Все) задамо значення Простая форма). Далі перенесемо написи з області заголовку у область даних, заховаємо область заголовку, змінимо текст у написах на український, від форматуємо усі елементи керування та збережемо ці зміни у формі. У режимі конструктора форма матиме вигляд, подібний до наведеного на мал. 4.36.
Мал. 4.36-Вікно конструктора підлеглої форми Номер замовлення
Оскільки основна форма буде використовуватись лише для створення нового замовлення, то у підлеглій формі Номер замовлення потрібно передбачити лише введення даних (властивість Ввод данных) та не відображати кнопки переходу (властивість Кнопки перехода), зменшивши тим самим розмір форми.
Редагування форми Товари__роздріб
Підлегла форма повинна відображати зміст замовлення: перелік найменувань, ціну кожного артикулу (яка повинна бути на 10% більша за гуртову), кількість замовлених товарів, розмір знижки на кожне найменування, а також вартість кожної партії товару з урахуванням знижки на товар.
Знищимо написи в області заголовку форми (оскільки у основній формі підлегла Товари_роздріб відображатиметься у вигляді таблиці, розміщення полів та їх розміри у проекті не відіграють ролі, тому немає потреби форматувати їх зовнішній вигляд). При введенні даних про замовлений товар потрібно враховувати 10% надбавку на ціну товару, тому змінимо поле КодТовара на поле зі списком, у якому відображатиметься назва товару та його роздрібна ціна.
Мал. 4.37. Вікно проектування запиту
Для цього знищимо поле КодТовара, а на його місці за допомогою майстра створення елементів керування, створимо поле зі списком, який складатиметься з двох полів таблиці Товары (Марка та Цена).
Задавши опцію для збереження даних зі списку у полі КодТовара, збережемо створене поле зі списком з назвою Найменування. У вікні властивостей цього елемента змінимо назву поля на Найменування. Для того, щоб у списку відображалася роздрібна ціна, потрібно внести зміни у поле властивості Источник строк. Тут повинен знаходитись вираз, який збільшуватиме кожне значення поля Цена таблиці Товары на 10%.
Тому поміняємо назву поля і змінимо властивість Источник строк. Для цього, натиснувши кнопку побудовувача виразів у рядку цієї властивості, завантажимо конструктор запиту: відкриється вікно (мал. 4.37) конструктора інструкцій мови SQL.
Створимо нове обчислювальне поле Ціна_р, в якому повинна відображатись ціна для роздрібних покупців (введемо вираз [Цена]*1,1 у перший вільний стовпчик бланку конструктора запиту). Задамо грошовий формат для цього поля і змінимо підпис поля на Ціна. Знімемо опцію для відображення старого поля Цена, а задамо відображення створеного обчислювального поля. Зберігши проект запиту, ми побачимо внесеш зміни у рядку властивості: тут опиниться вираз SELECT Товары. КодТовара, Товары.Марка, [Цена]*1.1 AS Ціна_р FROM Товары.
Змінимо назви полів підлеглої форми (властивість Имя), а саме: Код товара на Найменування, Цена на Ціна, Количество на К-стъ, Скидка на Знижка. Відобразивши форму в режимі таблиці пересвідчимося, що назви стовпців змінені. У цьому ж режимі розмістимо поля в послідовності Найменування, Ціна, К-сть, Знижка, Вартість та підберемо ширину стовпців так, щоб інформація у них добре відображалася (найкраще використати функцію автоматичного підбору ширини стовпців та задати якомога меншу ширину, оскільки у такому відображенні форма буде знаходитися у головній формі).
Перейдемо в режим конструктора форми та в області примітки створимо поле, в якому обчислюватиметься сумарна вартість замовлення з урахуванням знижок на окремі товари.
Для цього створимо поле, значення якого обчислюватимуться за виразом: =Зит([Вартість]), задамо формат Фиксированный та назвемо поле Всього. Оскільки таке поле створено у примітці, то в табличному режимі воно не відображатиметься, але воно буде джерелом іншого поля, яке ми створимо у головній формі для виведенні даних про вартість замовлення. Після цього вигляд форми у режимі конструктора може бути подібним до показаного на мал. 4.38.
Mai. 4.38. Вікно конструктора підлеглої форми Товари роздріб