- •Практичне заняття №3 Створення багатотабличних форм
- •Теоретичні відомості
- •3.1 Створення підлеглих форм
- •3.1.2 Створення головної і підлеглої форм за допомогою Майстра автоформ
- •3.1.2. Використання Майстра форм для створення головної і підлеглої форм
- •3.1.3. Додавання підлеглої форми в головну форму
- •3.1.4. Скріплення головної і підлеглої форми
- •3.2. Створення багатосторінкових форм
- •2.1. Створення багатосторінкових форм з елементом Розрив сторінки
- •2.2 Створення багатосторінкової форми з вкладками
- •3.3. Спливаючі форми і вікна діалогу
- •3.4. Використання обчислень у формах
- •3.4.1 Створення обчислюваних полів
- •3.4.2. Створення обчислюваних полів для відображення підсумкових значень
- •3.4.3. Використання статистичних функцій у формах
- •3.5. Створення і застосування стилів оформлення форми
- •Порядок роботи
- •Вимоги до оформлення звіту
- •Контрольні запитання
3.4.2. Створення обчислюваних полів для відображення підсумкових значень
Можна створити обчислювані поля у формі, які міститимуть підсумкові значення для декількох записів. Наприклад, потрібно розрахувати суму рахунку або замовлення, підсумувавши дані по кожній позиції рахунки.
Для цього потрібно:
1. Створити в області приміток підлеглої форми, що містить позиції замовлення, обчислюване текстове поле. Значення цього поля і повинно містити підсумкову суму. У формі "Підлегла форма замовлень" це поле розраховується як сума значень поля "Відпускна ціна" для всіх позицій замовлення (рис.3.9).
2. Оскільки це поле не відображається, коли форма виводиться на екран в режимі таблиці, потрібно в головній формі створити ще одне обчислюване поле, для якого як джерело даних слід вказати підсумкове поле підлеглої форми (рис.3.10).
Рис.17. Обчислення підсумкового значення
Рис.18. Створення обчислюваного поля в головній формі
Особливістю створення підсумкового поля в підлеглій формі є те, що у функції sum. не можна використовувати ім'я обчислюваного елементу управління і можна використовувати тільки ім'я обчислюваного поля в базовому запиті. Якщо ж підсумовувані значення обчислюються прямо у формі, то у формулі для підсумкового поля доведеться повторити вираз для розрахунку цих значень. Наприклад, якби елемент управління Відпускна ціна розраховувався по тій же формулі у формі, тобто як джерело даних для нього стояв вираз
= Sum([Замовлено].[Ціна]*[Кількість]*(1–[Знижка])/100) *100,
то у властивості Дані (Control Source) для елементу управління "Проміжна сума" (Order Subtotal) довелося б ввести вираз
= Sum(Sum([Ціна]*[Кількість]*(1–[Знижка]) /100)*100).
Це ще один аргумент на користь того, що краще такі обчислення виконувати в базовому запиті.
3.4.3. Використання статистичних функцій у формах
При використанні статистичних функцій не враховуються записи, які містять порожнє значення (Null) в оброблюваних полях. Наприклад, вираз
Sum([B наявності]+[Прийнято] – [Відпущено] – [Замовлено])
буде повертати значення Null, якщо одне з полів, що беруть участь у виразі, містить порожнє значення. Щоб запобігти таким помилкам в обчисленнях, слід використовувати функцію Nz(), яка перетворить порожнє значення в нульове. Таким чином, опиcаний вище вираз виглядатиме так:
Sum(Nz([В наявності])+Nz([Прийнято])–Nz([Відпущено]) -Nz([Замовлено]))
У табл. 3.1 приведені найбільш часто використовувані у формах статистичні функції.
Таблиця 3.1. Статистичні функції
Функція |
Опис |
Sum() |
Сума значень поля |
Avg() |
Середнє значення поля |
Min() |
Мінімальне значення поля |
Мах Про |
Максимальне значення поля |
Count ( ) |
Кількість значень поля |
Dsumf) |
Сума значень у вказаній підмножині записів |
Dcount ( ) |
Кількість записів в підмножині |
Функція |
Опис |
DLookup |
Значення конкретного поля у вказаній підмножині записів |
Dmin (), Dmax () |
Мінімальне і максимальне значення поля у вказаній підмножині записів |
У таблиці приведені як звичайні статистичні функції, так і статистичні функції по підмножині. При цьому статистичні функції по підмножині використовуються, як правило, якщо потрібно обмежити набір оброблюваних записів, інакше використовують прості статистичні функції.
DLookup()
Зазвичай використовується для виводу у формі значення поля з таблиці, що не входить в базовий запит. Наприклад, у формі "Рахунок" можна відобразити додаткові поля з таблиці "Клієнти", які не включаються в базовий запит. Як значення властивості Дані обчислюваного елементу управління можна ввести наступний вираз:
=DLookup("[Адреса]", "[Клієнти]", "[Код організації] = " & _ Forms![Рахунок]![Код клієнта])
Критерієм для вибору запису з таблиці "Клієнти" буде поле Код клієнта у формі "Рахунок".
Dcount(), DSum()
У формі клієнта потрібно створити обчислювані поля для відображення кількості замовлень, зроблених клієнтом і загальної суми замовлень. Для цього потрібно створити два обчислювані текстові поля, а як значення властивості Дані ввести наступні вирази:
=DCount("[Номер замовлення]", "[Замовлення]", "[Код організації] = " &_Forms![Рахунок]![Код клієнта])
=DSum("[Сума до оплати]", "[Замовлення]", "[Код організації] = " &_Forms! [Рахунок]! [Код клієнта]')
Dmax()
Потрібно організувати лічильник в одному з полів форми, наприклад, номер замовлення повинен при введенні кожного нового запису збільшуватися на 1. Стандартний тип поля Лічильник (AutoNumber) не завжди підходить для цих цілей, оскільки поле такого типу не можна вводити уручну. Якщо можливе ручне коректування номерів замовлення, зручніше зробити звичайне числове поле, а властивість Значення за замовчуванням (Default) встановити наступним чином:
=Dmax("[Номер замовлення]", "[Замовлення]") + 1
