вікна База даних, перевіримо його правильність (в режимі таблиці). Він матиме вигляд, показаний на рис. 3.4.
Kilkist | Misjac | Rik
2 | 1 | 2004
1 | 2 | 2004
1 | 3 | 2004
5 | 4 | 2004
Рисунок 3.4 – Запит Oplaty_zd в режимі таблиці
Виготовлення запиту для квитанції. Запит для квитанції має містити інформацію з трьох таблиць: Platnyky_t, Oplaty_t і Fondy_t. Якби в тексті квитанції дату потрібно представити в короткому форматі (чч.мм.рр), то цього було б достатньо. Однак, для видачі назв місяців прийдеться виготовити проміжний запит Oplaty_zk, де одержати порядкові номери місяців. Тоді можна буде їх зв’язати з кодами таблиці Misjaci_t у іншому запиті Oplaty_zkm – запиті для квитанції з назвами місяців.
Запит Oplaty_zk в режимі конструктора показаний на рис. 3.5. У його верхнє поле внесені три потрібні таблиці. Оскільки таблиці мають постійний зв’язок, виготовлений нами у прикладі розділу 3.2, тому не потрібно повторно їх зв’язувати. Перенесемо з таблиць у запит такі 10 полів: Priz, Adr, Suma, Kod_p, Kod_f, Naz_f, Data, Data, Data і Data. Поле Priz з’єднаємо з першою буквою поля Im за формулою (поле Priz & пробіл & перша буква поля Im & крапка):
[Platnyky_t].[Priz]&" "&mid([Im];1;1)&"."
Для виділення з дати порядкового номера місяця, дня і року до трьох останніх полів дати застосуємо формули, відповідно:
Month([Data]), Day([Data]) i Year([Data]).
Дочекаємося, щоб конструктор задав абстрактні імена полів запиту і замінимо їх, відповідно, на: Prizw (нагадаємо, що ім’я поля не може містити крапки), Mis, Den і Rik. Решту назв полів залишимо без зміни.
Поставимо три умови співпадання даних для видачі квитанції: 1 - дати поля Data з системною, 2 - кодів платника і 3 - фонду, введених під час запуску запиту, з тими, які є в таблиці Oplaty_t. Тому в якості умови відбору записів встановимо у полі Data
Date() – функцію видачі системної дати.
Для вводу кодів під час відкриття запиту в режимі таблиці замість умов відбору в полях Kod_p та Kod_f запишемо формули-підказки, відповідно:
[Введіть код платника] i [Введіть код фонду].
Таким чином, запит Oplaty_zk є запитом з параметрами. Результати відкриття запиту в режимі таблиці показані на рис. 3.6. Під час його відкриття двічі появляється вікно з пропозицією ввести код платника (див. рис. 3.7) та фонду і полем для вводу цих кодів. Зауважимо, що запит був виготовлений 18.03.2001 р., тому саме на цю дату видана інформація. Введеними були: 2 – код платника і 1 – код фонду.
Запит Oplaty_zkm в режимі конструктора показаний на рис. 3.8. Для його виготовлення використаємо запит Oplaty_zk і таблицю Misjaci_t. Встановимо тимчасовий зв’язок між ними шляхом перетягування поля Kod_m на поле Mis. Ці поля мають однаковий тип – числовий, тому зв’язок між ними можливий. Перетягнемо у нижнє вікно необхідні поля: Prizw, Adr, Suma, Naz_f, Den, Naz_m і Rik. Запит готовий, тут не потрібні якісь операції групування, вирази чи умови відбору, вся необхідна інформація була вже відібрана в запиті Oplaty_zk. Зауважимо, що цей запит служить тільки для забезпечення словесної форми дати у тексті квитанції. Запит Oplaty_zkm відкритий в режимі таблиці, показаний на рисунку 3.9.
Виготовлення запитів для звіту При підготовці інформації для діаграми ми обійшлися одним запитом Oplaty_zd. Для квитанції – двома запитами Oplaty_zk і Oplaty_zkм, причому, якби не та забаганка – одержати словесну форму дати, можна було обійтися теж одним. А, ось, при відборі інформації для звіту мусимо робити два послідовні запити. Справа в тому, що для звіту найвигіднішим є перехресний запит, а його можна побудувати лише на основі однієї таблиці або одного запиту. З іншого боку, ні одне з них не містить усіх потрібних даних. Правда, маємо запит Oplaty_zk, який містить усі потрібні поля, та використати його неможливо, бо нас не влаштовують умови відбору – запит для квитанції містить лише записи про заданого платника і фонд на поточну дату.
Таким чином, для формування звіту мусимо мати, як мінімум, два запити. Перший слугуватиме цілям підготовки даних для перехресного запиту, він показаний на рисунку 3.10 в режимі конструктора, назвемо його Oplaty_zz – запит для звіту. У його верхній частині містяться три таблиці з готовими зв’язками, перенесені туди за допомогою вже знайомого нам вікна Додавання таблиць.
У нижнє вікно запиту перенесені поля, необхідні для звіту: Platnyk, Adr, Naz_f і Suma. Поле Prizw виготовлене за тією ж формулою, що і поле Prizw в запиті Oplaty_zk, розгляненому в розділі 3.5.2.
Зауважимо, що при виготовленні даного запиту теж можна було скористатися вже готовим запитом Oplaty_zk. Для цього його слід було скопіювати під іменем Oplaty_zz, вилучити з копії лишні і залишити потрібні чотири поля, показані на рисунку 3.10, та вилучити всі умови відбору записів.
Запит Oplaty_zz, відкритий в режимі таблиці, показаний на рисунку 3.11.
Для виготовлення другого – перехресного запиту Oplaty_zzp у вікні База даних виберемо перемикач Запити і команду Створити. Потім у вікні Новий запит відмітимо напис Перехресний запит та виконаємо команду Ok. Ці дії приведуть до появи майстра перехресного запиту, нам тільки залишається уважно придивлятися до його пропозицій і виконувати потрібні операції.
Отже, маємо кроки майстра:
майстер пропонує вибрати запит або таблицю, на основі якої буде виготовлений перехресний запит. Встановимо перемикач на Запити, зі списку виберемо Oplaty_zz. Для