- •Опис предметної області
- •2. Постановка задачі
- •3. Проектування бази даних
- •3.1 Побудова er-діаграми.
- •3.2 . Побудова схеми реляційної бази даних у третій нормальній формі.
- •4. Опис програми
- •4.1. Загальні відомості
- •1Виклик і завантаження
- •2Призначення і логічна структура
- •3Описання фізичної моделі бази даних
- •4.5. Опис програмної реалізації
- •4Описання задачі автоматизації
- •Висновки
- •Додатки
- •Текст програмного модуля menu1.Mpr
3Описання фізичної моделі бази даних
На рисунку 4.4.1. приведено вигляд бази даних проекту. Вона є контейнером для своїх складових – таблиць та локальних представлень.
Рисунок 4.4.1. Середовище оточення бази даних
Кожна таблиця бази даних побудована за допомогою конструктора таблиць, екранні форми зображені на рисунках 4.4.2.-4.4.7.
Рисунок 4.4.2. Конструктор таблиці dceh.dbf
Рисунок 4.4.3. Конструктор таблиці dsklad.dbf
Рисунок 4.4.4. Конструктор таблиці dpokup.dbf
Рисунок 4.4.5. Конструктор таблиці dnomen.dbf
Рисунок 4.4.6. Конструктор таблиці vidv1.dbf
Рисунок 4.4.7. Конструктор таблиці vidv2.dbf
4.5. Опис програмної реалізації
Представимо інтерфейс користувача для кожної з функцій програми. Функції загального управління відповідає форма, представлена на рисунку 4.5.1.
Рисунок 4.5.1.Головна форма проекту
Ця форма оголошена як форма найвищого рівня (TOP-LEVEL) і через обробник події InitEvent з’єднана з попередньо підготованим і згенерованим файлом меню menu1.mpr, лістинг якого представлений у додатку №1.
DO menu1.mpr WITH THIS, .T.
На рисунках 4.5.2.-4.5.9. приведені форми, які реалізують функції ведення даних в окремих таблицях.
Рисунок 4.5.2 Форма «Ведення довідника цехів»
Рисунок 4.5.3. Форма «Ведення довідника складів»
Рисунок 4.5.4. Форма «Ведення довідника покупців»
Рисунок 4.5.5. Форма «Ведення довідника номенклатур»
Рисунок 4.5.6. Форма «Відвантаження з виробництва на склад»
Рисунок 4.5.7. Форма «Відвантаження зі складу покупцю»
Управляючі форми всіх цих форм окремі як окремі класи, тексти обробників приведені в додатку №2.
Форми «Відвантаження з виробництва на склад» та «Відвантаження зі складу покупцю» містять процедури – обробники подій «клацання правою клавішею миші по обчислювальних полях». Вигляд одного з цих обробників приведено на рисунку 4.5.8.
Рисунок 4.5.8. Вигляд обробника подій для форм «Відвантаження з виробництва на склад» та «Відвантаження зі складу покупцю».
Операція видалення помічених записів використовується форма «Видалення записів», вигляд якої приведено на рисунку 4.5.9.
Рисунок 4.5.9.Форма для вилучення записів
Головна операція цієї форми зв’язана з обробником події Click кнопки «Видалення». Нижче приведено текст цієї процедури.
if messagebox('Всі помічені засоби будуть видалені',4+32,'Видалення')=6
sele dceh
pack
sele dsklad
pack
sele dpokup
pack
sele dnomen
pack
sele vidv1
pack
sele vidv2
pack
messagebox('Упаковка закінчена')
else
messagebox('Упаковка відмінена')
endif
До складу проекту входить ряд запитів (локальних представлень), на базі яких будуються звіти. Далі приведені лістинг SQL запитів.
SELECT Vidv1.*, Dnomen.nomen;
FROM data1!vidv1 INNER JOIN data1!dnomen ;
ON Vidv1.knomen = Dnomen.knomen;
ORDER BY Vidv1.kceh, Vidv1.ksklad, Vidv1.knomen
SELECT Zv1_1.nakl, Zv1_1.kceh, Dceh.ceh, Zv1_1.ksklad, Zv1_1.knomen,;
Zv1_1.data, Zv1_1.kil, Zv1_1.sumaobl, Zv1_1.sumasob, Zv1_1.nomen;
FROM data1!zv1_1 INNER JOIN data1!dceh ;
ON Zv1_1.kceh = Dceh.kceh
SELECT Zv1_2.nakl, Zv1_2.kceh, Zv1_2.ceh, Zv1_2.ksklad, Dsklad.sklad,;
Zv1_2.knomen, Zv1_2.nomen, Zv1_2.data, Zv1_2.kil, Zv1_2.sumaobl,;
Zv1_2.sumasob;
FROM data1!zv1_2 INNER JOIN data1!dsklad ;
ON Zv1_2.ksklad = Dsklad.ksklad
SELECT Vidv2.nakl, Vidv2.ksklad, Vidv2.kpokup, Vidv2.knomen, Dnomen.nomen,;
Vidv2.data, Vidv2.kil, Vidv2.sumaobl, Vidv2.sumasob;
FROM data1!vidv2 INNER JOIN data1!dnomen ;
ON Vidv2.knomen = Dnomen.knomen;
GROUP BY Vidv2.ksklad, Vidv2.kpokup, Vidv2.knomen
SELECT Zv2_1.nakl, Zv2_1.ksklad, Dsklad.sklad, Zv2_1.kpokup, Zv2_1.knomen,;
Zv2_1.nomen, Zv2_1.data, Zv2_1.kil, Zv2_1.sumaobl, Zv2_1.sumasob;
FROM data1!zv2_1 INNER JOIN data1!dsklad ;
ON Zv2_1.ksklad = Dsklad.ksklad
SELECT Zv2_2.nakl, Zv2_2.ksklad, Zv2_2.sklad, Zv2_2.kpokup, Dpokup.pokup,;
Zv2_2.knomen, Zv2_2.nomen, Zv2_2.data, Zv2_2.kil, Zv2_2.sumaobl,;
Zv2_2.sumasob;
FROM data1!zv2_2 INNER JOIN data1!dpokup ;
ON Zv2_2.kpokup = Dpokup.kpokup