У таблицях недоцільно зберігати дані, які можна отримати за допомогою обчислень. Для цього можна використовувати запити з обчисленнями. З цією метою використовуються обчислювальні поля. В обчислювальних полях можна здійснювати дії із значеннями різних полів того самого запису, або відповідних записів із різних таблиць. В добре спроектованій базі даних зберігаються тільки основні дані, з яких завдяки обчисленням можна отримати нові дані. Це дає можливість економити місце на диску і кожен раз після виконання запиту отримувати нові результати обчислень.
Для створення запиту, який проводить обчислення, слугує той же самий бланк запиту на вибірку. Різниця тільки в тому, що в одному зі стовпців замість імені поля записують формулу. У формулу вводять у квадратних дужках назви полів, які беруть участь у обчисленнях, а також знаки математичних операцій, наприклад так:
Отримано: [Нараховано] - [Податки]
У вузький стовпець непросто записати довгу формулу, але якщо натиснути комбінацію клавіш SHIFT+F2, то відкривається додаткове діалогове вікно, яке називається Область ввода. У ньому можна ввести скільки завгодно довгу формулу, а потім клацанням по кнопці ОК перенести її у бланк запиту. Якщо включити відображення обчислюваного поля, результати обчислень будуть видаватися у результуючій таблиці.
|
|
Обчислюване поле можна зробити полем сортування, для того щоб не тільки отримувати нові результати, але й аналізувати їх.
Сформувати поле, що обчислюється, можна також за допомогою Построителя. Натисніть праву кнопку миші, виберіть у контекстному меню пункт Построить. У вікні, що відкрилося, введіть ім'я нового поля і сформуйте арифметичне вираження, вибираючи поля запиту із середньої частини Построителя кнопкою Вставить (якщо поля відсутні, збережіть запит, потім знову відкрийте його в режимі Конструктора і повторіть операцію).
Приклад1: Нехай необхідно обчислити нову вартість путівки з врахуванням подорожчання на 25%. Для створення такого запиту, потрібно в рядку Поле сітки додати ще стовпчик шляхом вписання виразу:
Нова ціна:[Ціна]*1,25
На сітці QBE цей запит матиме вигляд:
В результаті виконання запиту отримаємо таблицю:
Приклад з використанням функцій: Вік:int((Date()-[Дата_народження])/365)
У цій формулі int означає ціла частина від виразу, Date() – поточна дата, [Дата_народження] – поле Дата_народження з таблиці.