ліва кнопка) на пропозицію конструктора задати ім’я таблиці заносимо у вікно назву Filiya.
Рисунок 3.3 – Вікно таблиці Filiya в режимі перегляду
Таблиця Filiya має містити контрольні дані. Ними, як правило, користуються на етапі налагодження програм. До контрольних даних ставляться відповідні вимоги, а саме:
вони не повинні бути громіздкими та багато численними, трудними для ручних обчислень, які виконуються паралельно з програмними;
ці дані повинні забезпечувати всі режими роботи програми, охоплювати всі діапазони зміни параметрів, які обробляються програмою.
Для занесення контрольних даних у таблицю переходимо в режим перегляду. Вікно Таблиця Filiya в режимі таблиці показано на рисунку 3.3. Крім заданих полів (Kod filij, Nazva filij, Adresa filij, Telefon kerivnika filij, Kilkist investizij), таблиця має спеціальне поле (крайнє ліве), яке називається полем виокремлення запису. Маленький трикутник, який знаходиться в цьому полі вказує на поточний запис (на рисунку 3.3 поточним є 1-й запис). Номер поточного запису та загальну їх кількість видно в спеціальному полі внизу таблиці. Поруч знаходяться кнопки для зміни поточного запису та кнопка внесення в таблицю нового запису.
В даному випадку контрольні дані співпадають з даними зразка, запропонованого в постановці задачі. Такий вибір даних зумовлений тим, що він має фіксовану кількість записів, які будуть використані замовником під час експлуатації бази даних.
Таблицю Produkti будуємо подібно до таблиці Filiya. Вона містить п’ять полів: Kod filij (код філій) типу числовий, Kod produktu (код продукту) типу лічильник (це поле зробимо ключовим), Nazva produktu (Назва продукту) типу текстовий, Marka produktu (марка продукту) типу текстовий, Zina odiniz produktu (Ціна одиниць продукту) типу грошовий. На рисунку 3.4 показана таблиця Produkti з контрольними даними. Подібно до таблиці Filiya, ці дані такі самі, як у зразку постановки задачі.
Рисунок 3.4 – Таблиця Produkti з контрольними даними
Таблицю Vihotovlennya будуємо подібно до попередніх таблиць. Вона містить три поля: Kod poduktu (Код продукту) типу числовий, Data obliku (Дата обліку) типу Дата/Час, Kilkist vihotovlenoho produktu (Кількість виготовленого продукту) типу числовий. На рисунку 3.5 показана таблиця realiz з контрольними даними. Подібно до таблиці Filiya, ці дані такі самі, як у зразку постановки задачі.
Рисунок 3.6 – Таблиця Vihotovlennya з контрольними даними
3.3. Програмування запитів
Побудуємо запит для звіту за умовою задачі 4. У вікні База даних виберемо об’єкт Запити. Появляється вікно Новий запит, в якому вибираємо Конструктор. Появляється вікно Конструктора запиту, на тлі якого маємо вікно Додати таблицю з переліком таблиць бази даних. Вибираємо таблиці Filiya, Produkti, Vihotovlennya і за допомогою команди Додати заносимо їх макети на верхнє поле конструктора запиту. Виконуємо команду Закрити у вікні Додати таблицю. Встановимо тимчасові зв’язки між таблицями за допомогою кодових полів kod filij, kod produktu i kod produktu для цього перенесемо його з макета однієї таблиці на інший.
Внесемо в запит такі поля:
Nazva filij, Nazva produktu: Filiya![Nazva filij]+" "+Produkti![Nazva produktu] naz vur;
Kvartal:IIf(Month(Vihotovlennya![Data obliku])<4;1;IIf(Month(Vihotovlennya![Data obliku])<7;2;IIf(Month(Vihotovlennya![Data obliku])<10;3;4))) post;
-Rik:IIf(Year(Vihotovlennya![Data obliku])=Year(Date());Year(Vihotovlennya![Data obliku])) Year([data]) (Умова відбору: Year(Date())-1)
Doxid: (Produkti![Zina odiniz produktu]*0,2)*Vihotovlennya![Kilkist vihotovlenoho produktu]
IIf(Year([Vihotovlennya]![Data obliku])=Year(Date());Year([Vihotovlennya]![Data obliku]))
Умова відбору Is Not Null
Запит rozp doxodiv в режимі SQL:
SELECT Filiya![Nazva filij]+" "+Produkti![Nazva produktu] AS [Nazva filij, Nazva produktu], IIf(Month(Vihotovlennya![Data obliku])<4,1,IIf(Month(Vihotovlennya![Data obliku])<7,2,IIf(Month(Vihotovlennya![Data obliku])<10,3,4))) AS Kvartal, IIf(Year(Vihotovlennya![Data obliku])=Year(Date()),Year(Vihotovlennya![Data obliku])) AS Rik, (Produkti![Zina odiniz produktu]*0.2)*Vihotovlennya![Kilkist vihotovlenoho produktu] AS Doxid
FROM Filiya INNER JOIN (Produkti INNER JOIN Vihotovlennya ON Produkti.[Kod produktu] = Vihotovlennya.[Kod poduktu]) ON Filiya.[Kod filij] = Produkti.[Kod filij]
GROUP BY Filiya![Nazva filij]+" "+Produkti![Nazva produktu], IIf(Month(Vihotovlennya![Data obliku])<4,1,IIf(Month(Vihotovlennya![Data obliku])<7,2,IIf(Month(Vihotovlennya![Data obliku])<10,3,4))), IIf(Year(Vihotovlennya![Data obliku])=Year(Date()),Year(Vihotovlennya![Data obliku])), (Produkti![Zina odiniz produktu]*0.2)*Vihotovlennya![Kilkist vihotovlenoho produktu]
HAVING (((IIf(Year([Vihotovlennya]![Data obliku])=Year(Date()),Year([Vihotovlennya]![Data obliku]))) Is Not Null));
Рисунок 3.6 – Запит rozp doxodiv в режимі конструктора
Рисунок 3.7 – Запит rozp doxodiv в режимі перегляду
Готовий запит в режимі конструктора показаний на рис. 3.6. Для його перевірки перейдемо в режим перегляду за допомогою відповідної кнопки на панелі інструментів (крайня зліва). Копія запиту, відкритого в режимі перегляду показана на рис. 3.7. Закриємо готовий запит, дамо йому назву roz doxodiv.
Запит rozp doxodiv per виготовимо за допомогою майстра перехресного запиту, відповідаючи на його кроки, джерелом цього запиту є запит rozp doxodiv, який в режимі перегляду показаний на рис. 3.7, в якості рядків виберемо поле Nazva filij, Nazva produktu – назва філій та назва продукту, а якості стовпців поле kvartal– квартал, далі обираємо поле Doxid і функцію Sum.
перехресний запит rozp doxodiv per показано на рис. 3.8.
Рисунок 3.9 – перехресний запит rozp doxodiv per в режимі конструктора
Запит rozp doxodiv per в режимі SQL:
TRANSFORM Sum([rozp doxodiv].Doxid) AS [Sum-Doxid]
SELECT [rozp doxodiv].[Nazva filij, Nazva produktu] AS [Nazva filij, Nazva produktu], Sum([rozp doxodiv].Doxid) AS [Итоговое значение Doxid]
FROM [rozp doxodiv]
GROUP BY [rozp doxodiv].[Nazva filij, Nazva produktu]
PIVOT [rozp doxodiv].Kvartal;
Запит для графіка за умовою задачі 5 теж побудуємо за допомогою конструктора, виберемо таблиці Filiya, Produkti, Vihotovlennya. Назвемо його grafik , занесемо в запит такі поля:
Kilkist vihotovlenoho produktu
Рік: Year([Data obliku]) Умова відбору Year(Date())
Nazva produktu Умова відбору [Forms]![grafik]![ПолеСоСписком0]
Місяць: Month([Data obliku])
Запит для графіку показаний на рис. 3.10.
Рисунок 3.10 – Запиту grafik в режимі конструктора
Запит grafik в режимі SQL:
SELECT Vihotovlennya.[Kilkist vihotovlenoho produktu], Year([Data obliku]) AS Рік, Produkti.[Nazva produktu], Month([Data obliku]) AS Місяць
FROM Filiya INNER JOIN (Produkti INNER JOIN Vihotovlennya ON Produkti.[Kod produktu] = Vihotovlennya.[Kod poduktu]) ON Filiya.[Kod filij] = Produkti.[Kod filij]
GROUP BY Vihotovlennya.[Kilkist vihotovlenoho produktu], Year([Data obliku]), Produkti.[Nazva produktu], Month([Data obliku])
HAVING (((Year([Data obliku]))=Year(Date())) AND ((Produkti.[Nazva produktu])=[Forms]![grafik]![ПолеСоСписком0]));SELECT vurobu.[naz vur], realiz.[kil'k], realiz.peredopl, Month([data]) AS misyac
FROM vurobu INNER JOIN