Створення обчислювальних полів у запитах
Обчислювальні поля запиту відображають дані, розраховані на основі значень інших полів з того ж рядка запиту. В описаній нижче покроковій процедурі створення перехресного запиту показано, як можна користуватися виразами для створення нових полів, що обчислюються, у запитах.
Обчислювальні поля можна вводити не тільки в перехресних запитах, але й у звичайних запитах на вибірку.
Отже, ми будемо створювати перехресний запит, у якому в рядках виводяться товари, а в стовпцях – відповідні їм щомісячні обсяги продажів. Для цього:
1. Створіть новий запит у режимі Конструктора і додайте в нього таблиці "Товари" (Products), "Замовлення" (Orders) і "Замовлене" (Order Details).
2. Перетягніть поля "КодТовара" (ProductID) і "Марка" (ProductName) таблиці "Товари", а потім поле "ДатаРазмещения" (OrderedDate) таблиці "Замовлення", у перші три стовпці бланка запиту.
3. Виберіть команду меню Запит, Перехресний (Query, Crosstab Query). Заголовок вікна запиту Запит1: на вибір (Select Query: Queryl) зміниться на Запит1: перехресний запит (Crosstab Query: Queryl). Крім того, у бланк запиту буде доданий рядок Перехресна таблиця (Crosstab) і рядок Групова операція (Total), у якій у всіх стовпцях автоматично вводиться операція Групування(Group By).
4. Виберіть у списку чарунки Перехресна таблиця стовпця "КодТовара" значення Заголовки рядків (Row Heading). Виконайте те ж саме для стовпця "Марка". Ці стовпці є необхідними заголовками рядків перехресної таблиці.
5. Виберіть у списку чарунки Групова операція стовпця "ДатаРазмещения" значення Умова. В чарунці Умова вибору цього стовпця введіть вираз<=#31.12.97#And>=#01.01.97# для виводу в перехресній таблиці даних за 1997 рік.
Встановіть курсор в чарунці Поле наступного (порожнього) стовпця і введіть наступний вираз:
Обсяг продажів: Sum([Кількість]*[Замовлена].[Ціна])
Поле, що ми в такий спосіб створили, обчислюється. Його значення обчислюється за допомогою описаного виразу, а назву поля ми визначили як "Обсяг продажів". У виразі використовуються поля з таблиць, що включені в запит, однак, зверніть увагу, що самі ці поля в результат запиту не включені. Це означає, що при створенні що обчислювальні поля у вирази можна включати посилання не тільки на поля самого запиту, але і на поля, що не включаються в результат запиту. Важливо, щоб вони були у вихідних таблицях. При посиланні на поле "Ціна" у виразі ми вказали ще ім'я таблиці "Замовлене", а при посиланні на поле "Кількість" не вказували. Вказати ім'я таблиці довелося тому, що поле з ім'ям "Ціна" є присутнім і в таблиці "Товари" і в таблиці "Замовлене". Якщо не вказати у виразі імені таблиці, то Access не може визначити, з якої таблиці брати значення, тому видасть повідомлення про помилку, як це представлено на малюнку 1.
Виберіть в чарунці Групова операція того ж стовпця значення Виразу(Expression), а потім в чарунці Перехресна таблиця значення Значення (Value). У стовпці "Обсяг продажів" обчислюється загальний обсяг замовлень на кожен товар, що буде підставлятися в осередки результуючої таблиці запиту. Посилання на таблицю "Замовлені" обов'язкова, інакше буде видане повідомлення про помилку Неоднозначне посилання на поле (Ambiguous field reference).
Встановіть курсор в чарунці Поле наступного (порожнього) стовпця і введіть Вираз format [Дата Розміщення]; "mmm"). Функція Format() повертає три перші букви місяця від значення дати в стовпці "ДатаРазмешения". За допомогою цієї функції ми створили ще одне поле, що обчислюється, у запиті, причому після закінчення введення цього виразу Access автоматично створює ім'я цього поля "Вираз" (Exprl). Так відбувається кожен раз, коли ми не визначаємо ім'я обчислювального поля. Виберіть зі списку в чарунці Перехресна таблиця цього стовпця значення Заголовки стовпців (Column Heading) (мал.2). Це означає, що даний стовпець запиту буде перетворений у процесі виконання запиту в рядок, що містить заголовки стовпців результуючої таблиці.
8. Натисніть кнопку Запуск. З'явиться результуюча множину записів, представлена на мал. 3.
Варто звернути увагу, що виведена перехресна таблиця має один недолік: розташування стовпців визначається алфавітним порядком їхніх заголовків, а не хронологічною послідовністю. Цієї неприємності уникнути. Для цього потрібно задати порядок сортування заголовків стовпців.