Створення форми з підформою (форма з відношеннями "один-до-багатьох")

Застосовується до
Access для Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

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

У цій статті

Відомості про підформи

Підформа – це форма, вставлена в іншу форму. Первинна форма називається головною формою, а вкладена форма – підформою. Комбінація з форми та підформи іноді називається ієрархічною формою, формою зі зв'язком "головний – другорядний" або формою зі зв'язком "батьківський – дочірній".

Підформи особливо добре підходять, коли потрібно відображати дані з таблиць або запитів зі зв'язком "один-до-багатьох". У цьому типі зв'язку значення первинного ключа кожного запису в головній таблиці збігається зі значенням у відповідних полях кількох записів пов'язаної таблиці. Наприклад, можна створити форму з даними кожного співробітника та підформу з їхніми замовленнями. Дані в таблиці ­"Співробітники" – це сторона зв’язку "один", а дані в таблиці "Замовлення" – "багато". Дані в таблиці "Замовлення" – це сторона зв'язку "багато", оскільки кожен співробітник може мати кілька замовлень.

Організаційна діаграма зі стандартним висячим макетом

  1. У головній формі відображаються дані зі сторони зв'язку "один".

  2. У підформі відображаються дані зі сторони зв'язку "багато".

Головна форма та підформа у формі цього виду пов’язані таким чином, що в підформі відображаються лише записи, пов’язані з поточним записом у головній формі. Наприклад, коли в головній формі відображаються відомості про Марину Шевченко, у підформі – лише її замовлення. Якщо форма та підформа не зв'язані, у підформі відображаються всі замовлення, а не лише замовлення Марини.

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

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

Примітка.

  • Щоб отримати найкращі результати, перш ніж виконати процедуру, описану в цій статті, задайте зв’язки таблиці. Це дасть змогу Access автоматично створювати зв’язки між підформами та головними формами. Щоб переглянути, додати або змінити зв'язки між таблицями в базі даних, на вкладці " Знаряддя бази даних " у групі "Зв'язки " натисніть кнопку " Зв'язки".
  • Коли елемент керування «Підформа» використовує як вихідний об'єкт форму, він містить поля, вставлені у форму. Її можна переглядати у вигляді однієї форми, неперервної форми або даних у табличному поданні. Однією з переваг створення підформи на основі об'єкта форми є можливість додавання до підформи обчислюваних полів, наприклад [Quantity] * [Unit price].
  • Дані в табличному поданні або подання зведеної таблиці можна вставити у форму, створивши елемент керування «Підформа», вихідним об'єктом якого є таблиця або запит. Докладні відомості див. у розділі Додавання пов'язаних даних до форми без створення підформи.

На початок сторінки

Створення або додавання підформи

Наведена нижче таблиця дасть змогу визначити оптимальну процедуру з урахуванням ситуації.

Сценарій Рекомендована процедура
Необхідно, щоб програма Access створила головну форму й підформу та зв’язала підформу з головною формою. Створення форми з підформами за допомогою майстра форм
Необхідно використати наявну форму як головну форму, але програма Access має створити нову підформу та додати її до головної форми. Додавання однієї або кількох підформ до наявної форми за допомогою майстра підформ
Необхідно використати наявну форму як головну форму та додати до цієї форми одну або кілька наявних форм як підформи. Створення підформи перетягуванням однієї форми в іншу

Створення форми, яка містить підформи, за допомогою майстра форм

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

  1. На вкладці Створення в групі Форми натисніть кнопку Майстер форм.

  2. На першій сторінці майстра в розкривному списку Таблиці та запити виберіть таблицю або запит. У цьому прикладі для створення форми «Співробітники», у якій замовлення кожного співробітника відображаються в підформі, виберіть « Таблиця: Працівники » (сторона «один» у зв'язку «один-до-багатьох»).

    Примітка.

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

  3. Двічі клацніть у цій таблиці або запиті ті поля, які потрібно включити.

  4. На цій же сторінці майстра в розкривному списку Таблиці та запити виберіть іншу таблицю або запит у списку. У цьому прикладі виберіть таблицю "Замовлення" (сторона "багато" у зв'язку "один-до-багатьох").

  5. Двічі клацніть у цій таблиці або запиті ті поля, які потрібно включити.

  6. Якщо натиснути кнопку Далі й перед запуском майстра правильно настроєно зв’язки, у майстрі з’явиться запитання Яким чином переглядати дані? (мається на увазі, за якою таблицею або запитом). Виберіть таблицю на стороні "один" зв’язку "один-до-багатьох". У цьому прикладі, щоб створити форму "Працівники", виберіть елемент "За працівниками". У майстрі з’явиться невелика схема форми. Сторінка має виглядати, як на цьому знімку екрана:

    Знімок екрана: сторінка підформи майстра форм

    Поле в нижній частині схеми форми відповідає підформі.

    Примітка.

    Якщо в майстрі не відображається запитання Яким чином переглядати дані?, це свідчить про те, що програма Access не виявила зв’язок "один-до-багатьох" між вибраними таблицями або запитами. Майстер продовжить процедуру, але Access не додасть підформу до форми. Ви можете натиснути кнопку Скасувати та перевірити зв’язки таблиць, перш ніж продовжити.

  7. У нижній частині сторінки майстра виберіть Форма з підформою (підформами) та натисніть кнопку Далі.

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

  9. На наступній сторінці майстра виберіть стиль форматування форми й натисніть кнопку Далі. Якщо вибрати Таблиця на попередній сторінці, вибраний стиль форматування застосується також і до підформи.

  10. На останній сторінці майстра введіть необхідні назви форм. Програма Access присвоює імена формам на основі цих введених назв і підписує підформу відповідно до назви, введеної для підформи.

  11. Укажіть, де відкривати форму: у поданні форми, щоб можна було переглядати або вводити відомості, чи в режимі конструктора, де можна змінювати її макет, а потім натисніть кнопку "Готово". Access створить дві форми – одну для головної форми, яка містить елемент керування "Підформа", і одну власне для підформи.

На початок сторінки

Додавання однієї або кількох підформ до наявної форми за допомогою майстра підформ

Скористайтеся цією процедурою, щоб додати одну або кілька підформ до наявної форми. Для кожної підформи у програмі Access можна на вибір створити нову форму або використати вже наявну форму.

  1. Клацніть правою кнопкою миші наявну форму в області переходів, а потім виберіть Конструктор.
  2. На вкладці " Конструктор форм " у групі "Елементи керування " клацніть стрілку розкривного списку для відображення колекції "Елементи керування " та переконайтеся, що вибрано параметр "Застосувати майстри елементів керування ".
  3. На вкладці " Конструктор форми " в групі "Елементи керування" натисніть кнопку "Підформа/підзвіт ".
  4. Клацніть форму, у якій потрібно розмістити підформу.
  5. Дотримуйтеся вказівок у майстрі. Коли ви натиснете кнопку Готово, Access додасть до форми елемент керування "Підформа". Якщо ви вирішили створити форму для підформи, а не використовувати наявну форму, Access створить об’єкт форми та додасть його до області переходів.

Створення підформи перетягуванням однієї форми в іншу

Цю процедуру слід використовувати, якщо потрібно використати наявну форму як головну форму та додати до неї одну або кілька наявних форм як підформи.

  1. В області переходів клацніть правою кнопкою миші форму, яку потрібно використовувати як головну форму, і виберіть пункт Подання макета.
  2. Перетягніть форму, яку слід використовувати як підформу, з області переходів до головної форми. Access додасть елемент керування "Підформа" до головної форми та прив’яже цей елемент керування до форми, перетягнутої з області переходів. Крім того, Access спробує зв’язати підформу з головною формою на основі зв’язків, визначених у базі даних.
  3. Повторіть цей крок, щоб додати всі додаткові підформи до головної форми.
  4. Щоб переконатися в успішності зв’язування, на вкладці Основне у групі Подання натисніть кнопку Вигляд і виберіть пункт Подання форми, а потім скористайтеся маркером виділення запису головної форми, щоб вибрати кілька записів. Якщо самі фільтри підформи задані правильно для кожного співробітника, процедуру завершено.

Якщо попередній тест завершився невдачею, це свідчить про те, що програмі Access не вдалося визначити, як зв'язати підформу з головною формою, а Link Child Fields властивості та Link Master Fields властивості елемента керування «Підформа» залишилися пустими. Ці властивості слід задати вручну. Для цього слід зробити ось що.

  1. Клацніть правою кнопкою миші форму в області переходів, а потім виберіть Конструктор.

  2. Клацніть елемент керування «Підформа» один раз, щоб його виділити.

  3. Якщо область завдань аркуша властивостей не відображається, натисніть клавішу F4 .

  4. У вікні властивостей перейдіть на вкладку Дані.

  5. Натисніть кнопку «Побудувати » поруч із полем Link Child Fields властивості. З'явиться діалогове вікно засобу з'єднання полів підформи .

  6. У розкривних списках Основні поля та Дочірні поля виділіть поля, з якими потрібно зв’язати форму, а потім натисніть кнопку OK. Якщо ви не знаєте, які поля слід використовувати, натисніть кнопку Запропонувати, щоб програма Access спробувала визначити зв’язані поля.

    Порада.

    Якщо поля, які потрібно використати для зв'язування форми, не відображаються, можливо, потрібно відредагувати джерело записів головної або дочірньої форми, щоб переконатися, що поля зв'язування включено. Наприклад, якщо форма створена на основі запиту, слід переконатися, що поле зв’язування представлене в результатах запиту.

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

Відкриття підформи в новому вікні в режимі конструктора

Якщо потрібно внести зміни до підформи під час роботи в головній формі в режимі конструктора, відкрийте підформу в окремому вікні.

  1. Клацніть підформу, щоб вибрати її.
  2. На вкладці "Конструктор форм" у групі "Знаряддя " натисніть кнопку "Підформа в новому вікні".

На початок сторінки

Змінення вигляду підформи за промовчанням

У разі додавання підформи до форми в елементі керування «Підформа/підзвіт» відображається підформа, що відповідає властивості підформи Default View . Для цієї властивості можна задати наведені нижче значення.

  • Одна форма
  • Неперервна форма
  • Дані в табличному поданні
  • Розділена форма

Якщо спочатку створити підформу, для цієї властивості може бути встановлено значення "Безперервні форми " або "Одна форма". Проте якщо задати Default View властивості підформи Datasheetзначення , підформа відображатиметься в головній формі як дані в табличному поданні.

Щоб задати Default View властивість підформи, зробіть ось що.

  1. Закрийте всі відкриті об’єкти.

  2. В області переходів клацніть правою кнопкою миші підформу та виберіть Конструктор.

  3. Якщо аркуш властивостей ще не відображається, натисніть клавішу F4 .

  4. Переконайтеся, що в розкривному списку у верхній частині вікна властивостей вибрано елемент Форма.

  5. На вкладці Форма вікна властивостей укажіть для властивості Подання за промовчанням те подання, яке необхідно використовувати.

    Примітка.

    Якщо подання, яке необхідно використовувати, відсутнє у списку, переконайтеся, що Allow...View для властивості цього подання встановлено значення "Так". Наприклад, якщо поданням за промовчанням для форми має бути Дані в табличному поданні, переконайтеся, що для властивості Дозволити подання таблиці задано значення Так.

  6. Збережіть і закрийте підформу, а потім відкрийте головну форму для перевірки результатів.

На початок сторінки

Щоб відображати пов'язані дані, не завжди потрібно створювати окремий об'єкт форми. Наприклад, якщо у формі, відкритій у поданні макета або режимі конструктора, перетягнути таблицю або запит з області переходів до форми, програма Access створить елемент керування "Підформа/підзвіт", у якому відображатимуться дані з цього об’єкта. Властивість об'єкта Default View визначає спосіб відображення даних. Зазвичай для нього задається значення "Таблиця даних", але для Default View властивості таблиці або запиту можна задати значення "Одна форма", " Розділена форма" або "Безперервні форми", що забезпечує додаткову гнучкість відображення пов'язаних даних у формі.

Примітка.

Змінюючи Default View властивість таблиці або запиту, можна задати спосіб їх відображення під час відкриття з області переходів або подання в елементі керування «Підформа/підзвіт». Оскільки змінення настройок подання для таблиці іноді може призводити до плутанини під час відкриття таблиці з області переходів, радимо для цієї процедури замість таблиці використовувати запит.

На початок сторінки