Для відображення результатів обчислення можна використовувати обчислювані елементи керування для форм та звітів у базах даних Access. Наприклад, якщо у вас є звіт, в якому відображається кількість проданих товарів і ціна кожної одиниці, можна додати текстове поле, що обчислюється, яке множить ці два поля для відображення загальної ціни. Властивість Control Source текстового поля, що обчислюється, містить вираз, який множить два поля (кількість елементів в рази ціну за одиницю) для отримання результату. Ця процедура допомагає створити обчислюваний елемент керування без використання майстра елементів керування. Хороший спосіб створення обчислюваного елемента керування — спочатку створити пов'язаний елемент керування (наприклад, перетягнувши поле з області Список полів форму або звіт), а потім змінивши властивість джерела управління прив'язаного елемента керування для створення виразу. Це добре працює, якщо ви переконаєтеся, що ім'я елемента управління не конфліктує з іменами полів, що містяться у виразі. Додаткові відомості про створення прив'язаного елемента керування шляхом перетягування поля з області Список полів див. у статті Додавання поля у форму або звіт. Якщо ви вже створили прив'язаний елемент керування, використовуйте таку процедуру, щоб змінити його на обчислюваний елемент керування та уникнути конфліктів імен. Якщо елемент керування не відображає потрібні дані (наприклад, якщо Access відображає #Name? в елементі управління), перевірте джерело запису форми або звіту, щоб переконатися, що всі поля, що використовуються у виразі, доступні. Якщо джерелом запису є запит, може знадобитися додати одне або кілька полів, перш ніж вираз буде працювати. Текстові поля є найбільш популярним вибором для обчислюваного елемента управління, оскільки вони можуть відображати багато різних типів даних. Однак як обчислюваний елемент управління можна використовувати будь-який елемент управління, що має властивість Control Source . У багатьох випадках немає сенсу використовувати певний тип елемента управління як обчислюваного елемента управління, оскільки ви можете оновити цей елемент управління так, як можна оновити прив'язаний чи пов'язаний елемент управління. Наприклад, якщо помістити елемент управління перевірка box у форму, а потім ввести вираз у властивості Control Source поле перевірка, ви більше не зможете вибрати або очистити поле перевірка, натиснувши його. Перевірка поля буде виділено або знято в залежності від результатів виразу. Якщо клацнути поле перевірка, Access відобразить оповіщення у рядку стану access: Елемент управління може бути змінено; він прив'язаний до висловлювання . Однак у звіті може бути корисно створити елемент керування перевірка box на основі результатів обчислення, оскільки елементи керування у звітах використовуються лише для відображення інформації. За допомогою виразів можна виконувати різноманітні операції з даними. Наприклад, ви можете визначити, скільки днів пройшло з моменту відправлення замовлення, або об'єднати вміст полів FirstName і LastName та помістити результат у поле FullName. Розділи цієї статті містять покрокові інструкції щодо створення виразів. При використанні виразу як джерело даних елемента управління створюється обчислюваний елемент управління. Припустимо, наприклад, що є звіт, в якому відображаються товари на складі, і необхідно створити в нижньому колонтитулі підсумок для підсумовування даних у всіх рядках звіту. Щоб обчислити підсумок, помістіть елемент керування "поле" у нижній колонтитул звіту та налаштуйте для властивості ControlSource цього поля такий вираз: В даному випадку table_field - це ім'я поля, що містить значення проміжних підсумків. Воно може бути у таблиці чи запиті. Функція Sum обчислює результат всім значень в table_field . у полі властивості. Після введення виразу вікно властивостей виглядатиме так: Ви можете використовувати умови для обмеження результатів запиту. Введіть умови у вигляді виразу, і Access поверне лише відповідні рядки. Припустимо, ви хочете переглянути всі замовлення з датою відвантаження протягом перших трьох місяців 2017 року. Умови стовпця "Дата та час" у запиті. У нашому прикладі використовується стовпець "Дата та час" з ім'ям ShippedDate. Щоб визначити діапазон дат, введіть таку умову: Стовпець ДатаВиконання буде виглядати так: Для кожного запису в таблиці замовлень, для якої значення у стовпці ShippedDate потрапляє до зазначеного інтервалу дат, буде створено запис у вихідних даних запиту. Зверніть увагу: у виразі дати полягають знаки решітки ( # ). Значення між знаками грат трактується в Access як значення з типом даних "Дата і час". Це означає, що з такими значеннями можуть проводитися відповідні обчислення, наприклад, віднімання однієї дати з іншої. . Якщо вам потрібно більше місця для редагування виразу, встановіть курсор у комірку. Умова відбору, а потім натисніть клавіші SHIFT+F2, щоб відкрити вікно Область введення: Припустимо, що ви створюєте запит і хочете показати результати розрахунку, в якому використовуються інші поля запиту. Щоб створити поле, що обчислюється, потрібно ввести вираз у порожню комірку в рядку Поле запиту. Допустимо, у вашому запиті є поля Кількість і Ціна. Їх значення потрібно перемножити, щоб отримати поле, що обчислюється Сума. Для цього у рядку Поле запиту введіть такий вираз: Оскільки вираз починається з тексту Extended Price: новий стовпець отримає ім'я Сума. Це ім'я часто називається псевдонімом. Якщо псевдонім не вказано, він буде створений автоматично, наприклад: Expr1. Під час виконання запиту в Access виконується розрахунок кожного рядка, як показано нижче: У Access можна створити поле, що обчислюється в таблиці. Завдяки цьому для виконання розрахунків не доведеться створювати окремого запиту. Наприклад, якщо у вас є таблиця, в якій перераховані кількість, ціна та податкова ставка для кожної позиції замовлення, ви можете додати поле загальної вартості: У обчисленні не можна використовувати поля з інших таблиць або запитів, а результати обчислень доступні лише для читання. За допомогою виразу можна задати для поля таблиці значення за промовчанням, яке Access буде використовувати для нових записів, якщо не надано інше значення. Допустимо, ви бажаєте автоматично вставляти дату та час у поле "Дата_замовлення" при додаванні нового запису. Для цього можна використати наступний вираз: Примітка. При зв'язуванні елемента керування з полем таблиці діє таке правило: якщо для елемента керування та поля задані значення за замовчуванням, значення за замовчуванням елемента керування має пріоритет. Іншим об'єктом, де часто застосовуються вирази, є властивість Значення за замовчуванням елемент управління. Властивість Значення за замовчуванням елемента управління аналогічно властивості Значення за замовчуванням поля в таблиці. Наприклад, щоб використовувати поточну дату як значення за промовчанням для текстового поля, можна вказати наступне: У цьому виразі використовується функція Date, яка повертає дату, але не час. Якщо текстове поле прив'язане до поля таблиці, яке має значення за замовчуванням, значення за промовчанням елемента керування матиме пріоритет перед значенням за замовчуванням поля таблиці. Часто має сенс налаштувати властивість Значення за замовчуванням для поля таблиці. Якщо в цьому випадку до одного та поля таблиці прив'язано кілька елементів управління в різних формах, кожен з них матиме одне значення за замовчуванням, і введення даних у всіх формах буде узгодженим. Висловлювання дуже корисні під час перевірки даних, які вводяться у базу даних: вони дозволяють відсіяти невідповідні відомості. У таблицях можна створювати правила перевірки двох типів: для полів, які дозволяють вводити у поля неприпустимі дані, й у записів, які дозволяють створювати записи, порушують правило. В обох випадках використовуються вирази. Припустимо, що у таблиці Inventory є поле Units On Hand і потрібно встановити умову, що дозволяє користувачам вводити тільки невід'ємні значення.Інакше висловлюючись, кількість товару будь-коли може бути негативним. Це можна зробити, вказавши для поля Units On Hand наступне правило перевірки: ПРОЦЕДУРА: введення правила перевірки для поля чи запису
Висловлювання правил перевірки є логічними, т. е. їх результатом може лише значення True чи False . Якщо значення не дорівнює True , Access не зберігає дані, що вводяться, і виводить повідомлення про помилку. Якщо в цьому прикладі ввести поле Units On Hand негативне значення, правило перевірки видасть результат False та значення буде відхилено. Якщо ви не ввели повідомлення про помилку, як описано в попередньому розділі, Access відобразить власне повідомлення, в якому зазначено, що введене значення заборонено правилом перевірки поля. ПРОЦЕДУРА: введення повідомлення перевірки правильності
Щоб зробити базу даних зручнішою у використанні, можна встановити власні повідомлення перевірки правильності. Ці повідомлення будуть використовуватися замість стандартних повідомлень, що виводяться Access, коли дані не відповідають умові.У повідомлення можна включити відомості, які допомагають користувачеві ввести правильні дані, наприклад "Значення в полі Units On Hand не може бути негативним". Як і в полів таблиці та записів, елементи управління мають властивість ValidationRule (Правило перевірки), для якого можна створити вираз. Припустимо, що використовується форма введення інтервалу дат для звіту та потрібна, щоб початкова дата була не раніше ніж 01.01.2017. Ви можете задати властивості Правило перевірки і Текст перевірки для текстового поля, в якому введіть наступну початкову дату: Неможливо ввести дату раніше 01.01.2017. Якщо ви спробуєте ввести дату раніше 1/1/2017, з'явиться повідомлення, в якому відображається текст у властивості Текст перевірки . Якщо текст не був введений у поле властивості Текст перевірки , Access відображає універсальне повідомлення. Після натискання кнопки ОК фокус введення повернеться до текстового поля. Якщо значення значення задається для поля таблиці, воно буде діяти при будь-якій зміні значення цього поля в базі даних.Навпаки, якщо умова значення задається для елемента управління у формі, воно діятиме лише при використанні цієї форми. Щоб встановити різні умови на значення для різних користувачів, іноді має сенс створити ці умови окремо для полів таблиці та елементів керування у формі. В області Угруповання, сортування та підсумки можна визначити рівні угруповання та порядок сортування для даних у звіті. Як правило, угруповання та сортування виконуються по полю, вибраному у списку, але якщо потрібно виконати угруповання або сортування за значенням, що обчислюється, можна вказати вираз. Угруповання - це процедура підсумовування стовпців з однаковими значеннями. Наприклад, нехай у базі даних зберігаються відомості про продаж для офісів у різних містах, а один із звітів цієї бази даних називається "Продажі по містах". Запит, який забезпечує дані цього звіту, групує їх за назвою міста. Такі угруповання полегшує сприйняття і розуміння інформації. Навпаки, сортування є процесом накладання порядку сортування на рядки (записи) у результатах запиту.Наприклад, можна відсортувати записи за значенням первинного ключа (або за іншим набором значень в іншому полі) за зростанням або за спаданням або відсортувати записи за одним або декількома символами в зазначеному порядку, наприклад, за алфавітом. ПРОЦЕДУРА: додавання групування та сортування до звіту
ПРОЦЕДУРА: додавання виразу до існуючого угруповання або сортування
У деяких випадках виконувати макрокоманду або набір макрокоманд у макросі потрібно лише у тому випадку, якщо виконано певну умову. Припустимо, необхідно, щоб макрокоманда виконувалася тільки в тому випадку, якщо значення в полі не менше 10. Для цього в блоці Якщо макросу можна задати відповідну умову за допомогою виразу. Наприклад, припустимо, що текстове поле називається "Позиції". Вираз для умови виглядатиме так: Можна ввести лише логічний вираз, який приймає значення True або False . Макрокоманди всередині блоку Якщо будуть виконуватися тільки в тому випадку, якщо умова набуде значення True . Найпростішим обчислюваним полем є поле, у якому має виводитися поточна дата. Щоб створити таке поле:
Мал. 9.47. Обчислюване поле Зазвичай для створення полів, що обчислюються, вибирають саме елемент управління Текстове поле, хоч це й необов'язково. Дозволяється використовувати для цього будь-які елементи керування, що мають властивість Дані (Control Source). Саме у властивості Дані (Control Source) має бути заданий вираз, який обчислює значення цього елемента. Введення виразу допускається у елемент управління, як і зробили це у прикладі. Однак якщо вираз досить довгий, його незручно вводити прямо в поле. Можна ввести вираз у комірку властивості Дані (Control Source) у вікні Властивості (Properties), а якщо вираз не міститься в осередку властивості, просто натиснути комбінацію клавіш + та відкрити вікно Область введення (Zoom). Ще можна скористатися Побудовачем виразів. Обчислювані поля створюються найчастіше в табличних або стрічкових формах для відображення стовпця з якими обчисленими значеннями. Наприклад, вартість товару розраховується як значення виразу Ціна *Кількість. Для відображення таких розрахункових даних використовують два способи: Зауваження При посиланнях на поля у виразах обов'язковим є використання квадратних дужок, якщо назва поля містить прогалини; в інших випадках можна обходитися без них. Перший спосіб у більшості випадків краще, т.е. до. такий запит може бути використаний не тільки в одній формі, а й у звітах та інших формах. Прикладом такої організації розрахунків може бути форма "Підпорядкована форма замовлень" (Orders Subform) бази даних "Борей". Вона заснована на запиті "Відомості про замовлення" (Order Details Extended), в якому створено поле "ВідпускнаЦіна" (ExtendedPrice), що містить формулу: у прикладі англійської версії Access: Властивість Дані (Control Source) елемента управління ВідпускнаЦіна (ExtendedPrice) у формі має значення "ВідпускнаЦіна" (ExtendedPrice) - ім'я поля запиту, що обчислюється. Зауваження У наведеній вище формулі CCur - це функція, яка перетворює значення виразу на тип Грошовий (Currency).Створення обчислюваних елементів управління
У цій статті
Створення обчислюваних елементів управління
Зміна прив'язаного елемента управління на обчислюваний елемент управління
Дізнайтеся, які типи елементів керування можна використовувати як обчислювані елементи керування
Створення виразів
Обчислення значень елементів управління у формах та звітах
Використання виразів за умов запитів
Between #1/1/2017# And #3/31/2017#
Створення обчислюваного поля у запиті
Extended Price: [Quantity] * [Unit Price]
Створення обчислюваного поля у таблиці
[Quantity]*([UnitPrice]+([UnitPrice]*[TaxRate]))
[Quantity] * [Unit Price]
Завдання значень за промовчанням для поля таблиці
Встановлення стандартних значень для елементів керування
Додавання правила перевірки у полі таблиці чи запис
Додавання правила перевірки елемент управління
Угруповання та сортування даних у звітах
Управління запуском макрокоманд
Створення обчислюваних полів
CCur([Замовлено].[Ціна]*[Кількість]*(1-[Знижка])/100>*100
CCur([Order Details].UnitPrice*[Quantity]*(1-[Discount])/100)*100