Меблева фірма розробка бази даних

Анотація



Курсова робота присвячена розробці бази даних для меблевої фірми. В ній проводяться обстеження і аналіз предметної області та будуються концептуальна, логічна та фізична моделі цієї бази даних. При написанні програмного коду, що обслуговує базу даних, використовується мова програмування Visual Basic.

Робота викладена на 53 сторінках, містить 10 таблиц, 20 рисунків, 2 додатка та список використаної літератури з 6 найменувань.

Робота виконана українською мовою.


Зміст



			Вступ

			Обстеження і аналіз роботи меблевої фірми

			Обстеження роботи меблевої фірми

			Аналіз роботи меблевої фірми

			Постановка задачі

			Розроблення проекту програмного забезпечення меблевої фірми з базою даних меблевої фірми

			Розробка концептуальної моделі бази даних

			Розроблення специфікації програмних модулів

			Розроблення логічної моделі даних

			Розробка алгоритмів і графічних інтерфейсів програмних модулів 

			Розробка фізичної моделі даних

			Вибір засобів розробки

			Розробка фізичної моделі даних

			кодування та тестування програмного забезпечення меблевої фірми з базою даних меблевої фірми

			Результати розробки програмного забезпечення меблевої фірми

			ВисновокСписок використаних джерел

			Додаток А. Програмний код бази даних для меблевої фірми

			Додаток Б. Інструкція користувача


Вступ



У цій курсовій роботі буде розроблятися база даних для меблевої фірми.

У наші часи великого розповсюдження отримали малі та середні приватні підприємства, діяльність яких полягає у розробці дизайнерського креслення та виготовленні за ним корпусних меблів. Такі підприємства займаються відстеженням ринку матеріалів, таким чином постійно залишаючись досвідченими в області матеріалів, що можуть бути використаними, та їх цін. В умовах конкуренції їм доводиться надавати клієнтам індивідуальні послуги, тому кожне замовлення виконується окремо з самого початку і є абсолютно унікальним. Клієнтура таких фірм є досить непостійною. Адже вибір фірми, де людина збирається замовити меблі, залежить від багатьох факторів, починаючи із неофіціальних рекомендацій, реклами наявних клієнтів та антиреклами конкурентів і закінчуючи обсягом продукції, професіоналізмом та налагодженістю виробництва фірми. Тому не виключені як можливості повернення клієнта з метою оформлення нового замовлення, так і можливості переходів клієнтів з одної фірми до іншої. Це робить необхідним ведення обліку клієнтів, а також договорів про надання послуг у вигляді виготовлення тієї чи іншої продукції фірмою для клієнта та розмір оплати цим клієнтом відповідних послуг фірми.

У зв’язку з цими завданнями фірми у неї виникає ряд проблем, пов’язаних із зберіганням обробкою і використанням специфічної інформації пов’язаної з її діяльністю. До такої інформації належить облік матеріалів, виробів, клієнтів та договорів. Проблемним є збереження всієї вказаної інформації на паперових носіях, а також пошук необхідної інформації серед безлічі іншої.

Метою цієї роботи є створення бази даних, що дозволила би фірмі працювати більш ефективно, ефективніше зберігати та шукати необхідну в процесі роботи інформацію, використовуючи раціональніші методи доступу до неї.

Для досягнення цієї мети проводять обстеження та аналіз предметної області, результатом яких є остаточна постановка задачі, розробляють концептуальну, логічну та фізичну моделі даних, специфікацію програмних модулів та їх алгоритми і графічні інтерфейси. Використовуючи це розробляють програмне забезпечення для меблевої фірми.


1 ОБСТЕЖЕННЯ І АНАЛІЗ РОБОТИ МЕБЛЕВОЇ ФІРМИ



1.1 Обстеження роботи меблевої фірми



Будь-яке проектування починається з дослідження даної предметної області, зовсім не потрібно створювати базу тільки для того, щоб створити базу даних. Результатом обстеження предметної області є створення звіту про предметну область. У ньому необхідно визначити коли, кому і які дані потрібні. Зберігати потрібно ті дані, які потрібні для роботи тим або іншим працівникам. Також у звіті про предметну область визначається, які функції виконуються з цими даними.

Звіт має бути написаний у вільній формі. Його часто пишуть у формі сценарію діяльності, який містить наступні пункти:

	Що відбувається у предметній області?

		Яка реакція предметної області на ці події?

Паралельно вивчається термінологія цієї предметної області. Також необхідно вказувати те, як часто використовується та або інша інформація, виконується та або інша дія, який обсяг інформації, як вона розміщена і які перспективи розвитку даного підприємства, тому що все це може вплинути на вибір засобів розробки майбутньої бази даних.

Фірма-замовник займається виробництвом корпусних меблів. Велика роль приділяється спілкуванню з клієнтами з метою одержання замовлення й оформлення договору про те, що за визначену оплату фірма до зазначеного терміну виготовить і установить визначений об’єкт. Замовленням може бути як окремий предмет (наприклад, шафа-купе або комп’ютерний стіл) так і певна сукупність предметів (наприклад, кухня, дитяча кімната, вітальня і т.і.).

Фірма є приватним підприємством і тому може прийняти не більше ніж двадцять замовлень на місяць.

Замовлення ― це інформація, яку отримують від клієнта, про виріб, який повинна зробити фірма. На основі цієї інформації отримують калькуляцію (документ, цо містить назви всіх деталей виробу, їхні габаритний розмыр, матеріал), а також ціну виробу.

При цьому клієнт є фізичною або юридичною особою, що може здійснити замовлення на продукцію, вироблену фірмою.

Основними функціями є облік укладених договорів, виробів, які виготовляє фірма, збереження інформації про калькуляції виробів і облік доступних матеріалів. Усе це зберігається в паперовому вигляді в різних каталогах.

Обмін цією інформацією відбувається між клієнтом та працівником фірми.

Кожен новий клієнт повинен бути зареєстрований у журналі клієнтів. Реєстрація клієнта полягає в запиті інформації про нього, такої як Ф.І.П., адреса проживання, контактний телефон, інформація про те, чи є він фізичною або юридичною особою. Якщо клієнт – фізична особа, то інформація про нього доповнюється домашнім телефоном і серією та номером паспорта. Якщо ж клієнт – юридична особа (представник фірми, організації), то потрібною є інформація про назву фірми, представником якої він є, факс і дані про банківський рахунок фірми (що включає назву банку, ОКПО, МФО та розрахунковий рахунок). Під час спілкування з клієнтом може з’явитися додаткова інформація про нього описового характеру. Кількість клієнтів може досягати порядку сотні на місяць, але вона рідко буває більша. У середньому їх біля тисячі на рік.

Під час спілкування клієнт може запитати інформацію про вартість, розцвічення, зовнішній вид виробів, зроблених фірмою раніше (така інформація зберігається фірмою у вигляді розрізнених неструктурованих файлів на комп’ютері), а також про колір і вартість доступних матеріалів для виготовлення нових виробів (з таблиці матеріалів, що зберігається у паперовому вигляді).

Зробивши рішення, клієнт може укласти договір про те, що він робить замовлення у фірми. У цьому договорі повинна бути зазначена інформація про клієнта (Ф.І.П., якщо клієнт – юридична особа, то ще і назва фірми, представником якої він є, і номер її особового рахунку), назву виробу, дату укладення договору, термін для установки (тобто дату, до якої фірма зобов’язується виготовити і встановити виріб) і даті закінчення гарантійного терміну. До договору додається загальний вигляд виробу.

Коли клієнт прийде другий раз він може зробити ще одне замовлення, у такому випадку інформація про нього буде знайдена по його Ф.І.П. для фізичної особи або за назвою фірми, яку він представляє, і буде оформлений новий договір. Клієнт також може вимагати ремонту виробу за гарантією, у цьому випадку необхідна перевірка того, чи не закінчився гарантійний термін даного виробу. По закінченню цього терміну ремонт не надається.

Можуть з’явитися нові матеріали, які повинні будуть бути добавлені до списку вже існуючих й тих, що використовуються. В цьому списку усі доступні матеріали, у тому числі і фурнітура, розділені по групах й для них вказані найменування, вартість у гривнях, у доларах та їх зовнішній вигляд (у вигляді фотографії або зразка матеріалу).

На даний момент уся ця інформація у фірмі зберігається у каталогах, в паперових списках та у вигляді розрізнених проектних файлів на комп’ютері. Це значно сповільнює пошук потрібної інформації через відсутність її структурованості. Окрім того, інформація, що викладена на паперових носіях, може бути легко втрачена або пошкоджена, а також займає немало місця.

Метою проведення такої роботи є оптимізація діяльності цієї меблевої фірми шляхом об’єднання чисельної інформації, що вона зберігає, у базу даних, що значно прискорить й спростить роботу з нею.

Цей програмний продукт повинен буде виконувати такі функції, як регістрація клієнта, обробка запиту клієнта, підписання договору з ним, введення нових (або змінення вже існуючих) матеріалів та створення калькуляції виробів, а також підрахунок вартості вироба по калькуляції.


1.2 Аналіз роботи меблевої фірми

	

	 Для того, щоб проаналізувати роботу меблевої фірми, будемо використовувати функціональний аналіз в нотації Йордана, який представляє собою інформацію про обстежувану предметні область у графічному вигляді у вигляді ієрархії діаграм. Для цього використовується методологія діаграм потоків даних (Data Flow Diagram, DFD). На діаграмі потоків даних нульового рівня зображують систему, як єдине ціле, що має основную ціль, наприклад як у нашому випадку – выконати. При цьому навіть не вказується, що саме необхідно виконати. Конкретні задачі будуть вказані на діаграмах більш низьких рівней. Уся система зображується у вигляді кола, у верхній частині якого вказується номер рівня (в даному випадку – ноль). Також на цій діаграмі зображені зовнішні сутності, що взаємодіють із системою. Діаграма потоків даних фірми першого рівня створюється шляхом декомпозиції діаграми нульового рівня. Замість основної цілі з’являється ряд задач, які виконує система. Вони також позначені колами, але у верхній частині вказан уже не номер рівня, а номер задачі. На цьому этапі уточнюються задачі системи. Також іде разбиття даних нульового рівня на потоки даних першого рівня. Ця діаграма супроводжується таблицею відповідності потоків даних. Она включаю два столбця. В першому з них перераховуються дані нульового рівня, а в другому – відпрвідні їм потоки даних першого рівня. Далі йдуть наступні рівні за необхідиністю, якщо можна продовжувати декомпозицію функції. Частіше за все потреба другого рівня є, а наступних вже ні. Зовні діаграма відрізняється лише нумерациєю: замісь 0 маємо 1, 2, 3, …, а потім 1.1, 1.2, 1.3 …, 2.1, 2.2 …

	a) Діаграма потоків даних нульового рівня. 

	Є дві сутності: клієнт та працівник фірми. Вони обмінюються даними із системою, дають й отримують різноманітну інформацію. Система не конкретизована й уточнюється на наступних рівнях.

	Ця діаграма для моєї бази даних показана на рисунку 1.1.

	

Інформація від робітника фірми

Інформація від клієента

	

0.



Виконати завдання

	

Робітник фірми

Клієнт

	

	

	

Інформація для робітника фірми

Інформація для клієнта

	

	Рисунок 1.1 – Діаграма потоків даних фірми нульового рівня

	

	б) Діаграма потоків даних фірми першого рівня показана на рисунку 1.2.

	Разбиваємо основну задачу на шість підзадач: регіструвати клієнта, обробити запит, облік виробів, створити калькуляцію, заключити договор й адмініструвати матеріали.

	

	

	

	

Дані про матері-ал



Дані про новий матеріале



За-мов-лен-ня 

Дані по виро-бу

Відпо-відь на запит



Дані по каль-ку-ляції

Каль-куля-ція



№ клі-єнта

	

№ ви-робу



Запит клі-єнта

Осо-бисті дані клі-єнта

№ клі-єнта



До-го-вір

			

	-

	

1.



Регіструвати клієнта

3.



Облік виробів

4.



Создать кальку-ляцию изделия

5.



Заклю-чить договор

2.



Обро-бити запит

6.



Админист-рировть материалы

	

	

	

	

	

	

Дані про новий матеріале

Замов-лен-ня 



Дані по каль-куляції

		

Каль-ку-ляція

№ ви-робу

Дані по виро-бу



Відповідь на запит

Запит клі-єнта



№ клі-єнта



До-го-вір

№ клі-єнта

	

Особисті дані клі-єнта



№ мате-ріала

			

	

	База даних фірми

	Рисунок 1.2 – Діаграма потоків даних фірми першого рівня

	

	Відповідність потока даних нульового, першого та другого рівней наведена в таблиці 1.1.

			

	Таблица 1.1 – Таблиця відповідності потоків даних фірми

	Дані 0 рівня

	Поток даних 1 рівня

	Поток даних 2 рівня

	Інформація від клієнта

Особисті дані клиєнта



	

Запит клиєнта



	

№ клиєнта



	

Замовлення

Дані про замовлення

	



Інформація для контракту

	Інформація для клієнта

№ клиента



	

Відповідь на запит



	

Договір

№ Договору

	



Документ договір

Інформація від робітника фірми

Дані про новий матеріал





Дані по виробу





Дані по калькульції



Інформація для робітника фірми

№ матеріала





№ вироба





Калькуляція





Договір

№ Договору





Документ договір

	

	в) Створюємо діаграму потоків даних фірми другого рівня

	Укладення договору розбивається на створення договору (5.1) та створення документу договору (контракту) (5.2). Це декомпозиція задачі про укладення договору на створення запису у таблиці договорів та створення документу про те, що договір було укладено. Діаграма потоків данних фірми другого рівня показана на рисунке 1.3.

	


Інформація для контракту

№ Договору

	

Дані про замовлення

	

5.1



Створити договір

Документ договір

5.2

Створити документ Договоір

	

	

	

Інформа-ція для контракту



Дані про замовлення

	

Документ  договір

	

№ Договору

	

База даних фірми

	

	Рисунок 1.3 – Діаграма потоків даних фірми другого рівня

	

	Ми отримали попередні дані про таблиці майбітньої бази даних. Їх запишемо в таблиці 1.2, де перший стовпчик є назвою таблиці, а другий складає шапку таблиці.

	

	Таблица 1.2 – Атрибути, що відповідають потокам даних

	Поток даних

	Атрибути

	Особисті дані клієнта

	Ф.І.П., адрес проживання, контактний телефон, інформація про те, чи є клієнт фізичною (домашній телефон та серія й номер паспорта) або юридичною особою (назва фірми, яку він представляє, факс та дані про банківський рахунок (назва банка, ОКПО, МФО, розрахунковий рахунок)), помітки

	Запит клієнта

	Номер договора, до якого відноситься виріб, найменування виробу, зовнішній вигляд виробу

	№ клиента

	№ клієнта 

	№ Договору

	№ договору

	Документ договір

	Ф.І.П., найменовання виробу, код замовника, вартість, дата підписання, срок до якого потрібно установити виріб, дата закінчення гарантії

	Дані про замовлення

	Ф.І.П., найменовання виробу, код замовника, дата підписання, срок до якого потрібно установити виріб, дата закінчення гарантії

	Інформація для контракту

	Ф.І.П., найменовання виробу, код замовника, вартість, дата підписання, термін до установки, дата закінчення гарантії, загальний вигляд виробу

	Дані про матеріал

	Група, назва, вартість в грн., вартість в $, зовнішній вигляд

	Дані по калькуляції

	№ виробу, назва матеріалу, одиниця виміру, кількість, вартість за одиницю матеріалу на час укладання договору 

	Дані по виробу

	№ виробу, № заказа, найменування, складність, ціна, загальний вигляд

	№ матеріалу

	№ матеріалу

	№ виробу

	№ виробу

	Калькуляція

	№ Договору, № виробу, № матеріалу, кількість виробів, кількість матеріалів, ціна закупки матеріалу в $, ціна закупки матеріалу в грн.

	

	1.3 Постановка задачі



Необхідно об’єднати чисельну інформацію, яку зберігає фірма, у базу даних, для прискорення й спрощення роботи з цією інформацію.

Цей програмний продукт повинен виконувати такі функції, як регістрація клієнта, обробка запиту клієнта, підписання договору з ним, введення нових (або змінення вже існуючих) матеріалів та створення калькуляції виробів, а також підрахунок вартості виробу по калькуляції, та облік виробів.

Ця програма повинна чітко й зрозуміло давати можливість вводити інформацію про клієнта з урахуванням того, чи він є фізичною або юридичною особою, вводити нові матеріали та вироби, заключати договори та коректно вводити калькуляцію по виробам та договорам.

Таким чином кожен з розділів, вказаних у діаграмі потоків даних повинен бути присутнім у програмі у вигляді окремої форми, яку можна буде вибрати із головного меню або із підлеглих меню, і яка давитиме можливість ввести дані, необхідні для того, щоб заповнити усі поля відповідної таблиці, а також повинна контролювати процес введення – тобто не дозволяти вводити запис, в якому деякі обов’язкові поля залишилися пустими і виводити спеціальне повідомлення про те що необхідно заповнити перше з пустих полей.

Програма буде виконана у середовищі Microsoft Access, це необхідно замовнику для забезпечення кращої взаємодії майбутньої бази даних з іншими програмними продуктами та файлами, що зберігаються на комп’ютері замовника.

Системні вимоги до розробленого програмного засобу. Для нормальної роботи програми необхідно мати:

- наявність Microsoft Office 2003 на вашому комп’ютері;

- 5 Mb вільного простору на жорсткому диску;

- достатня оперативна пам’ять 32 Mb;

- відео карта 16 Mb;

- комп’ютер Intel Pentium III, Mobile CPU 1000 MHz;

- система Microsoft Windows XP Professional версія 2002 Service Pack 2.

	
2 РОЗРОБЛЕННЯ ПРОЕКТУ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ МЕБЛЕВОЇ ФІРМИ З БАЗОЮ ДАНИХ МЕБЛЕВОЇ ФІРМИ

	

	 Розробка концептуальної моделі бази даних

	

	Наступним шагом після аналізу предметної області під час подібних досліджень є створення концептуальної моделі майбутньої бази даних. Це її графичне зображеня в термінах предметної області.

	Ця модель показує структуру майбутньої бази даних, зв’язки що в ній діють, взаємодію основних сутностей.

	Ця концептуальна модель буде відображати сутності прямокутниками, причому якщо це слабка сутність (сама по собі існувати не може, тобто не може існувати без інших сутностей), то вона буде представлена подвійнтм прямоукутником. Також на ній будуть відображені атрибути, характеристики цих сутностей (зображені овалами) та зв’язки між сутностями (зображені ромбами).

	В цілому це частина інфологічної моделі предметної області, яка визначає сукупність інформаційних об’єктів, їх атрибутів та відношень між об’єктами, динамику зміни предметної області, а також характер інформаційних вимог користувача.

	Спочатку складається концептуальна модель бази даних. Вона визначає систему основних понять та правил комбінування цими класами понять, які не залежать від язиків розробки і ї смисловою структурою бази даних.

	Якщо в структурі нічого не будет змінюватися, то концептуальна модель також не зміниться.

	При проектуванні баз даних використовуються діаграми сутність-зв’язок ERD (Entity Relationship Diagrams). Іноді ця модель називаеться моделлю Чена. Це семантична модель, не іерархія, а одна діаграма, яку можна розбити на частини для більш зручної роботи. Згідно з цією нотацією на діаграмах зображуються сутності, інформацію про яких ми будемо зберігати в базі даних. Це сутності внутрішні, хоча є й одноймені зовнішні сутності.

	У концептуальній моделі моєї бази даних присутні чотири внутрішні сутності. Це Замовник, Договір, Виріб й Матеріал. А також дві підсущності у замовника: Фізична особа та Юридична особа. 

	Я вибрала цю нотацію тому, що вона одна показує атрибути зв’язку.

	Концептуальна модель моєї бази даних зображена на рисунку 2.1.

	

	

Договір



Виріб

Матеріал

Замовник

Юридична особа

Фізична особа

Створюється на виготовлення



Підписує

N

M

L

1

M

Дата

№договору

Термін до установки

Дата закінчення гарантії

Загальний вигляд

Ціна, грн.

Кількість

№ виробу

Найменування

Складність

Загальний вигляд 

Зовнішній вигляд

Ціна, грн.

Ціна, $

Одиниця виміру

Назва

Група

№ матеріалу

Код замовника

Фамілія

Ім’я

Побатькові

Адреса

Телефон

Примітки

Код замовника

Им’я фірми

Факс

Назва банку

МФО

ОКПО

Код замовника

Дом. телефон

Серія паспорта

Номер паспорта

1

0, 1

0, 1

Ціна, $

Розрахун-ковий рахунок

	Рисунок 2.1 – Концептуальна модель бази даних для меблевої фірми



Цей рисунок є графічним зображенням майбутньої бази даних, що чітко показує її структуру та зв’язки між її частинами.



			 Розробка специфікації програмних модулів



Після того, як були проаналізовані і з’ясовані всі процедури і функції, які повинна виконувати база даних для меблевої фірми, можна визначити програмний склад для роботи з цією базою.

Після запуску головної форми користувач повинен отримати можливість відкрити всі інші форми. Серед них мають бути наступні:

-Форма довідки, в якій має бути описано призначення даної бази даних та відповідного програмного забезпечення для неї.

-Форма регістрації клієнта “Замовник” – призначена для внесення в базу даних нових та редагування вже існуючих записів клієнтів. Вхідні дані: Фамілія, Ім’я, По батькові, Адреса, Телефон, Примітки (необов’язкова інформація). Крім того клієнт може бути: фізичною особою (серія паспорту, номер паспорту, домашній телефон (необов’язкове поле)); юридичною особою (ім’я фірми, факс, назва банку, МФО, ОКПО, розрахунковий рахунок). Вихідні дані: код замовника.

- Форма обліку договорів “Договір“ – призначена для обліку договорів. Вхідні дані: Термін до установки, Код замовника, Дата закінчення гарантії, загальний вигляд (необов’язкова інформація). Вихідні дані: номер договору.

- Форма обліку виробів “Виріб“ – призначена для введення нових виробів. Вхідні дані: Найменування, Складність, Загальний вигляд (необов’язкова інформація). Вихідні дані: номер виробу.

- Форма адміністрації матеріалів “Матеріал“ – призначена для введення нових та редагування вже існуючих матеріалів. Вхідні дані: Група, Назва, Одиниця виміру, Ціна $, Ціна грн., Зовнішній вигляд (необов’язкова інформація). Вихідні дані: номер матеріалу.

- Форма калькуляції виробів за належністю до договору “Калькуляція” – призначена для забезпечення зв’язку між Договорами, Виробами та Матеріалами, а також коректно повинна запам’ятовувати ціни, при яких буде введений даний елемент калькуляції. Вхідні дані: Номер договору, Номер виробу, Кількість виробів, Номер матеріалу, Кількість матеріалів, ціни в доларах та гривнях. Вихідні дані: зв'язок між Договорами, Виробами та Матеріалами.

- Форма “Звітів та договорів” – призначена для отримання звітів про вироби та матеріали, про договори по конкретних клієнтах, а також для отримання документу договору.



		Розробка логічної моделі бази даних

	

	За технологією проектування, після розробки концептуальної моделі формується логічна модель даних. Вона формується в поняттях баз даних, але не залежить від СУБД.

	Визначаємо таблиці, поля таблиць та типи даних, які будуть мати ці поля, а також визначаємо зв’язки між таблицями.

	Визначені типи даних переносимі.

	

	Типи:

	- числові дані (N);

	- текстові, строка (S);

	- тип даних дати (D);

	- тип Blob (Binary large object) – великий двійковий об’єкт, блок пам’яті. Це можуть бути великі тексти, відео, код;

	- інші (O).

	Зберігається інформація про ключі (первинні (PK), зовнішні (FK), альтернативні (AK), індексні (IK)).

	Зовнішній ключ – один або дукілько атрибутів, за допомогою яких підлегла таблиця зв’язується з батьківською.

	Індексний ключ – атрибут, за допомогою якого інформація в таблиці буде впорядкованою.

	Альтернативний ключ - один або декілька атрибутів, за допомогою яких будуть здійснюватися запити.

	Концептуальну модель даних, отриману у попередній роботі перетворимо на логічну. Для цього виділяємо кожні дві сутності й зв’язки між ними та послідовно переходимо від кожної такої групи до її логічного вигляду.

	Здійснивши всі можливі переходи, отримаємо логічну модель моєї бази даних. На ній ми будемо вказувати необов’язкові поля. Вона зображена на рисунке 2.2.

	

	

Код замовника	N PK

Фамілія		S AK1 IK1

Ім’я		S AK1 IK1

Побатькові	S AK1 IK1

Адреса		S AK2

Телефон	N AK1

Примітки	S Null

№ договору		 N PK

Код замовника		 N FK

Термін до установки	 D 

Дата закінчення гарантії   D 

Загальний вигляд	BLOB Null

Дата заключення	 D IK AK

Замовник

Договір

№ виробу		N PK

Найменування	          S AK IK

Складність		N 

Загальний вигляд     BLOB Null

Bиріб

№ матеріалу		N PK

Група		      S AK1 IK1

Назва		      S AK2 IK2

Одиниця виміру		S 

Ціна, $			N 

Ціна, грн.		N 

Зовнішній вигляд     BLOB Null

Матеріал

1

M

№ договору     N FK1 РК

№ виробу        N FK2 РК

№ матеріалу   N FK3 РК

Кількість	N 

Ціна, $		N 

Ціна, грн.	N 





Д_И_М

1

M

M

M

1

1

Имя фірми		S PK

Код замовника		N FK

Факс			N 

Назва банка		S AK1 IK1

МФО			N AK1 IK1

ОКПО			N AK1 IK1

Розрахунковий рахунок  N AK1 IK1

Серія паспорта		S PK

Номер паспорта		N PK

Код замовника		N FK

Домашній телефон	N 

Юридична особа

Фізична особа

1

0, 1

0, 1

	Рисунок 2.2 – Логічна модель бази даних для меблевої фірми

	

			Розробка алгоритмів і графічних інтерфейсів програмних модулів 

	

	Головна форма повинна містити елементи, які дозволятимуть перейти до інших форм, таких, як довідка, фрми обліку клієнтів. договорів та виробів, форм адміністрації матеріалів та калькуляції, а також форму звытыв та договору. Такими елементами можуть бути кнопки, при натисканні якої бе визиватися відповідна форма. Також головна форма, як і всі інші, повинна мати кнопку виходу. Форма довідки повинна містити інформацію про те, для чого призначена база даних та відповідне програмне забезпечення, а також інформацію про розробника. Форма клієнтів фірми повинна містити такі поля: код замовника, його Ф.І.П., адрес, телефон, примітки (необов’язкове поле), а також групу вибору чи є клієнт фізичною або юридичною особою і відповідно до цього поля серія паспорта, номер паспорта, контактний телефон (необов’язкове поле) або і’мя фірми, факс, назва банку, МФО, ОКПО, розрахунковий рахунок. Вказана група повинна буде почергово відкривати та закривати доступ до полей фізичної та юридичної особи. Крім кнопки виходу повинна бути кнопка добавити запис. Ця кнопка при натисканні перевіряє чи всі необхідні поля були заповнені, якщо так, то видавати повідомлення про перше з полей, які залишилися пустими, інакше – добавляти запис. Це робиться шляхом перевірки того, чи не є текст кожного з полів нульовим.

	Форма договір повинна містити такі поля: код договору, код замовника, дата заключення, термін до установки, дата закінчення гарантії. Кнопка добавити запис повинна працювати так само, як і відповідна кнопка на формі клієнтів.

	Форма виріб повинна містити такі поля: номер виробу, найменування, складність та загальний вигляд (необов’язкове поле), а також такі ж кнопки добавити та вийти.

	Форма калькуляція повинна мати такі поля: номер договору, номер виробу, кількість виробів, номер матеріалу, кількість матеріалів, ціна закупки матеріала в гривнях, ціна закупки матеріала в доларах (тобто рівень цін, при якому було замовлено цей матеріал), поточна ціна матеріала в гривнях та поточна ціна матеріаля в доларах (тобто поточний рівень цін). Крім того ця форма повинна мати автоматизоване управління всіма чотирма цінами, що контролюватиме їх однозначне та точне введення та спрощений механізм додовання схожих записів. Поточні ціни добавлятимуться шляхом копіювання з таблиці матеріалів після введення матеріалів, а ціни даного елемента калькуляції після натискання на кнопку “Цена” копіюватимуться із поточних цін. Форма матеріалів повинна мати такі поля: номер матеріалу, його гнупа, назва, одиниця виміру, ціна за одиницю маткріалу в доларах та ціна за одиницю маткріалу в гривнях, зовнішній вигляд (необов’язкове поле) та знову ж кнопки навігації.

		Форма звітів та договорів повинна мати елементи управління (наприклад, кнопки), які дозволятимуть продивлятися, зберігати та друкувати звіти по матеріалах, виробах, договорах та сам документ договору.

	

							Розробка фізичної моделі бази даних

					

						Вибір засобів розробки

					Вибір засобів розробки було остаточно визначено у першому розділі в пункті Постановка задачі як вимогу замовника. База даних буде розроблятися у середовищі Microsoft Access. Програмний код у такому випадку буде написаний мово Visual Basic.

	

		Розробка фізичної моделі даних

	На цьому этапі здійснюється прив’язка до конкретного середовища розробки.

	На фізічній моделі представляється вся інформація з логіченої моделі, але визначається її конкретний тип саме у вибраному середовищі розробки. Наприклад, число в логічній моделі повинно бути уточнено у фізичній моделі як ціле, байт або довге ціле. Для вещественого числа необхідно вказувати кількість знаків після коми. Для строки або текста довжина, тобто кількість символів. Для цього для кожної таблиці із логичної моделі будується табличка, що показана у таблиці 2.1.

	

	Таблица 2.1 – Зразок таблиці відповідності логічної та фізичної моделі

	Ім’я фізичної моделі

	Ім’я логічної моделі

	Тип

	Довжина тексту

	Кількість знаків післе коми

	Ключі

	

	

	

	

	

	

	

	
Середовище розробки моєї бази даних – Micrsoft Access. Воно дозволяє називати поля російськими буквами і навіть використовувати пробіли у назвах. Тому імена фізічної й логічної моделей будуть співпадати. Тому в таблицях я буду об’єднувати поля Ім’я фізичної моделі та Ім’я логічної моделі в поле Ім’я моделі.

	Таблиця відповідності логічної та фізичної моделей для таблиці Договір зображена у таблице 2.2.

	

	Таблиця 2.2 – Відповідність моделей для таблиці Договір

	Ім’я модели

	 Тип 

	Ключі

	№ договору

	Лічильник

	РК

	Код замовника

	Довге ціле

	FK

	Термін до установки

	Дата/Час

	

	Дата закінчення гарантії

	Дата/Час

	

	Загальний вигляд

	Поле об’екту OLE 

	

	Дата заключення

	Дата/Час

	

	

	Таблиця відповідності логічної та фізичної моделей для таблиці Вироби зображена у таблиці 2.3.

	

	Таблиця 2.3 – Відповідність моделей для таблиці Вироби

	Ім’я моделі

	 Тип 

	Довжина

	 текстау

	Ключі

	№ виробу

	Лічильник

	

	РК

	Найменування

	Текстовий

	30

	IK

	Складність

	Байт

	

	

	Загальний вигляд 

	Поле об’екту OLE

	

	

	

	Таблиця відповідності логічної та фізичної моделей для таблиці Матеріал зображена у таблиці 2.4.

	


	Таблиця 2.4 – Відповідність моделей для таблиці Матеріал 

	Ім’я моделі

	 Тип 

	Кількість знаків після коми

	Довжина

	 Тексту

	Ключі

	№ матеріалу

	Лічильник

	

	

	РК

	Група

	Текстовий

	

	20

	

	Назва

	Текстовий

	

	30

	IK

	Одиниця виміру

	Текстовий

	

	10

	

	Ціна $

	Грошовий

	2

	

	

	Ціна грн

	Грошовий

	2

	

	

	Зовнішній вигляд

	Поле об’єкту OLE

	

	

	

	

	Таблиця відповідності логічної та фізичної моделей для таблиці ДИМ зображена у таблиці 2.5.

	

	Таблица 2.5 – Відповідність моделей для таблиці ДИМ

	Ім’я моделі

	 Тип 

	Кількість знаків після коми

	Ключі

	№ договору

	Довге ціле

	

	РК

	№ виробу

	Довге ціле

	

	РК

	№ матеріалу

	Довге ціле

	

	РК

	Кількість

	Ціле

	

	

	Ціна $

	Грошовий

	2

	

	Ціна грн

	Грошовий

	2

	

	

	Таблиця відповідності логічної та фізичної моделей для таблиці Замовник зображена у таблиці 2.6.

	

	Таблиця 2.6 – Відповідність моделей для таблиці Замовник

	Ім’я моделі

	 Тип

	Довжина тексту

	Ключі

	Код замовника

	Лічильник

	

	РК

	Фамілія

	Текстовий

	20

	IK

	Ім’я

Текстовий

	20

	IK

	По батькові

Текстовий

	20

	IK

	Адреса

Текстовий

	70

	

	Телефон

Текстовий

	20

	

	Примітки

Текстовий

	250

	

	Таблиця відповідності логічної та фізичної моделей для таблиці Юридична особа зображена у таблиці 2.7.

	

	Таблиця 2.7 – Відповідність моделей для таблиці Юридична особа

	Ім’я моделі

	 Тип

	Довжина тексту

	Ключі

	Код замовника

	Довге ціле

	

	РК

	Ім’я фірми

Текстовий

	20

	

	Факс

	Довге ціле

	

	

	Назва банку

Текстовый

	30

	

	МФО

	Довге ціле

	

	IK

	ОКПО

	Довге ціле

	

	IK

	Розрахунковий рахунок

	Довге ціле

	

	IK

	

	Таблиця відповідності логічної та фізичної моделей для таблиці Фізична особа зображена у таблиці 2.8.

	

	Таблиця 2.8 – Відповідність моделей для таблиці Фізична особа

	Ім’я моделі

	 Тип

	Довжина тексту

	Ключі

	Код замовника

	Довге ціле

	

	РК

	Серія паспорта

	Текстовий

	

	

	Номер паспорта

	Довге ціле

	

	

	Телефон

	Довге ціле

	

	

	

	Отримана мною база даних таким чином знаходиться у третій нормальній формі (3НФ).

	3НФ – представлення відношень у реляцийній моделі даних при якому кожен неосновний (неключовий) атрибут відношення безпосередньо, нетранзитивно залежить від дудь-якого його ключа.

	При цій формі аномалій не було помічено.

	Тепер створимо електронний варіант таблиці в середовищі Microsoft Access 2003.

	Відношення між таблицями бази даних показані на рисунку 2.3.

	


	Рисунок 2.3 – Зв’язки між таблицями бази даних для меблевої фірми

		

		Кодування і тестування програмного забезпечення меблевої фірми

		

		Програма написана у середовищі Microsoft Access 2003. Її головний файл – МЕБЕЛЬ.mdb займає 6,39 Mb дискового пространства при цмові, що він заповнений невеликою кількістю тестових даних. Його об’єм, звісно, зростатиме по мірі заповнення бази даними. Під час кодування були враховані та виконані вимоги, під час розробки специфікації програмних модулів та розробки алгоритмів і графічних інтерфейсів програмних модулів.

	Для можливості протестувати доботу бази даних із відповідним програмним забезпеченням, вона була заповнена тестовими значеннями у кількості, достатній для перевірки її діяльності.

	Тестування починаемо із запуску головної форми програми. Натискаємо кнопку виходу, бачимо, що вона працює як очікувалося – форма закнивається. Знову починаємо роботу із запуску головної форми,тепер заходимо в усі підлеглі форми і перевіряємо можливість їх закриття. Все працює як очікувалося. Відкриваємо форму “О программе”, бачимо, що в ній відображається інформація про те, кому і для чого необхідно використовувати цю базу даних та відповідне програмне забезпечення для неї. Відкриваємо форму “Заказчик”, натискаємо кнопку добавити запис, коректно вводимо всю інформацію про замовника який є фізичною особою, знову натискаємо кнопку добавити. Все працює добре, новий запис, який ми щойно створили, був успішно добавлений до бази даних. Таку саму перевірку робимо для замовника, який є юридичною особою. Все також працює добре. Тепер намагаємося добавити запис, в якому не всі обов’язкові поля були заповнені, наприклад, були не заповнені поля “Имя” та “Отчество” замовника. Бачимо, що після натискання на кнопку добавити виникає повідомлення “Не все поля заполнены!!! Введите значение в поле Имя”, натискаэмо кнопку ОК, бачимо, що курсор автоматично перемыстився у поле “Имя”. Вводимо ім’я замовника (залишилося невведеним лише побатькові), натискаємо кнопку добавити. Бачимо, що знову виникає повідомлення “Не все поля заполнены!!! Введите значение в поле Фамилия”. Так само програма реагує й на інші спроби ввест неповні дані, тобто все працює, як очікувалося. Відкриваємо почерзі форми “Договор”, “Изделие” и “Материал”, робимо аналогічні перевірки. Все працює коректно. Відкриваємо форму “Калькуляция”, робимо таку саму перевірку роботи кнопки добавити – воно працює коректно. Заповнюючи всі дані, помучаємо, що після заповнення поля “Номер материала” автоматично стають заповненими два нижніх поля (поточні ціни на матеріал) та стає можливим натискання на кнопку “Цена”. Після її натискання інші два цінових поля заповнюються відповідними значеннями поточних цін. Намагаємося вручну змінити значення цінових полей – нічого не виходить, вони заблоковані для введення даних. Отже перевірка роботи кнопки “Цена” пройшла успішно – вона працює коректно. Намагаємося клонувати існуючий запис – створюється новий запис і заповнюється значеннями клонованого, але він не може бути добавлений доки не буде змінений один з номерів (договора, виробу, матеріалу), бо це є ключові поля і вони не можуть двічи в таблиці мати однакові значення, про що при спробах неправильного вводу говориться у повідомленні “Данные о записи с такими номерами договора, материала или изделия уже существуют или не могут существовать”, причому вони не можуть існувати тоді, коли відповідних договору, виробу або матеріалу з такими номерами не існує в базі даних. Таким чином перевірка роботи кнопки “Клонувати” пройшла успішно – все працює правильно. Відкриваємо форму “Отчетность”, перевіряємо чи правильно створюються звіти та договора для різних початкових даних. Все працює так, як і очікувалося.

	Висновок: програмний продукт відповідає всім поставленим вимогам і працює коректно.

	

	
3. РЕЗУТАТИ РОЗРОБКИ ПРОГРАММНОГО ЗАБЕЗПЕЧЕННЯ МЕБЛЕВОЇ ФІРМИ

	

	У результаті аналізу та розробки була створена база даних для меблевої фірми із відповідним програмним забезпеченням.

	Код програмного забезпечення для цієї бази даних знаходиться у додатку А. Інструкція користувача для цієї програми – у додатку Б.

	Головна форма, з якої можна запускати програму: “МЕБЕЛЬ”.

	Файл з базою даних Mebel.mdb

	

	Апаратні вимоги:

	процесор Pentium 1000MHz і наступні версії;

	64 Mb оперативної пам’яті.

	

	Програмні вимоги:

	наявність установленого Microsoft Office 2003 на комп’ютері замовника;

	операційна система Windows Xp/2000;

	100Mb вільного простору на жорсткому диску.

	

	
Висновки

	

	У даній роботі було розроблене програмне забезпечення для меблевої фірми із базою даних меблевої фірми. Була розглянута предметна область з її основними задачами та визначена її проблематика, були проведені її обстеження та аналіз, що сформували задачу роботи. 

	В процесі роботи були розроблені концептуальна, логічна та фізична моделі даних, а також специфікація програмних модулів та їх алгоритми і графічні інтерфейси.

	Результатом проведеної роботи є розроблена база даних для меблевої фірми з відповідним програмним забезпеченням та інструкція користувача до неї.

	Ця програма робить легкою навігацію по базі даних за допомогою таких форм, як Замовник, Договір, Виріб, Матеріал та Калькуляція. Кожна з цих форм має спеціальний механізм обробки помилок, який при намаганні добавити запис, в якого є незаповнене поле, виводить про нього спеціальне повідомлення. Форма Калькуляції підтримує програмне зчитування поточної ціни даного матеріалу з таблиці матеріалів, для посилення контролю забороняє введення ціни матеріалу вручну, а також дозволяє клону вати будь-який запис з подальшою зміною характеристик та контролює введення однакових записів. Присутність кнопок виходу та добавити на формах програми робить легким пересування по ній.

	
Список використаних джерел

	

		“Системы управления базами данных и знаний“ справочное издание под редакцией А.Н. Наумова, Москва: “Финансы и статистика“, 1991

		Конспект лекцій зі спеціальності “Організація баз даних та баз знань“

		3“Microsoft Access 2003 Эффективный самоучитель“, СанктПерербург: НиТ, 2006

		4“Teach Yourself Microsoft Access 2002 Programming in 24 Houres“, Paul Kimmel, Москва – Санкт-Перебург - Киев: “Вильямс“, 2002

		5Moscow MS Access USER Group, http://www.arissoft.ru/msaccess/

		6Microsoft Access Information, http://www.dykbits.com/acc97.htm

	
Додаток А. Програмний код бази даних для меблевої фірми

	

	Програмний код форми “МЕБЕЛЬ”:

	Option Compare Database

	

	Private Sub Кнопка0_Click()

	On Error GoTo Err_Кнопка0_Click

	 Dim stDocName As String

	 Dim stLinkCriteria As String

	 stDocName = ChrW(1054) & ChrW(32) & ChrW(1087) & ChrW(1088) & ChrW(1086) & ChrW(1075) & ChrW(1088) & ChrW(1072) & ChrW(1084) & ChrW(1084) & ChrW(1077)

	 DoCmd.OpenForm stDocName, , , stLinkCriteria

	Exit_Кнопка0_Click:

	 Exit Sub

	Err_Кнопка0_Click:

	 MsgBox Err.Description

	 Resume Exit_Кнопка0_Click

	End Sub

	

	Private Sub Кнопка1_Click()

	On Error GoTo Err_Кнопка1_Click

	 Dim stDocName As String

	 Dim stLinkCriteria As String

	 stDocName = ChrW(1054) & ChrW(32) & ChrW(1087) & ChrW(1088) & ChrW(1086) & ChrW(1075) & ChrW(1088) & ChrW(1072) & ChrW(1084) & ChrW(1084) & ChrW(1077)

	 DoCmd.OpenForm stDocName, , , stLinkCriteria

	Exit_Кнопка1_Click:

	 Exit Sub

	Err_Кнопка1_Click:

	 MsgBox Err.Description

	 Resume Exit_Кнопка1_Click

	End Sub

	

	Private Sub Кнопка2_Click()

	On Error GoTo Err_Кнопка2_Click

	 Dim stDocName As String

	 Dim stLinkCriteria As String

	 stDocName = ChrW(1044) & ChrW(1086) & ChrW(1075) & ChrW(1086) & ChrW(1074) & ChrW(1086) & ChrW(1088)

	 DoCmd.OpenForm stDocName, , , stLinkCriteria

	Exit_Кнопка2_Click:

	 Exit Sub

	Err_Кнопка2_Click:

	 MsgBox Err.Description

	 Resume Exit_Кнопка2_Click

	End Sub

	

	Private Sub Кнопка3_Click()

	On Error GoTo Err_Кнопка3_Click

	 Dim stDocName As String

	 Dim stLinkCriteria As String

	 stDocName = ChrW(1047) & ChrW(1072) & ChrW(1082) & ChrW(1072) & ChrW(1079) & ChrW(1095) & ChrW(1080) & ChrW(1082)

	 DoCmd.OpenForm stDocName, , , stLinkCriteria

	Exit_Кнопка3_Click:

	 Exit Sub

	Err_Кнопка3_Click:

	 MsgBox Err.Description

	 Resume Exit_Кнопка3_Click

	End Sub

	

	Private Sub Кнопка4_Click()

	On Error GoTo Err_Кнопка4_Click

	 Dim stDocName As String

	 Dim stLinkCriteria As String

	 stDocName = ChrW(1048) & ChrW(1079) & ChrW(1076) & ChrW(1077) & ChrW(1083) & ChrW(1080) & ChrW(1077)

	 DoCmd.OpenForm stDocName, , , stLinkCriteria

	Exit_Кнопка4_Click:

	 Exit Sub

	Err_Кнопка4_Click:

	 MsgBox Err.Description

	 Resume Exit_Кнопка4_Click

	End Sub

	

	Private Sub Кнопка5_Click()

	On Error GoTo Err_Кнопка5_Click

	 Dim stDocName As String

	 Dim stLinkCriteria As String

	 stDocName = ChrW(1052) & ChrW(1072) & ChrW(1090) & ChrW(1077) & ChrW(1088) & ChrW(1080) & ChrW(1072) & ChrW(1083)

	 DoCmd.OpenForm stDocName, , , stLinkCriteria

	Exit_Кнопка5_Click:

	 Exit Sub

	Err_Кнопка5_Click:

	 MsgBox Err.Description

	 Resume Exit_Кнопка5_Click

	End Sub

	

	Private Sub Кнопка6_Click()

	On Error GoTo Err_Кнопка6_Click

	 Dim stDocName As String

	 Dim stLinkCriteria As String

	 stDocName = ChrW(1050) & ChrW(1072) & ChrW(1083) & ChrW(1100) & ChrW(1082) & ChrW(1091) & ChrW(1083) & ChrW(1103) & ChrW(1094) & ChrW(1080) & ChrW(1103)

	 DoCmd.OpenForm stDocName, , , stLinkCriteria

	Exit_Кнопка6_Click:

	 Exit Sub

	Err_Кнопка6_Click:

	 MsgBox Err.Description

	 Resume Exit_Кнопка6_Click

	End Sub

	

	Private Sub Кнопка8_Click()

	On Error GoTo Err_Кнопка8_Click

	 DoCmd.Close

	Exit_Кнопка8_Click:

	 Exit Sub

	Err_Кнопка8_Click:

	 MsgBox Err.Description

	 Resume Exit_Кнопка8_Click

	End Sub

	

	Private Sub Кнопка9_Click()

	On Error GoTo Err_Кнопка9_Click

	 Dim stDocName As String

	 Dim stLinkCriteria As String

	 stDocName = ChrW(1047) & ChrW(1072) & ChrW(1087) & ChrW(1088) & ChrW(1086) & ChrW(1089) & ChrW(1099) & ChrW(32) & ChrW(1080) & ChrW(32) & ChrW(1076) & ChrW(1086) & ChrW(1082) & ChrW(1091) & ChrW(1084) & ChrW(1077) & ChrW(1085) & ChrW(1090) & ChrW(1099)

	 DoCmd.OpenForm stDocName, , , stLinkCriteria

	Exit_Кнопка9_Click:

	 Exit Sub

	Err_Кнопка9_Click:

	 MsgBox Err.Description

	 Resume Exit_Кнопка9_Click

	End Sub

	

	Програмний код форми “О программе”:

	Option Compare Database

	

	Private Sub Кнопка9_Click()

	On Error GoTo Err_Кнопка9_Click

	 DoCmd.Close

	Exit_Кнопка9_Click:

	 Exit Sub

	Err_Кнопка9_Click:

	 MsgBox Err.Description

	 Resume Exit_Кнопка9_Click

	End Sub

	

	Програмний код форми “Заказчик”:

	Option Compare Database

	

	Private Sub Form_Load()

	 Имя_фирмы.Enabled = False

	 Факс.Enabled = False

	 Название_банка.Enabled = False

	 МФО.Enabled = False

	 ОКПО.Enabled = False

	 Расчетный_счет.Enabled = False

	 Form.Caption = "Заказчик"

	End Sub

	

	Private Sub Группа34_BeforeUpdate(Cancel As Integer)

	If Группа34 = 1 Then

	 Имя_фирмы.Enabled = False

	 Факс.Enabled = False

	 Название_банка.Enabled = False

	 МФО.Enabled = False

	 ОКПО.Enabled = False

	 Расчетный_счет.Enabled = False

	 Серия_паспорта.Enabled = True

	 №_паспорта.Enabled = True

	 Контактный_телефон.Enabled = True

	End If

	If Группа34 = 2 Then

	 Серия_паспорта.Enabled = False

	 №_паспорта.Enabled = False

	 Контактный_телефон.Enabled = False

	 Имя_фирмы.Enabled = True

	 Факс.Enabled = True

	 Название_банка.Enabled = True

	 МФО.Enabled = True

	 ОКПО.Enabled = True

	 Расчетный_счет.Enabled = True

	End If

	End Sub

	

	Public Sub ДобавитьЗапись_Click()

	On Error GoTo Err_ДобавитьЗапись_Click

	 Фамилия.SetFocus

	 If (Фамилия.Text <> "") Then

	 Имя.SetFocus

	 If (Имя.Text <> "") Then

	 Отчество.SetFocus

	 If (Отчество.Text <> "") Then

	 Адрес.SetFocus

	 If (Адрес.Text <> "") Then

	 Телефон.SetFocus

	 If (Телефон.Text <> "") Then

	 If (Группа34 = 1) Then

	 Серия_паспорта.SetFocus

	 If (Серия_паспорта.Text = "") Then

	 GoTo Err_ДобавитьЗапись_Click

	 End If

	 Else

	 If (Группа34 = 2) Then

	 Имя_фирмы.SetFocus

	 If (Имя_фирмы.Text = "") Then

	 GoTo Err_ДобавитьЗапись_Click

	 End If

	 End If

	 End If

	 End If

	 End If

	 End If

	 End If

	 End If

	 Фамилия.SetFocus

	 DoCmd.GoToRecord , , acNewRec

	 Группа34.Enabled = True

	Exit_ДобавитьЗапись_Click:

	 Exit Sub

	Err_ДобавитьЗапись_Click:

	 If (Err.Description <> "") Then

	 Фамилия.SetFocus

	 If (Фамилия.Text <> "") Then

	 Имя.SetFocus

	 If (Имя.Text <> "") Then

	 Отчество.SetFocus

	 If (Отчество.Text <> "") Then

	 Адрес.SetFocus

	 If (Адрес.Text <> "") Then

	 Телефон.SetFocus

	 If (Телефон.Text <> "") Then

	 If (Группа34 = 1) Then

	 Серия_паспорта.SetFocus

	 If (Серия_паспорта.Text <> "") Then

	 №_паспорта.SetFocus

	 MsgBox "Не все поля заполнены!!! Введите значение в поле № паспорта"

	 Else

	 MsgBox "Не все поля заполнены!!! Введите значение в поле Серия паспорта"

	 End If

	 End If

	 If (Группа34 = 2) Then

	 Имя_фирмы.SetFocus

	 If (Имя_фирмы.Text <> "") Then

	 Факс.SetFocus

	 If (Факс.Text <> "") Then

	 Название_банка.SetFocus

	 If (Название_банка.Text <> "") Then

	 МФО.SetFocus

	 If (МФО.Text <> "") Then

	 ОКПО.SetFocus

	 If (ОКПО.Text <> "") Then

	 Расчетный_счет.SetFocus

	 MsgBox "Не все поля заполнены!!! Введите значение в поле Расчетный_счет"

	 Else

	 MsgBox "Не все поля заполнены!!! Введите значение в поле ОКПО"

	 End If

	 Else

	 MsgBox "Не все поля заполнены!!! Введите значение в поле МФО"

	 End If

	 Else

	 MsgBox "Не все поля заполнены!!! Введите значение в поле Название банка"

	 End If

	 Else

	 MsgBox "Не все поля заполнены!!! Введите значение в поле Факс"

	 End If

	 Else

	 MsgBox "Не все поля заполнены!!! Введите значение в поле Имя фирмы"

	 End If

	 End If

	 Else

	 MsgBox "Не все поля заполнены!!! Введите значение в поле Телефон"

	 End If

	 Else

	 MsgBox "Не все поля заполнены!!! Введите значение в поле Адрес"

	 End If

	 Else

	 MsgBox "Не все поля заполнены!!! Введите значение в поле Отчество"

	 End If

	 Else

	 MsgBox "Не все поля заполнены!!! Введите значение в поле Имя"

	 End If

	 Else

	 MsgBox "Не все поля заполнены!!! Введите значение в поле Фамилия"

	 End If

	 End If

	 Resume Exit_ДобавитьЗапись_Click

	 

	End Sub

	

	Private Sub Серия_паспорта_Exit(Cancel As Integer)

	 If (Серия_паспорта.Text <> "") Then

	 Группа34.Enabled = False

	 End If

	End Sub

	

	Private Sub №_паспорта_Exit(Cancel As Integer)

	 If (№_паспорта.Text <> "") Then

	 Группа34.Enabled = False

	 End If

	End Sub

	

	Private Sub Контактный_Телефон_Exit(Cancel As Integer)

	 If (Контактный_телефон.Text <> "") Then

	 Группа34.Enabled = False

	 End If

	End Sub

	

	Private Sub Имя_фирмы_Exit(Cancel As Integer)

	 If (Имя_фирмы.Text <> "") Then

	 Группа34.Enabled = False

	 End If

	End Sub

	

	Private Sub Факс_Exit(Cancel As Integer)

	 If (Факс.Text <> "") Then

	 Группа34.Enabled = False

	 End If

	End Sub

	

	Private Sub Название_банка_Exit(Cancel As Integer)

	 If (Название_банка.Text <> "") Then

	 Группа34.Enabled = False

	 End If

	End Sub

	

	Private Sub МФО_Exit(Cancel As Integer)

	 If (МФО.Text <> "") Then

	 Группа34.Enabled = False

	 End If

	End Sub

	

	Private Sub ОКПО_Exit(Cancel As Integer)

	 If (ОКПО.Text <> "") Then

	 Группа34.Enabled = False

	 End If

	End Sub

	

	Private Sub Расчетный_счет_Exit(Cancel As Integer)

	 If (Расчетный_счет.Text <> "") Then

	 Группа34.Enabled = False

	 End If

	End Sub

	

	Private Sub Кнопка43_Click()

	On Error GoTo Err_Кнопка43_Click

	 DoCmd.Close

	Exit_Кнопка43_Click:

	 Exit Sub

	Err_Кнопка43_Click:

	 MsgBox "Ошибка при закрытии формы"

	 Resume Exit_Кнопка43_Click

	End Sub

	

	Програмний код форми “Договор”:

	Option Compare Database

	

	Private Sub Добавить_Click()

	On Error GoTo Err_Добавить_Click

	 DoCmd.GoToRecord , , acNewRec

	Exit_Добавить_Click:

	 Exit Sub

	Err_Добавить_Click:

	 №_договора.SetFocus

	 If (№_договора.Text <> "") Then

	 Код_заказчика.SetFocus

	 If (Код_заказчика.Text <> "") Then

	 Дата_заключения.SetFocus

	 If (Дата_заключения.Text <> "") Then

	 Срок_к_установке.SetFocus

	 If (Срок_к_установке.Text <> "") Then

	 Дата_окончания_гарантии.SetFocus

	 If (Дата_окончания_гарантии.Text <> "") Then

	 Код_заказчика.SetFocus

	 MsgBox "Клиент с таким Кодом заказчика не зарегистрирован в базе данных!!!"

	 Else

	 MsgBox "Не все поля заполнены!!! Введите значение в поле Дата окончания гарантии"

	 End If

	 Else

	 MsgBox "Не все поля заполнены!!! Введите значение в поле Срок к установке"

	 End If

	 Else

	 MsgBox "Не все поля заполнены!!! Введите значение в поле Дата заключения"

	 End If

	 Else

	 MsgBox "Не все поля заполнены!!! Введите значение в поле Код заказчика"

	 End If

	 Else

	 MsgBox "Не все поля заполнены!!! Введите значение в поле № договора"

	 End If

	 Resume Exit_Добавить_Click

	End Sub

	

	Private Sub Кнопка13_Click()

	On Error GoTo Err_Кнопка13_Click

	 DoCmd.Close

	Exit_Кнопка13_Click:

	 Exit Sub

	Err_Кнопка13_Click:

	 MsgBox Err.Description

	 Resume Exit_Кнопка13_Click

	End Sub

	

	Програмний код форми “Изделие”:

	Option Compare Database

	

	Private Sub Добавить_Click()

	On Error GoTo Err_Добавить_Click

	 DoCmd.GoToRecord , , acNewRec

	Exit_Добавить_Click:

	 Exit Sub

	Err_Добавить_Click:

	 Наименование.SetFocus

	 If (Наименование.Text <> "") Then

	 Сложность.SetFocus

	 MsgBox "Не все поля заполнены!!! Введите значение в поле Сложность"

	 Else

	 MsgBox "Не все поля заполнены!!! Введите значение в поле Наименование"

	 End If

	 Resume Exit_Добавить_Click

	End Sub

	

	Private Sub Кнопка9_Click()

	On Error GoTo Err_Кнопка9_Click

	 DoCmd.Close

	Exit_Кнопка9_Click:

	 Exit Sub

	Err_Кнопка9_Click:

	 MsgBox Err.Description

	 Resume Exit_Кнопка9_Click

	End Sub

	

	Програмний код форми “Калькуляция”:

	Option Compare Database

	

	Private Sub Form_Load()

	 Цена.Enabled = False

	End Sub

	Private Sub №_материала_Exit(Cancel As Integer)

	 If (№_материала.Text <> "") Then

	 Цена.Enabled = True

	 End If

	End Sub

	

	Private Sub Цена_Click()

	 Материал_Цена__.SetFocus

	 If (Материал_Цена__.Text <> "") Then

	 Dim pr As String

	 Материал_Цена__.SetFocus

	 pr = Материал_Цена__.Text

	 ДИМ_Цена__.SetFocus

	 ДИМ_Цена__.Locked = False

	 ДИМ_Цена__.Text = pr

	 ДИМ_Цена__.Locked = True

	 Материал_Цена_грн.SetFocus

	 pr = Материал_Цена_грн.Text

	 ДИМ_Цена_грн.SetFocus

	 ДИМ_Цена_грн.Locked = False

	 ДИМ_Цена_грн.Text = pr

	 ДИМ_Цена_грн.Locked = True

	 Цена.Enabled = False

	 Добавить.SetFocus

	 End If

	End Sub

	

	Private Sub Добавить_Click()

	On Error GoTo Err_Добавить_Click

	 DoCmd.GoToRecord , , acNewRec

	 Цена.Enabled = False

	Exit_Добавить_Click:

	 Exit Sub

	Err_Добавить_Click:

	 №договора.SetFocus

	 If (№договора.Text <> "") Then

	 №_изделия.SetFocus

	 If (№_изделия.Text <> "") Then

	 Количество_изделий.SetFocus

	 If (Количество_изделий.Text <> "") Then

	 №_материала.SetFocus

	 If (№_материала.Text <> "") Then

	 Количество_материала.SetFocus

	 If (Количество_материала.Text <> "") Then

	 ДИМ_Цена__.SetFocus

	 If (ДИМ_Цена__.Text <> "") Then

	 MsgBox "Данные о записи с такими номерами договора, изделия и материала уже существуют или не могут существовать!!!"

	 Else

	 MsgBox "Не все поля заполнены!!! Нажмите кнопку Цена для фиксации значений цен на момент заказа"

	 End If

	 Else

	 MsgBox "Не все поля заполнены!!! Введите значение в поле Количество материала"

	 End If

	 Else

	 MsgBox "Не все поля заполнены!!! Введите значение в поле № материала"

	 End If

	 Else

	 MsgBox "Не все поля заполнены!!! Введите значение в поле Количество изделий"

	 End If

	 Else

	 MsgBox "Не все поля заполнены!!! Введите значение в поле № изделия"

	 End If

	 Else

	 MsgBox "Не все поля заполнены!!! Введите значение в поле №договора"

	 End If

	 Resume Exit_Добавить_Click

	End Sub

	

	Private Sub Клон_Click()

	On Error GoTo Err_Клон_Click

	 Dim nd As Integer

	 Dim ni As String

	 Dim ki As String

	 Dim km As String

	 Dim dc1 As String

	 Dim dc2 As String

	 Dim mc1 As String

	 Dim mc2 As String

	 Dim m As Integer

	 №договора.SetFocus

	 nd = №договора.Text

	 №_изделия.SetFocus

	 ni = №_изделия.Text

	 Количество_изделий.SetFocus

	 ki = Количество_изделий.Text

	 Количество_материала.SetFocus

	 km = Количество_материала.Text

	 ДИМ_Цена__.SetFocus

	 ДИМ_Цена__.Locked = False

	 dc1 = ДИМ_Цена__.Text

	 ДИМ_Цена__.Locked = True

	 ДИМ_Цена_грн.SetFocus

	 ДИМ_Цена_грн.Locked = False

	 dc2 = ДИМ_Цена_грн.Text

	 ДИМ_Цена_грн.Locked = True

	 Материал_Цена__.SetFocus

	 Материал_Цена__.Locked = False

	 mc1 = Материал_Цена__.Text

	 Материал_Цена__.Locked = True

	 Материал_Цена_грн.SetFocus

	 Материал_Цена_грн.Locked = False

	 mc2 = Материал_Цена_грн.Text

	 Материал_Цена_грн.Locked = True

	 №_материала.SetFocus

	 m = №_материала.Text

	 DoCmd.GoToRecord , , acNewRec

	Exit_Клон_Click:

	 №договора.SetFocus

	 №договора.Text = nd

	 №_материала.SetFocus

	 №_материала.Text = m

	 №_изделия.SetFocus

	 №_изделия.Text = ni

	 Количество_изделий.SetFocus

	 Количество_изделий.Text = ki

	 Количество_материала.SetFocus

	 Количество_материала.Text = km

	 ДИМ_Цена__.SetFocus

	 ДИМ_Цена__.Locked = False

	 ДИМ_Цена__.Text = dc1

	 ДИМ_Цена__.Locked = True

	 ДИМ_Цена_грн.SetFocus

	 ДИМ_Цена_грн.Locked = False

	 ДИМ_Цена_грн.Text = dc2

	 ДИМ_Цена_грн.Locked = True

	 Материал_Цена__.SetFocus

	 Материал_Цена__.Locked = False

	 Материал_Цена__.Text = mc1

	 Материал_Цена__.Locked = True

	 Материал_Цена_грн.SetFocus

	 Материал_Цена_грн.Locked = False

	 Материал_Цена_грн.Text = mc2

	 Материал_Цена_грн.Locked = True

	 Цена.Enabled = True

	 Exit Sub

	Err_Клон_Click:

	 MsgBox "Не все поля заполнены!!! Такую запись нельзя клонировать" + Err.Description

	 Resume Exit_Клон_Click

	End Sub

	

	Private Sub Кнопка24_Click()

	On Error GoTo Err_Кнопка24_Click

	 DoCmd.Close

	Exit_Кнопка24_Click:

	 Exit Sub

	Err_Кнопка24_Click:

	 MsgBox Err.Description

	 Resume Exit_Кнопка24_Click

	End Sub

	

	Програмний код форми “Материал”:

	Option Compare Database

	

	Private Sub ДобавитьМатериал_Click()

	On Error GoTo Err_ДобавитьМатериал_Click

	 DoCmd.GoToRecord , , acNewRec

	Exit_ДобавитьМатериал_Click:

	 Exit Sub

	Err_ДобавитьМатериал_Click:

	 Группа.SetFocus

	 If (Группа.Text <> "") Then

	 Название.SetFocus

	 If (Название.Text <> "") Then

	 Единица_измерения.SetFocus

	 If (Единица_измерения.Text <> "") Then

	 Цена__.SetFocus

	 If (Цена__.Text <> "") Then

	 Цена_грн.SetFocus

	 MsgBox "Не все поля заполнены!!! Введите значение в поле Цена грн"

	 Else

	 MsgBox "Не все поля заполнены!!! Введите значение в поле Цена $"

	 End If

	 Else

	 MsgBox "Не все поля заполнены!!! Введите значение в поле Единица измерения"

	 End If

	 Else

	 MsgBox "Не все поля заполнены!!! Введите значение в поле Название"

	 End If

	 Else

	 MsgBox "Не все поля заполнены!!! Введите значение в поле Группа"

	 End If

	 Resume Exit_ДобавитьМатериал_Click

	End Sub

	

	Private Sub Кнопка16_Click()

	On Error GoTo Err_Кнопка16_Click

	 DoCmd.Close

	Exit_Кнопка16_Click:

	 Exit Sub

	Err_Кнопка16_Click:

	 MsgBox Err.Description

	 Resume Exit_Кнопка16_Click

	End Sub

	

	Програмний код форми “Отчетность”:

	Option Compare Database

	

	Private Sub Form_Load()

	 Form.Caption = "Отчетность"

	End Sub

	

	Private Sub Кнопка2_Click()

	On Error GoTo Err_Кнопка2_Click

	 DoCmd.Close

	Exit_Кнопка2_Click:

	 Exit Sub

	Err_Кнопка2_Click:

	 MsgBox Err.Description

	 Resume Exit_Кнопка2_Click

	 

	End Sub

	

	Private Sub Изделие_Click()

	On Error GoTo Err_Изделие_Click

	 Dim stDocName As String

	 stDocName = ChrW(1048) & ChrW(1079) & ChrW(1076) & ChrW(1077) & ChrW(1083) & ChrW(1080) & ChrW(1103)

	 DoCmd.OpenReport stDocName, acPreview

	Exit_Изделие_Click:

	 Exit Sub

	Err_Изделие_Click:

	 MsgBox Err.Description

	 Resume Exit_Изделие_Click

	End Sub

	

	Private Sub ПечатьИ_Click()

	On Error GoTo Err_ПечатьИ_Click

	 Dim stDocName As String

	 stDocName = ChrW(1048) & ChrW(1079) & ChrW(1076) & ChrW(1077) & ChrW(1083) & ChrW(1080) & ChrW(1103)

	 DoCmd.OpenReport stDocName, acNormal

	Exit_ПечатьИ_Click:

	 Exit Sub

	Err_ПечатьИ_Click:

	 MsgBox Err.Description

	 Resume Exit_ПечатьИ_Click

	End Sub

	

	Private Sub Материал_Click()

	On Error GoTo Err_Материал_Click

	 Dim stDocName As String

	 stDocName = ChrW(1052) & ChrW(1072) & ChrW(1090) & ChrW(1077) & ChrW(1088) & ChrW(1080) & ChrW(1072) & ChrW(1083) & ChrW(1099)

	 DoCmd.OpenReport stDocName, acPreview

	Exit_Материал_Click:

	 Exit Sub

	Err_Материал_Click:

	 MsgBox Err.Description

	 Resume Exit_Материал_Click

	End Sub

	

	Private Sub ПечатьМ_Click()

	On Error GoTo Err_ПечатьМ_Click

	 Dim stDocName As String

	 stDocName = ChrW(1052) & ChrW(1072) & ChrW(1090) & ChrW(1077) & ChrW(1088) & ChrW(1080) & ChrW(1072) & ChrW(1083) & ChrW(1099)

	 DoCmd.OpenReport stDocName, acNormal

	Exit_ПечатьМ_Click:

	 Exit Sub

	Err_ПечатьМ_Click:

	 MsgBox Err.Description

	 Resume Exit_ПечатьМ_Click

	End Sub

	

	Private Sub ПечатьФ_Click()

	On Error GoTo Err_ПечатьФ_Click

	 Dim stDocName As String

	 stDocName = ChrW(1047) & ChrW(1072) & ChrW(1082) & ChrW(1072) & ChrW(1079) & ChrW(1095) & ChrW(1080) & ChrW(1082) & ChrW(32) & ChrW(1060) & ChrW(1072) & ChrW(1084) & ChrW(1080) & ChrW(1083) & ChrW(1080) & ChrW(1103)

	 DoCmd.OpenReport stDocName, acNormal

	Exit_ПечатьФ_Click:

	 Exit Sub

	Err_ПечатьФ_Click:

	 MsgBox Err.Description

	 Resume Exit_ПечатьФ_Click

	End Sub

	

	Private Sub ФИО_Click()

	On Error GoTo Err_ФИО_Click

	 Dim stDocName As String

	 stDocName = ChrW(1047) & ChrW(1072) & ChrW(1082) & ChrW(1072) & ChrW(1079) & ChrW(1095) & ChrW(1080) & ChrW(1082) & ChrW(32) & ChrW(1060) & ChrW(1048) & ChrW(1054)

	 DoCmd.OpenReport stDocName, acPreview

	Exit_ФИО_Click:

	 Exit Sub

	Err_ФИО_Click:

	 MsgBox Err.Description

	 Resume Exit_ФИО_Click

	End Sub

	

	Private Sub ПечатьФИО_Click()

	On Error GoTo Err_ПечатьФИО_Click

	 Dim stDocName As String

	 stDocName = ChrW(1047) & ChrW(1072) & ChrW(1082) & ChrW(1072) & ChrW(1079) & ChrW(1095) & ChrW(1080) & ChrW(1082) & ChrW(32) & ChrW(1060) & ChrW(1048) & ChrW(1054)

	 DoCmd.OpenReport stDocName, acNormal

	Exit_ПечатьФИО_Click:

	 Exit Sub

	Err_ПечатьФИО_Click:

	 MsgBox Err.Description

	 Resume Exit_ПечатьФИО_Click

	End Sub

	

	Private Sub ДоговорФЛ_Click()

	On Error GoTo Err_ДоговорФЛ_Click

	 Dim stDocName As String

	 stDocName = ChrW(1044) & ChrW(1086) & ChrW(1075) & ChrW(1086) & ChrW(1074) & ChrW(1086) & ChrW(1088) & ChrW(32) & ChrW(1060) & ChrW(1051)

	 DoCmd.OpenReport stDocName, acPreview

	

	Exit_ДоговорФЛ_Click:

	 Exit Sub

	Err_ДоговорФЛ_Click:

	 MsgBox Err.Description

	 Resume Exit_ДоговорФЛ_Click

	End Sub

	

	Private Sub ПечатьД_Click()

	On Error GoTo Err_ПечатьД_Click

	 Dim stDocName As String

	 stDocName = ChrW(1044) & ChrW(1086) & ChrW(1075) & ChrW(1086) & ChrW(1074) & ChrW(1086) & ChrW(1088) & ChrW(32) & ChrW(1060) & ChrW(1051)

	 DoCmd.OpenReport stDocName, acNormal

	Exit_ПечатьД_Click:

	 Exit Sub

	Err_ПечатьД_Click:

	 MsgBox Err.Description

	 Resume Exit_ПечатьД_Click

	End Sub

	

	Private Sub Попфз_Click()

	On Error GoTo Err_Попфз_Click

	 Dim stDocName As String

	 stDocName = ChrW(1047) & ChrW(1072) & ChrW(1082) & ChrW(1072) & ChrW(1079) & ChrW(1095) & ChrW(1080) & ChrW(1082) & ChrW(32) & ChrW(1060) & ChrW(1072) & ChrW(1084) & ChrW(1080) & ChrW(1083) & ChrW(1080) & ChrW(1103)

	 DoCmd.OpenReport stDocName, acPreview

	Exit_Попфз_Click:

	 Exit Sub

	Err_Попфз_Click:

	 MsgBox Err.Description

	 Resume Exit_Попфз_Click

	End Sub

	Коди запитів на SQL

	

	Договор ФЮЛ - запит інформації, необхідної для створення договору:

	SELECT Договор.[№ договора], Договор.[Дата заключения], Договор.[Срок к установке], Договор.[Дата окончания гарантии], Заказчик.Фамилия, Заказчик.Имя, Заказчик.Отчество, [Физическое лицо].[Серия паспорта], [Физическое лицо].[№ паспорта], Sum(ДИМ![Цена $]*ДИМ![Количество материала]*ДИМ![Количество изделий]*Изделие!Сложность) AS Выражение1, Sum(ДИМ![Цена грн]*ДИМ![Количество материала]*ДИМ![Количество изделий]*Изделие!Сложность) AS Выражение2, [Юридическое лицо].[Имя фирмы]

	FROM Материал INNER JOIN (Изделие INNER JOIN (((Заказчик INNER JOIN (Договор INNER JOIN ДИМ ON Договор.[№ договора] = ДИМ.№договора) ON Заказчик.[Код заказчика] = Договор.[Код заказчика]) LEFT JOIN [Физическое лицо] ON Заказчик.[Код заказчика] = [Физическое лицо].[Код заказчика]) LEFT JOIN [Юридическое лицо] ON Заказчик.[Код заказчика] = [Юридическое лицо].[Код заказчика]) ON Изделие.[№ изделия] = ДИМ.[№ изделия]) ON Материал.[№ материала] = ДИМ.[№ материала]

	GROUP BY Договор.[№ договора], Договор.[Дата заключения], Договор.[Срок к установке], Договор.[Дата окончания гарантии], Заказчик.Фамилия, Заказчик.Имя, Заказчик.Отчество, [Физическое лицо].[Серия паспорта], [Физическое лицо].[№ паспорта], [Юридическое лицо].[Имя фирмы]

	HAVING (((Договор.[№ договора])=[Запрос]![№ договора]));

	

	Заказчик Фамилия - запит інформації про замовника та його договори, за фамілією замовника:

	SELECT Заказчик.[Код заказчика], Заказчик.Фамилия, Заказчик.Имя, Заказчик.Отчество, Заказчик.Адрес, Заказчик.Телефон, Договор.[№ договора], Договор.[Срок к установке], Договор.[Дата окончания гарантии]

	FROM Заказчик INNER JOIN Договор ON Заказчик.[Код заказчика] = Договор.[Код заказчика]

	WHERE (((Заказчик.Фамилия)=[Запрос]![Фамилия]));

	Заказчик ФИО - запит інформації про замовника та його договори, за його Ф.І.П.:

	SELECT Заказчик.[Код заказчика], Заказчик.Фамилия, Заказчик.Имя, Заказчик.Отчество, Заказчик.Адрес, Заказчик.Телефон, Договор.[№ договора], Договор.[Срок к установке], Договор.[Дата окончания гарантии]

	FROM Заказчик INNER JOIN Договор ON Заказчик.[Код заказчика] = Договор.[Код заказчика]

	WHERE (((Заказчик.Фамилия)=[Запрос]![Фамилия]) AND ((Заказчик.Имя)=[Запрос]![Имя]) AND ((Заказчик.Отчество)=[Запрос]![Отчество]));

	

	Изделия - запит інформації про вироби за їх найменуванням:

	SELECT Изделие.[№ изделия], Изделие.Наименование, Изделие.Сложность, Изделие.[Общий вид экземпляра]

	FROM Изделие

	WHERE (((Изделие.Наименование)=[Запрос]![Наименование]));

	

	Материалы - запит інформації про матеріали за групою, до якої вони належать:

	SELECT Материал.[№ материала], Материал.Группа, Материал.Название, Материал.[Единица измерения], Материал.[Цена $], Материал.[Цена грн], Материал.[Внешний вид]

	FROM Материал

	WHERE (((Материал.Группа)=[Запрос]![Группа]));

	
Додаток Б. Інструкція користувача

	Робота з базою даних меблевої фірми починається з запуску форми МЕБЕЛЬ. Вона показана на рисунку 1.

	

	Рисунок 1 – Головна форма програмного забезпечення для меблевої фірми.

	Для виходу з програми необхідно натиснути найнижчу кнопку. Натиснувши кнопку “О программе”, ми відкриємо форму довідки. Вона показана на рисунку 2.

	

	

	Рисунок 2 – Форма довідки

	

	Натиснувши кнопку “Клієнти фірми“ – відкриємо форму, яка дозволяє вводити нових клієнтів фірми. Ця форма зображена на рисунку 3 заповнена для фізичної особи та на рисунку 4 – для юридичної особи.

	

	Рисунок 3 – Форма замовників для фізичної особи

	

	

	Рисунок 4 – Форма замовників для юридичної особи

	

	В цій формі необхідно ввести значення в усі поля, що знаходяться вище Приміток, а потім вибравши статус особи: фізична або юридична, і заповнити відповідні поля нижче від Приміток. На цій формі, як і на усіх наступних формах, про які піде розмова, поля, що виділені жовтим кольором обов’язкові, а прозорі поля – необов’язкові. Вибір певного статусу відкриває доступ до відповідних полей та закриваєоткрі до тих, які йому не відповідають.

	Кнопка “Заключить договор” відкриває форму договорів. Ця форма зображена на рисунку 5.

	

	Рисунок 5 – форма договорів

	

	Для введення нового договору необхідно натиснути кнопку добавити або прокрутити всі записи до кінця. Заповнити всі обов’язкові поля (які не є прозорими) і знову натиснути кнопку добавити. Необов’язкове поле “Общий вид” заповнюється ескізним проектом або фотографією вже готового замовлення.

	Кнопка “Учет изделий” відкриває форму виробів. Ця форма зображена на рисунку 6.

	

	

	Рисунок 6 – форма виробів

	
Аналогічно заповнюється таблиця виробів: натиснути кнопку добавити, ввести номер виробу, його найменування, складність та загальний вигляд (необоовязкове поле), знову натиснути кнопку добавити.

	Кнопка “Адмініструвати калькуляцію” відкриває форму калькуляції, що дозволяє повязувати між собою договора, вироби та матеріали. Вона зображена на рисунку 7.

	

	

	Рисунок 7 – форма калькуляції

	

	Нові записи добавляються аналогічно попередньо розглянутим формам. Крім кнопок добавити та вийти є ще кнопки ціна та клонувати. Кнопка ціна дозволяє запам’ятати ті значення ціни вказаного матеріалу, які він мав на момент створення елементу калькуляції. Ця кнопка стає активною відразу після того як буде добавлений або змінений матеріал і перестає бути активною після її натискання. Усі поля цін не можуть бути заповнені вручну. Поточні ціни матеріалу заповнюються автоматично відразу після введення номеру матеріалу, а закупові ціни отримують своє значення при натисканні кнопки цна. Кнопка клонувати дозволяє створити новий запис із такими параметрами, як у запису, що клонується, для подальшої зміни, наприклад, номеру договору. Вона полегшує процес створення нових записів, сожих на вже існуючі. Кнопка “Администрировать материалы” відкриває форму матеріали, що дозволяє вводити нові записи для матеріалів, аналогічно іншим формам. Також ця форма використовується для зміни значень деяких матеріалів, наприклад, для зміни поточної ціни матеріалу. Зовнішній вигляд форми матеріалів показаний на рисунку 8.

	

	

	Рисунок 8 – форма матеріалів

	

	Кнопка “Отчеты и договоры” відкриває форму “отчетность”, яка поеазана на рисунку 9.

	

	

	Рисунок 9 – форма “отчетность”

	

	Форма “отчетность“ має парні кнопки, що дозволяють продивлятися та зберігати й відправляти на друк наступні звіти: звіт по виробу (рисунок 10), звіт по матеріалу (рисунок 11), звіт по договорах за фамілією (рисунок 12) чи Ф.І.П. клієнта (рисунок 13), та сам договір на придбання виробів у фірми (рисунок 14).

	

	Рисунок 10 – вхідні дані для звіту по виробам

	

	

	Рисунок 11 – вхідні дані для звіту по матеріалам

	

	

	Рисунок 12 – вхідні дані для звіту по договорам по фамілії

	

	

	Рисунок 13 – вхідні дані для звіту по договорам по Ф.І.П.

	

	

	Рисунок 14 – вхідні дані для отримання документу договору за номером договору