Учет основного оборудования на предприятии

Министерство образования и науки Российской Федерации

	Государственное образовательное учреждение высшего профессионального образования

		Камская инженерно-экономическая академия

		Кафедра А и ИТ

		

		

		

		

	Курсовая работа

	по дисциплине «Базы данных»

	на тему: «Учет основного оборудования на предприятии»

	

	

	

	

	

	Выполнил: ст. гр. 1509

	Сагындыков Л.Т.

	Проверил доцент:

	Бахвалова В.С.

	Проверил ассистент:

	Нуриева Н.П

	

	

	

	

	

	Набережные челны 2010

	


	Содержание

	

		Введение

		Глава 1. Задание

		Глава 2. Системный анализ предметной области

		Глава 3. Проектирование базы данных

		3.1 Проектирование базы данных декомпозиционным методом

		3.2 Проектирование базы данных с использованием ER- метода

		3.3 Проверка отношений на завершающей фазе проектирования

		3.4 Модель базы данных

		Глава 4. Выбор субд

		Глава 5. Разработка приложения

		5.1 Общая схема приложения

		5.2 Запросы и макросы, использованные в приложении

		5.3 Описание приложения

		5.3.1 Функциональные возможности приложения

		5.3.2 Инструкция пользователя

		Заключение

		Список использованной литературы

		Приложение

	

	
ВВЕДЕНИЕ

	

	Современный мир информационных технологий трудно представить себе без использования баз данных (БД). Практически все системы в той или иной степени связаны с функциями долговременного хранения и обработки информации. Фактически информация становится фактором, определяющим эффективность любой сферы деятельности. Увеличились информационные потоки и повысились требования к скорости обработки данных. В результате большинство операций не может быть выполнено вручную, они требуют применения наиболее перспективных компьютерных технологий. Любые административные решения требуют четкой и точной оценки ситуации и возможных перспектив ее изменения. 

	И если раньше в оценке ситуации участвовало несколько десятков факторов, которые могли быть вычислены вручную, то теперь таких факторов сотни и тысячи, и ситуация меняется не в течение года, а через несколько минут, а обоснованность принимаемых решений требуется большая, потому что и реакция на неправильные решения более серьезная, более быстрая и более мощная, чем раньше. И конечно, обойтись без использования БД, в этом случае невозможно.

	

	
ГЛАВА 1. ЗАДАНИЕ

	

	Необходимо спроектировать и реализовать реляционную БД учета основного оборудования на предприятии.

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

	Отчет по работе должен содержать:

	Системный анализ предметной области;

	Последовательность проектирования БД двумя методами (декомпозиционным и ER-методом);

	Обоснование выбора СУБД;

	Разработанное приложение для работы с БД, а также общую блок-схему и блок-схему алгоритмов;

	Инструкцию пользователя для разработанного приложения.

	

	
ГЛАВА 2. СИСТЕМНЫЙ АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ

	

	Данная БД разработана для учета имеющегося основного оборудования на одном предприятии. При разработке необходимо учесть следующие требования:

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

	Обрабатывающие оборудования, которые имеют схожие технические характеристики необходимо объединить в кластеры.

	Каждому обрабатывающему оборудованию необходимо привязать набор инструментов и приспособлений

	Необходимо иметь возможность получения отчета по всем имеющимся оборудованиям.

	Необходимо иметь возможность получения списка оборудования, способных заменить вышедшее из строя.

	Для корректной работы БД необходимо разделить основное оборудование на транспортное и обрабатывающее.

	Таким образом, в БД необходимо хранить:

	Данные об обрабатывающем оборудовании:

	Код оборудования (КодОбр)– каждому обрабатывающему оборудованию присваивается уникальный код

	Марка (МаркаОбр) – определяет технические характеристики обрабатывающего оборудования

	Габаритные размеры (ГабарОбр) – общий для оборудования одной марки.

	Наибольшая длина обрабатываемых деталей (ДлДетОбр) - параметр общий для оборудования одной марки. Величина указывается в мм.

	Наибольший диаметр обрабатываемых деталей (ДиамДетОбр) –параметр общий для оборудования одной марки. Если деталь типа призма, то вместо диаметра указывается наибольший из ширины и высоты. Величина указывается в мм.

	Пределы частот вращений главного шпинделя (ЧастотОбр) – общий параметр для оборудования одной марки. Величина указывается в мин-1

	Мощность привода главного движения (МощОбр) – общий параметр для оборудования одной марки. Величина указывается кВт.

	Стоимость (СтоимОбр) – определяет стоимость приобретения оборудования. Величина указывается в тыс. руб.

	Дата изготовления (ДатаОбр)- определяет год выпуска обрабатывающего оборудования

	Данные об транспортном оборудовании:

	Код оборудования (КодТр)– каждому транспортному оборудованию присваивается уникальный код

	Марка (МаркаТр) – определяет технические характеристики транспортного оборудования

	Скорость перемещения (СкорТр) – общий параметр для одной марки. Величина указывается в м/мин.

	Габаритные размеры (ГабарТр) – общий параметр для одной марки.

	Грузоподъемность (ГрузТр)–общий параметр для оборудования одной марки. Величина указывается в кг.

	Масса транспортного оборудования (МассаТр) – общий параметр для оборудования одной марки. Величина указывается в т.

	Стоимость (СтоимТр) – определяет стоимость приобретения транспортного оборудования. Величина указывается в тыс. руб.

	Данные об инструменте/приспособлении:

	Код инструмента/приспособления (КодИП) – уникальный номер инструмента/приспособления на предприятии

	Марка инструмента/приспособления (МаркИП) - определяет технические характеристики инструмента/приспособления

	Назаначение инструмента/приспособления (НазнИП) – определяет техническое назначение инструмента/приспособления: резец проходной, резец копировальный и т.д.

	«Инструмент» (ИнсПрисп) – параметр для разделения инструментов и приспособлений, хранимое значение логическое.

	Данные об автоматической транспортно накопительно-складской системе (далее просто АТНСС):

	1. Код АТНСС (КодАТНСС) – уникальный код автоматической транспотрно-накопительно-складской системы.

	2. Пропускная способность (ПропАТНСС)–число перевозимых ед.изделия в час

	3. Площадь охватываемая данной АТНСС (ПлощАТНСС) – указывается в м2

	Данные о гибком автоматизированном участке (далее просто ГАУ):

	Код ГАУ (КодГАУ) – каждому ГАУ присваивается уникальный код.

	Назначение ГАУ (НазнГАУ) – разные участки могут изготавливать одни и те же детали.

	Площадь, занимаемая ГАУ (ПлощГАУ) – указывается в м2

	Данные о гибкой производственной системе (далее просто ГПС):

	Код ГПС (КодГПС) – каждому ГПС присваивается уникальный код.

	Назначение ГПС (НазнГПС) –техническая информация о выполняемой работе на ГПС.

	Наименовние цеха (НаимЦех) – несколько ГПС могут быть привязанык одному цеху.

	Данные о кластерах (объединение транспортного оборудования по определенным характеристикам в некотором диапазоне):

	Код кластера (КодКласт)- уникальный код кластера

	Частота вращения главного шпинделя (ЧастКласт) - устанавливается для каждого кластера

	Длина обрабатываемых деталей (ДлинКласт)- устанавливается для каждого кластера

	Диаметр обрабатываемых деталей (ДиамКласт) - устанавливается для каждого кластера. Если деталь типа призма, то вместо диаметра указывается наибольший из ширины и высоты.

	Процент отклонения (ОтклКласт) – определяет диапазон отклонения параметров в пределах одного кластера

	Количественные характеристики

	При построении модели базы данных за основу выбран набор нормализованных отношений, полученный в результате проектирования ER-методом. Модель представлена на рисунке ниже. Предполагается, что количество обрабатывающего и транспортного оборудования на предприятии не более 1000 ед. и 500 ед. соответсвенно. В базе данных будет хранится информация о 5000 обрабатывающих и 2000 транспортных оборудованиях. Число ГАУ будет равно 200, ГПС - 30, а АТНСС – 70. Число используемых инструментов/приспособлений – 10000. Предполагается, что число кластеров будет не более 10000.

	

	
ГЛАВА 3. ПРОЕКТИРОВАНИЕ БАЗЫ ДАННЫХ

	

	3.1 Проектирование базы данных декомпозиционным методом

	

	Составим универсальное отношение, содержащее атрибуты, указанные ниже, и внесём в него ряд записей.

	Атрибуты, хранимые в БД:

	Код транспортного оборудования (КодТр), 

	код инструмента/приспособления (КодИП), 

	код обрабатывающего оборудования (КодОбр), 

	марка обрабатывающего оборудования (МаркаОбр), 

	габаритные размеры обрабатывающего оборудования (ГабарОбр), 

	наибольшая длина обрабатываемых деталей на обрабатывающем оборудовании (ДлДетОбр), 

	наибольший диаметр обрабатываемых деталей на обрабатывающем оборудовании (ДиамДетОбр), 

	пределы частот вращений главного шпинделя на обрабатывающем оборудовании (ЧастотОбр), 

	мощность привода главного движения обрабатывающего оборудования (МощОбр), 

	стоимость обрабатывающего оборудования (СтоимОбр), 

	дата изготовления обрабатывающего оборудования (ДатаОбр), 

	марка транспортного оборудования (МаркаТр), 

	скорость перемещения транспортного оборудования (СкорТр), 

	габаритные размеры транспортного оборудования (ГабарТр), 

	грузоподъемность транспортного оборудования (ГрузТр), 

	масса транспортного оборудования (МассаТр), 

	стоимость транспортного оборудования (СтоимТр), 

	марка инструмента/приспособления (МаркИП), 

	назначение инструмента/приспособления (НазнИП), 

	инструмент или приспосбление (ИнсПрисп), 

	код ГАУ (КодГАУ), назначение ГАУ (НазнГАУ), 

	площадь, занимаемая ГАУ (ПлощГАУ), 

	код АТНСС (КодТНС), 

	пропускная способность АТНСС (ПропТНС), 

	площадь охватываемая данной АТНСС (ПлощТНС), 

	код ГПС (КодГПС), 

	назначение ГПС (НазнГПС), 

	наименовние цеха (НаимЦех), 

	код кластера (КодКласт), 

	частота вращения главного шпинделя в кластере (ЧастКласт), 

	длина обрабатываемых деталей в кластере (ДлинКласт), 

	диаметр обрабатываемых деталей в кластере (ДиамКласт), 

	процент отклонения в кластере (ОтклКласт)

	

	КодТр

	КодИП

	КодОбр

	МаркаОбр

	ГабарОбр

	ДлДетОбр

	ДиамДетОбр

	Частот

	Обр

	Мощ

	Обр

	Стоим

	Обр

	1

	1

	1

	16К20

	2505х1190

	2000

	400

	1600

	10

	120

	1

	2

	1

	16К20

	2505х1190

	2000

	400

	1600

	10

	120

	2

	3

	1

	16К20

	2505х1190

	2000

	400

	1600

	10

	120

	2

	4

	2

	1А64

	5780х2000

	2800

	800

	750

	22

	150

	3

	5

	2

	1А64

	5780х2000

	2800

	800

	750

	22

	150

	4

	6

	2

	1А64

	5780х2000

	2800

	800

	750

	22

	150

	5

	7

	3

	ИРТ180

	2751х2170

	165

	200

	4000

	25

	1200

	5

	8

	3

	ИРТ180

	2751х2170

	165

	200

	4000

	25

	1200

	6

	9

	4

	2Н150

	1240х810

	650

	50

	1800

	4

	80

	6

	10

	5

	2М55

	2445х1000

	550

	50

	2000

	4

	110

	

	ДатаОбр

	Марка

	Тр

	СкорТр

	ГабарТр

	ГрузТр

	МассаТр

	СтоимТр

	МаркИП

	НазнИП

	Инс

	Присп

	Код

	ГАУ

	11.05.1991

	С4057

	90

	2234х1074

	500

	2500

	800

	20872-20

	резец копир.

	да

	1

	11.05.1991

	С4057

	90

	2234х1074

	500

	2500

	800

	UNC315-1

	патрон

	нет

	1

	11.05.1991

	0М9913

	80

	1900х990

	250

	800

	350

	35-В92-82

	резец проход.

	да

	1

	13.08.1993

	0М9913

	80

	1900х990

	250

	800

	350

	35-558-77

	резец для канавок

	да

	2

	13.08.1993

	С4234

	100

	2530х1074

	500

	3000

	1000

	UNC400-2

	патрон

	нет

	2

	13.08.1993

	С4057

	90

	2234х1074

	500

	2500

	700

	20872-20

	резец копир.

	да

	2

	11.05.1998

	0М9913

	80

	1900х990

	250

	800

	300

	UNC315-2

	патрон

	нет

	1

	11.05.1998

	0М9913

	80

	1900х990

	250

	800

	300

	35-558-77

	резец для канавок

	да

	1

	07.01.1988

	С4057

	90

	2234х1074

	500

	2500

	580

	UNC250-3

	патрон

	нет

	3

	20.11.1984

	С4057

	90

	2234х1074

	500

	2500

	580

	UNC250-2

	патрон

	нет

	3

	

	НазнГАУ

	Площ

	ГАУ

	Код

	ТНС

	Проп

	ТНС

	Площ

	ТНС

	Код

	ГПС

	Назн

	ГПС

	Наим

	Цех

	Код

	Класт

	Обточка

	дет. Колесо

	80

	1

	700

	150

	1

	«Колесо»

	Дизельный

	1

	Обточка

	дет. Колесо

	80

	1

	700

	150

	1

	«Колесо»

	Дизельный

	1

	Обточка

	дет. Колесо

	80

	2

	1000

	300

	1

	«Колесо»

	Дизельный

	1

	Обточка дет. втулку

	60

	2

	1000

	300

	2

	«Втулка»

	Дизельный

	2

	Обточка дет. втулку

	60

	2

	1000

	300

	2

	«Втулка»

	Дизельный

	2

	Обточка дет. втулку

	60

	2

	1000

	300

	2

	«Втулка»

	Дизельный

	2

	Обточка

	дет. Колесо

	80

	3

	800

	200

	1

	«Колесо»

	Дизельный

	3

	Обточка

	дет. Колесо

	80

	3

	800

	200

	1

	«Колесо»

	Дизельный

	3

	Сверление отверстий

	40

	3

	800

	200

	2

	«Втулка»

	Дизельный

	4

	Сверление

	отверстий

	40

	3

	800

	200

	2

	«Втулка»

	Дизельный

	4

	

	ЧастКласт

	ДлинКласт

	ДиамКласт

	ОтклКласт

	1600

	2000

	400

	17

	1600

	2000

	400

	17

	1600

	2000

	400

	17

	750

	2800

	800

	17

	750

	2800

	800

	17

	750

	2800

	800

	17

	4000

	200

	165

	17

	4000

	200

	165

	17

	1800

	650

	50

	17

	1800

	650

	50

	17

	

	Проанализируем ФЗ данного отношения:

	Код обрабатывающего оборудования – уникален и однозначно определяет марку оборудования, стоимость оборудования, дата изготовления оборудования. В тоже время каждое обрабатывающее оборудования однозначно привязано к одному кластеру и одному ГАУ.

	В свою очередь, марка оборудования однозначно определяет габаритные размеры оборудования, наибольшую длину и диаметр обрабатываемых деталей, пределы частот вращений главного шпинделя и мощность привода главного движения.

	Таким образом, имеем:

	

	КодОбр  МаркаОбр;

	КодОбр  СтоимОбр;

	КодОбр  ДатаОбр;

	КодОбр  КодКласт;

	КодОбр  КодГАУ;

	МаркаОбр  ГабарОбр;

	МаркаОбр  ДлДетОбр;

	МаркаОбр  ДиамДетОбр;

	МаркаОбр  ЧастотОбр;

	МаркаОбр  МощОбр;

	

	Если известен код транспортного оборудования, то по нему можно определить марку транспортного оборудования, стоимость транспортного оборудования. В тоже время каждое транспортное оборудование привязано к одному АТНСС.

	В свою очередь, зная марку транспортного оборудования, мы однозначно знаем скорость перемещения, габаритные размеры, грузоподъемность и масса транспортного оборудования.

	Таким образом, имеем:

	

	КодТр  МаркаТр;

	КодТр  СтоимТр;

	КодТр  КодТНС;

	МаркаТр  СкорТр;

	МаркаТр  ГабарТр;

	МаркаТр  ГрузТр;

	МаркаТр  МассаТр;

	

	Код инструмента/приспособления однозначно определяет марку инструмента/приспособления, назначение инструмента/приспособления и определяет инструмент это или приспособление. В тоже время код интрумента/приспособления однозначно определяет оборудование, к которому привязано.

	Таким образом, имеем:

	

	КодИП  МаркИП;

	КодИП  НазнИП;

	КодИП  ИнсПрисп;

	КодИП  КодОбр;

	

	Код АТНСС однозначно определяет пропускную способность и площадь, охватываемая данной АТНСС.

	Таким образом, имеем:

	

	КодТНС  ПропТНС;

	КодТНС  ПлощТНС;

	

	Код ГАУ однозначно определяет назначение и площадь, занимаемую ГАУ. В тоже время код ГАУ совместно с кодом АТНСС однозначно привязано к одному ГПС. Таким образом, несколько ГАУ и АТНСС могут быть привязано к одному ГПС.

	Таким образом, имеем:

	

	КодГАУ  НазнГАУ;

	КодГАУ  ПлощГАУ;

	КодГАУ, КодТНС  КодГПС;

	

	Код ГПС однозначно определяет назначение ГПС и наименование цеха к которому оно привязано.

	Таким образом, имеем:

	

	КодГПС  НазнГПС;

	КодГПС  НаимЦех;

	

	Код кластера однозначно процент отклонения параметров, определяет частоту вращения главного шпинделя, длину обрабатываемых деталей, диаметр обрабатываемых деталей на оборудовании принадлежащем данному кластеру.

	Таким образом, имеем:

	

	КодКласт  ЧастКласт;

	КодКласт  ДлинКласт;

	КодКласт  ДиамКласт;

	КодКласт  ОтклКласт;

	

	С учётом вышесказанного диаграмма ФЗ имеет вид (см. рис.).

	

	R

	

	

	В данной курсовой работе нет избыточных ФЗ, следовательно, универсальное отношение имеет минимальное покрытие.

	Определяем возможные ключи и детерминанты отношения R

	

	Возможный ключ

	< КодИП, КодТр >

	Детерминант

	КодКласт

	КодОбр

	КодИП

	КодТр

	МаркаОбр

	МаркаТр

	КодГАУ

	КодТНС

	КодГАУ,КодТНС

	КодГПС

	

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

	Для проведения декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: КодГПС  НазнГПС, НаимЦех. В результате получим два отношения R1 и R2.

	

	R1 ГПС (КодГПС, НазнГПС, НаимЦех)

	

	

	

	Возможный ключ

	Детерминант

	<КодГПС>

	<КодГПС>

	

	Т.е. отношение находится в НФБК и дальнейшая его декомпозиция не требуется (возможный ключ и детерминант совпадают):

	R2 (КодТр, КодИП, КодОбр, МаркаОбр, ГабарОбр, ДлДетОбр, ДиамДетОбр, ЧастотОбр, МощОбр, СтоимОбр, ДатаОбр, МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр, СтоимТр, МаркИП, НазнИП, ИнсПрисп, КодГАУ, НазнГАУ, ПлощГАУ, КодТНС, ПропТНС, ПлощТНС, КодГПС, КодКласт, ЧастКласт, ДлинКласт, ДиамКласт,ОтклКласт)

	


	

	

	Возможный ключ

	< КодИП, КодТр >

	Детерминант

	МаркаОбр

	КодОбр

	КодИП

	КодТр

	МаркаТр

	КодГАУ

	КодТНС

	КодГАУ,КодТНС

	КодКласт

	

	Т.к. возможный ключ не является детерминантом, необходима дальнейшая декомпозиция. Для проведения декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: КодКласт ЧастКласт, ДлинКласт, ДиамКласт,ОтклКласт. В результате получим два отношения R3 и R4:

	




	R3 Кластер (КодКласт, ЧастКласт, ДлинКласт, ДиамКласт,ОтклКласт)

	

	

	

	Возможный ключ

	Детерминант

	<КодКласт>

	<КодКласт>

	

	Т.е. отношение находится в НФБК и дальнейшая его декомпозиция не требуется (возможный ключ и детерминант совпадают).

	R4 (КодТр, КодИП, КодОбр, МаркаОбр, ГабарОбр, ДлДетОбр, ДиамДетОбр, ЧастотОбр, МощОбр, СтоимОбр, ДатаОбр, МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр, СтоимТр, МаркИП, НазнИП, ИнсПрисп, КодГАУ, НазнГАУ, ПлощГАУ, КодТНС, ПропТНС, ПлощТНС, КодГПС, КодКласт)

	

	

	




	

	Возможный ключ

	< КодИП, КодТр >

	Детерминант

	МаркаОбр

	КодОбр

	КодИП

	КодТр

	МаркаТр

	КодГАУ

	КодТНС

	КодГАУ,КодТНС

	

	Т.к. возможный ключ не является детерминантом, необходима дальнейшая декомпозиция. Для проведения декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: МаркаОбр  ГабарОбр, ДлДетОбр, ДиамДетОбр, ЧастотОбр, МощОбр. В результате получим два отношения R5 и R6:

	

	R5 МаркаОбраб (МаркаОбр, ГабарОбр, ДлДетОбр,ДиамДетОбр, ЧастотОбр, МощОбр)

	

	

	

	Возможный ключ

	Детерминант

	<МаркаОбр >

	< МаркаОбр >

	

	Т.е. отношение находится в НФБК и дальнейшая его декомпозиция не требуется (возможный ключ и детерминант совпадают).

	

	R6 (КодТр, КодИП, КодОбр, МаркаОбр, СтоимОбр, ДатаОбр, МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр, СтоимТр, МаркИП, НазнИП, ИнсПрисп, КодГАУ, НазнГАУ, ПлощГАУ, КодТНС, ПропТНС, ПлощТНС, КодГПС, КодКласт)

	

	

	

	Возможный ключ

	< КодИП, КодТр >

	Детерминант

	МаркаТр

	КодОбр

	КодИП

	КодТр

	КодГАУ

	КодТНС

	КодГАУ,КодТНС

	

	Т.к. возможный ключ не является детерминантом, необходима дальнейшая декомпозиция. Для проведения декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: КодГАУ  НазнГАУ, ПлощГАУ. В результате получим два отношения R7 и R8:

	

	R7 ГАУ (КодГАУ, НазнГАУ, ПлощГАУ)

	

	

	

	Возможный ключ

	Детерминант

	<КодГАУ>

	<КодГАУ>




	Т.е. отношение находится в НФБК и дальнейшая его декомпозиция не требуется (возможный ключ и детерминант совпадают).

	

	R8 (КодТр, КодИП, КодОбр, МаркаОбр, СтоимОбр, ДатаОбр, МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр, СтоимТр, МаркИП, НазнИП, ИнсПрисп, КодГАУ, КодТНС, ПропТНС, ПлощТНС, КодГПС, КодКласт)

	

	

	Возможный ключ

	< КодИП, КодТр >

	Детерминант

	МаркаТр

	КодОбр

	КодИП

	КодТр

	КодТНС

	КодГАУ,КодТНС

	

	Т.к. возможный ключ не является детерминантом, необходима дальнейшая декомпозиция. Для проведения декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: КодТНС  ПропТНС, ПлощТНС. В результате получим два отношения R9 и R10:

	

	R9 ТНС (КодТНС, ПропТНС, ПлощТНС)

	

	




	

	Возможный ключ

	Детерминант

	<КодТНС>

	<КодТНС>

	

	Т.е. отношение находится в НФБК и дальнейшая его декомпозиция не требуется (возможный ключ и детерминант совпадают).

	

	R10 (КодТр, КодИП, КодОбр, МаркаОбр, СтоимОбр, ДатаОбр, МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр, СтоимТр, МаркИП, НазнИП, ИнсПрисп, КодГАУ, КодТНС, КодГПС, КодКласт)

	

	

	Возможный ключ

	< КодИП, КодТр >

	Детерминант

	МаркаТр

	КодОбр

	КодИП

	КодТр

	КодГАУ,КодТНС

	

	Т.к. возможный ключ не является детерминантом, необходима дальнейшая декомпозиция. Для проведения декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: КодГАУ, КодТНС  КодГПС. В результате получим три отношения R11, R12 и R13:

	

	R11 ГАУ-ТНС (КодГАУ, КодТНС, КодГПС)

	




	

	

	Возможный ключ

	< КодГАУ, КодТНС >

	Детерминант

	<КодГАУ,КодТНС>

	

	Т.е. отношение находится в НФБК и дальнейшая его декомпозиция не требуется (возможный ключ и детерминант совпадают).

	

	R12 (КодТр, МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр, СтоимТр, КодТНС)

	

	

	

	Возможный ключ

	< КодТр >

	Детерминант

	МаркаТр

	КодТр

	Т.к. возможный ключ не является детерминантом, необходима дальнейшая декомпозиция. Для проведения декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: МаркаТр  СкроТр, ГабарТр, ГрузТр, МассаТр. В результате получим три отношения R14 и R15:

	

	R14 МаркаТрансп (МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр)

	




	

	

	Возможный ключ

	Детерминант

	<МаркаТр >

	< МаркаТр >

	

	Т.е. отношение находится в НФБК и дальнейшая его декомпозиция не требуется (возможный ключ и детерминант совпадают).

	

	R15 Транспортное оборудование (КодТр, КодТНС, МаркаТр, СтоимТр)

	

	

	

	Возможный ключ

	Детерминант

	<КодТр>

	<КодТр>

	

	Т.е. отношение находится в НФБК и дальнейшая его декомпозиция не требуется (возможный ключ и детерминант совпадают).

	

	R13 (КодИП, КодОбр, МаркаОбр, СтоимОбр, ДатаОбр, МаркИП, НазнИП, ИнсПрисп, КодГАУ, КодКласт)

	




	

	

	Возможный ключ

	< КодИП>

	Детерминант

	КодОбр

	КодИП

	

	Т.к. возможный ключ не является детерминантом, необходима дальнейшая декомпозиция. Для проведения декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: КодОбр  КодКласт, МаркаОбр, КодГАУ, ДатаОбр, СтоимОбр. В результате получим три отношения R16 и R17:

	

	R16 Обрабатывающее оборудование (КодОбр, МаркаОбр, КодКласт, КодГАУ, ДатаОбр, СтоимОбр)

	

	

	

	Возможный ключ

	Детерминант

	<КодОбр>

	<КодОбр>

	

	Т.е. отношение находится в НФБК и дальнейшая его декомпозиция не требуется (возможный ключ и детерминант совпадают).




	R17 Инструмент/приспособление (КодИП, КодОбр, МаркИП, НазнИП, ИнсПрисп)

	

	

	

	Возможный ключ

	Детерминант

	<КодИП>

	<КодИП>

	

	Т.е. отношение находится в НФБК и дальнейшая его декомпозиция не требуется (возможный ключ и детерминант совпадают).

	В результате использования декомпозиционного метода проектирования получили набор из десяти нормализованных отношений.

	

	R1 ГПС (КодГПС, НазнГПС, НаимЦех)

	R3 Кластер (КодКласт, ЧастКласт, ДлинКласт, ДиамКласт,ОтклКласт)

	R5 МаркаОбраб (МаркаОбр, ГабарОбр, ДлДетОбр,ДиамДетОбр, ЧастотОбр, МощОбр)

	R7 ГАУ (КодГАУ, НазнГАУ, ПлощГАУ)

	R9 ТНС (КодТНС, ПропТНС, ПлощТНС)

	R11 ГАУ-ТНС (КодГАУ, КодТНС, КодГПС)

	R14 МаркаТрансп (МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр)

	R15 Транспортное оборудование (КодТр, КодТНС, МаркаТр, СтоимТр)

	R16 Обрабатывающее оборудование (КодОбр, МаркаОбр, КодКласт, КодГАУ, ДатаОбр, СтоимОбр)

	R17 Инструмент/приспособление (КодИП, КодОбр, МаркИП, НазнИП, ИнсПрисп)

	Заполним данными эти отношения:

	R1 ГПС (КодГПС, НазнГПС, НаимЦех)

	

	КодГПС

	НазнГПС

	НаимЦех

	1

	«Колесо»

	Дизельный

	2

	«Втулка»

	Дизельный

	

	R3 Кластер (КодКласт, ЧастКласт, ДлинКласт, ДиамКласт,ОтклКласт)

	

	КодКласт

	ЧастКласт

	ДлинКласт

	ДиамКласт

	ОтклКласт

	1

	1600

	2000

	400

	17

	2

	750

	2800

	800

	17

	3

	4000

	200

	165

	17

	4

	1800

	650

	50

	17

	

	R5 МаркаОбраб (МаркаОбр, ГабарОбр, ДлДетОбр,ДиамДетОбр, ЧастотОбр, МощОбр)

	

	МаркаОбр

	ГабарОбр

	ДлДетОбр

	ДиамДетОбр

	ЧастотОбр

	МощОбр

	16К20

	2505х1190

	2000

	400

	1600

	10

	1А64

	5780х2000

	2800

	800

	750

	22

	ИРТ180

	2751х2170

	165

	200

	4000

	25

	2Н150

	1240х810

	650

	50

	1800

	4

	2М55

	2445х1000

	550

	50

	2000

	4

	

	R7 ГАУ (КодГАУ, НазнГАУ, ПлощГАУ)

	

	КодГАУ

	НазнГАУ

	ПлощГАУ

	1

	Обточка дет. Колесо

	80

	2

	Обточка дет. втулку

	60

	3

	Сверление отверстий

	40

	

	R9 ТНС (КодТНС, ПропТНС, ПлощТНС)

	

	КодТНС

	ПропТНС

	ПлощТНС

	1

	700

	150

	2

	1000

	300

	3

	800

	200

	

	R11 ГАУ-ТНС (КодГАУ, КодТНС, КодГПС)

	

	КодГАУ

	КодТНС

	КодГПС

	1

	1

	1

	2

	2

	2

	1

	2

	1

	1

	3

	1

	3

	3

	2

	

	R14 МаркаТрансп (МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр)

	

	МаркаТр

	СкорТр

	ГабарТр

	ГрузТр

	МассаТр

	С4057

	90

	2234х1074

	500

	2500

	0М9913

	80

	1900х990

	250

	800

	С4234

	100

	2530х1074

	500

	3000

	

	R15 Транспортное оборудование (КодТр, МаркаТр, СтоимТр, КодТНС)

	

	КодТр

	МаркаТр

	СтоимТр

	КодТНС

	1

	С4057

	800

	1

	2

	0М9913

	350

	2

	3

	С4234

	1000

	2

	4

	С4057

	700

	2

	5

	0М9913

	300

	3

	6

	С4057

	580

	3

	

	R16 Обрабатывающее оборудование (КодОбр, МаркаОбр, ДатаОбр, СтоимОбр, КодКласт, КодГАУ)

	

	КодОбр

	МаркаОбр

	СтоимОбр

	ДатаОбр

	КодКласт

	КодГАУ

	1

	16К20

	120

	11.05.1991

	1

	1

	2

	1А64

	150

	13.08.1993

	2

	2

	3

	ИРТ180

	1200

	11.05.1998

	3

	1

	4

	2Н150

	80

	07.01.1988

	4

	3

	5

	2М55

	110

	20.11.1984

	4

	3

	

	R17 Инструмент/приспособление (КодИП, КодОбр, МаркИП, НазнИП, ИнсПрисп)

	

	КодИП

	КодОбр

	МаркИП

	НазнИП

	ИнсПрисп

	1

	1

	20872-20

	резец копир.

	да

	2

	1

	UNC315-1

	патрон

	нет

	3

	1

	35-В92-82

	резец проход.

	да

	4

	2

	35-558-77

	резец для канавок

	да

	5

	2

	UNC400-2

	патрон

	нет

	6

	2

	20872-20

	резец копир.

	да

	7

	3

	UNC315-2

	патрон

	нет

	8

	3

	35-558-77

	резец для канавок

	да

	9

	4

	UNC250-3

	патрон

	нет

	10

	5

	UNC250-2

	патрон

	нет

	

	3.2 Проектирование базы данных с использованием ER- метода

	

	На первом этапе проектирования определяются сущности и связи между ними. Представляющими интерес сущностями в рассматриваемом случае являются ГАУ, АТНСС, Кластер, Обрабатывающее оборудование, Транспортное оборудование.

	Сущности ГАУ (Г) и АТНСС(А) объединены связью «Соединяется». Сущности «Обрабатывающее оборудование»(О) и ГАУ(Г) объединены связью «Входит». Сущности «Транспортное оборудование»(Т) и АТНСС(А) объединены связью «Входит». Сущности «Инструменты, приспособления» (И) и «Обрабатывающее оборудование»(О) объединены связью «Привязаны». Сущности «Обрабатывающее оборудование»(О) и Кластеры(К) объединены связью «Входит». Ролевых сущностей здесь нет.

	Составим диаграммы ER – экземпляров:




	

	

	Каждое ГАУ может связываться с несколькими АТНСС, каждая АТНСС может соединяться с несколькими ГАУ, поэтому степень связи N:М. Класс принадлежности обеих сущностей – обязательный.

	

	

	

	Каждое обрабатывающее оборудование может входить только в одно ГАУ, в каждое ГАУ может входить несколько оборудований, поэтому степень связи N:1. Класс принадлежности обеих сущностей – обязательный.

	

	

	

	Каждое транспортное оборудование может входить только в одну АТНСС, в каждую АТНСС может входить несколько оборудований, поэтому степень связи N:1. Класс принадлежности обеих сущностей – обязательный.

	




	

	

	Каждый инструмент(приспособление) может привязывается только к одному обрабатывающему оборудованию, каждому оборудованию может быть привязано несколько инструментов(приспособлений), поэтому степень связи N:1. Класс принадлежности обеих сущностей – обязательный.

	

	

	

	Каждое обрабатывающее оборудование может входить только в один кластер ГАУ, в каждый кластер может входить несколько оборудований, поэтому степень связи N:1. Класс принадлежности обеих сущностей – обязательный.

	Составим диаграмму ER – типа:

	

	

	

	Ключи сущностей: КодКласт, КодИП, КодОбр, КодГАУ, КодТНС, КодТр.

	Переходим к генерации предварительных отношений

	Рассмотрим отношения ГАУ – АТНСС. Т.к. степень связи N:М, то требуется три отношения, два из которых для сущностей, в которых первичными ключами являются ключи соответствующих сущностей и одно отношение для связи, где в качестве атрибутов используются ключи обоих сущностей.

	

	R1 ГАУ (КодГАУ, …)

	R2 АТНСС (КодТНС, …)

	R3 Соединение (КодГАУ, КодТНС, …)

	

	Рассмотрим отношения «Транспортное оборудование»- АТНСС, «Обрабатывающее оборудование» - ГАУ, «Обрабатывающее оборудование» - Кластер, «Инструменты, приспособления» - «Обрабатывающее оборудование». Для каждого отношения справедливо правило генерации отношений №4. Т.к. степень связи N:1 и класс принадлежности N-связной сущности является обязательным, то достаточным является использование двух отношений, по одному - на каждую сущность, в которых первичными ключами являются ключи соответствующих сущностей. Дополнительно ключ 1-связной сущности должен быть добавлен как атрибут в отношение, отводимое N-связной сущности.

	

	R4 Транспортное оборудование (КодТр, КодТНС …)

	R5 АТНСС2 (КодТНС, …)

	R6 Обрабатывающее оборудование1 (КодОбр, КодГАУ …)

	R7 ГАУ2 (КодГау, …)

	R8 Обрабатывающее оборудование2 (КодОбр, КодКласт …)

	R9 Кластер (КодКласт, …)

	R10 Инструменты,приспособления (КодИП, КодОбр …)

	R11 Обрабатывающее оборудование3 (КодОбр, …)

	

	Видно, что отношения R5 и R2 дублируют друг друга, следовательно одно отношение необходимо исключить из проектного набора. Пусть им будет R2.

	Видно, что отношения R7 и R1 дублируют друг друга, следовательно одно отношение необходимо исключить из проектного набора. Пусть им будет R1.

	Видно, что атрибуты отношения R11 могут быть найдены в отношениях R8 и R6, следовательно отношение R11 необходимо исключить из проектного набора.

	Видно, что все атрибуты отношения R8, кроме КодКласт, могут быть найдены в отношении R6, следовательно их обоих необходимо заменить отношением, полученным операцией СОЕДИНЕНИЕ над ними:

	

	R12 Обрабатывающее оборудование (КодОбр, КодГАУ, КодКласт …)

	

	Распределим оставшиеся атрибуты по отношениям:

	

	R1 ГАУ (КодГАУ, НазнГАУ, ПлощГАУ)

	R2 АТНСС (КодТНС, ПропТНС, ПлощТНС)

	R3 Содинение (КодГАУ, КодТНС, КодГПС, НазнГПС, НаимЦех)

	R4 Транспортное оборудование (КодТр, КодТНС, МаркаТр, СтоимТр, СкорТр, ГабарТр, ГрузТр, МассаТр)

	R9 Кластер (КодКласт, ЧастКласт, ДлинКласт, ДиамКласт,ОтклКласт )

	R10 Инструменты,приспособления (КодИП, КодОбр,МаркИП, НазнИП, ИнсПрисп)

	R12 Обрабатывающее оборудование (КодОбр, КодГАУ, КодКласт, МаркаОбр, ДатаОбр, СтоимОбр, ГабарОбр, ДлДетОбр,ДиамДетОбр, ЧастотОбр, МощОбр)

	Для проверки нахождения полученных отношений в НФБК построим для каждого отношения диаграммы ФЗ и определим возможные ключи и детерминанты.

	

	R1 ГАУ (КодГАУ, НазнГАУ, ПлощГАУ)

	

	

	

	Возможный ключ

	Детерминант

	<КодГАУ>

	<КодГАУ>

	

	Отношение находится в НФБК, декомпозиция не требуется.

	

	R2 АТНСС (КодТНС, ПропТНС, ПлощТНС)

	

	

	

	Возможный ключ

	Детерминант

	<КодТНС>

	<КодТНС>

	

	Отношение находится в НФБК, декомпозиция не требуется.

	

	R4 Транспортное оборудование (КодТр, КодТНС, МаркаТр, СтоимТр, СкорТр, ГабарТр, ГрузТр, МассаТр)

	




	

	

	Возможный ключ

	Детерминант

	<КодТр>

	<КодТр> <МаркаТр>

	

	Т.к. возможный ключ не является детерминантом, необходима дальнейшая декомпозиция. Отношение R4 разделяем на R13 и R14. Для декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: МаркаТр СкорТр, ГабарТр, ГрузТр, МассаТр.

	В результате получим два отношения:

	

	R13 Транспортное оборудование (КодТр, КодТНС, МаркаТр, СтоимТр)

	

	

	Возможный ключ

	Детерминант

	<КодТр>

	<КодТр>

	

	Отношение находится в НФБК, декомпозиция не требуется.

	

	R14 МаркаТрансп (МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр)

	

	




	

	Возможный ключ

	Детерминант

	<МаркаТр >

	< МаркаТр >

	

	Отношение находится в НФБК, декомпозиция не требуется.

	

	R9 Кластер (КодКласт, ЧастКласт, ДлинКласт, ДиамКласт,ОтклКласт )

	

	

	

	Возможный ключ

	Детерминант

	<КодКласт>

	<КодКласт>

	

	Отношение находится в НФБК, декомпозиция не требуется.

	

	R10 Инструменты,приспособления (КодИП, КодОбр,МаркИП, НазнИП, ИнсПрисп)

	

	

	

	Возможный ключ

	Детерминант

	<КодИП>

	<КодИП>

	

	Отношение находится в НФБК, декомпозиция не требуется.

	




	R12 Обрабатывающее оборудование (КодОбр, КодГАУ, КодКласт, МаркаОбр, ДатаОбр, СтоимОбр, ГабарОбр, ДлДетОбр,ДиамДетОбр, ЧастотОбр, МощОбр)

	

	

	

	Возможный ключ

	Детерминант

	<КодОбр>

	<КодОбр>

	<МаркаОбр>

	

	Т.к. возможный ключ не является детерминантом, необходима дальнейшая декомпозиция. Отношение R12 разделяем на R15 и R16. Для декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: МаркаОбр ГабарОбр, ДлДетОбр, ДиамДетОбр, ЧастотОбр, МощОбр.

	В результате получим два отношения:

	R15 Обрабатывающее оборудование (КодОбр, МаркаОбр, КодКласт, КодГАУ, ДатаОбр, СтоимОбр)

	

	

	

	Возможный ключ

	Детерминант

	<КодОбр>

	<КодОбр>

	




	Отношение находится в НФБК, декомпозиция не требуется.

	

	R16 МаркаОбраб (МаркаОбр, ГабарОбр, ДлДетОбр,ДиамДетОбр, ЧастотОбр, МощОбр)

	

	

	

	Возможный ключ

	Детерминант

	<МаркаОбр >

	< МаркаОбр >

	

	Отношение находится в НФБК, декомпозиция не требуется.

	

	R3 Соединение (КодГАУ, КодТНС, КодГПС, НазнГПС, НаимЦех)

	

	

	

	Возможный ключ

	Детерминант

	<КодГАУ, КодТНС>

	<КодГАУ, КодТНС >

	<КодГПС>

	

	Т.к. возможный ключ не является детерминантом, необходима дальнейшая декомпозиция. Отношение R3 разделяем на R17 и R18. Для декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: КодГПС НазнГПС, НаимЦех.

	В результате получим два отношения:




	R17 ГПС (КодГПС, НазнГПС, НаимЦех)

	

	

	

	Возможный ключ

	Детерминант

	<КодГПС>

	<КодГПС>

	

	Отношение находится в НФБК, декомпозиция не требуется.

	

	R18 Соединение (КодГАУ, КодТНС, КодГПС)

	

	

	

	Возможный ключ

	< КодГАУ, КодТНС >

	Детерминант

	<КодГАУ,КодТНС>

	

	Отношение находится в НФБК, декомпозиция не требуется.

	

	3.3 Проверка отношений на завершающей фазе проектирования

	

	Результирующий набор отношений:

	

	R1 Инструменты,приспособления (КодИП, КодОбр,МаркИП, НазнИП, ИнсПрисп)

	R2 Обрабатывающее оборудование (КодОбр, МаркаОбр, КодКласт, КодГАУ, ДатаОбр, СтоимОбр)

	R3 Транспортное оборудование (КодТр, КодТНС, МаркаТр, СтоимТр)

	R4 МаркаОбраб (МаркаОбр, ГабарОбр, ДлДетОбр,ДиамДетОбр, ЧастотОбр, МощОбр)

	R5 МаркаТрансп (МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр)

	R6 Кластер (КодКласт, ЧастКласт, ДлинКласт, ДиамКласт,ОтклКласт )

	R7 ГАУ (КодГАУ, НазнГАУ, ПлощГАУ)

	R8 АТНСС (КодТНС, ПропТНС, ПлощТНС)

	R9 ГПС (КодГПС, НазнГПС, НаимЦех)

	R10 ГАУ-ТНС (КодГАУ, КодТНС, КодГПС)

	

	Проведем проверку:

	Одна и та же ФЗ не содержится более чем в одном отношении.

	Нет отношений, все атрибуты в которых могут быть найдены в другом отношении проектного набора, либо в отношении, полученном из других отношений проектного набора с помощью серии операций СОЕДИНЕНИЕ. Т.е. отсутствуют избыточные отношения.

	Набор ФЗ, полученный в результате проектирования декомпозиционным методом совпадает с набором, присутствующим в минимальном покрытии, полученным перед началом декомпозиции.

	

	3.4 Модель базы данных

	

	При построении модели базы данных за основу выбран набор нормализованных отношений, полученный в результате проектирования ER-методом. Модель представлена на рисунке ниже. Предполагается, что количество обрабатывающего и транспортного оборудования на предприятии не более 1000 ед. и 500 ед. соответственно. В базе данных будет храниться информация о 5000 обрабатывающих и 2000 транспортных оборудованиях. Число ГАУ будет равно 200, ГПС - 30, а АТНСС – 70. Число используемых инструментов/приспособлений – 10000. Предполагается, что число кластеров будет не более 10000.




	

	Инструменты, приспособления

	Ключевое поле

	Тип и длина

	Имя поля

	

	+

	Длинное целое

	КодИП

	

	

	Длинное целое

	КодОбр

	

	

	Строковый (20)

	МаркИП

	

	

	Строковый (50)

	НазнИП

	

	

	Логический

	ИнсПрисп

	Обрабатывающее оборудование

	Ключевое поле

	Тип и длина

	Имя поля

	

	+

	Длинное целое

	КодОбр

	

	

	Строковый (20)

	МаркаОбр

	

	

	Длинное целое

	КодКласт

	

	

	Целое

	КодГАУ

	

	

	Дата/Время

	ДатаОбр

	

	

	Длинное целое

	СтоимОбр

	Транспортное оборудование

	Ключевое поле

	Тип и длина

	Имя поля

	

	+

	Длинное целое

	КодТр

	

	

	Строковый (20)

	МаркаТр

	

	

	Целое

	КодТНС

	

	

	Длинное целое

	СтоимТр

	МаркаОбраб

	Ключевое поле

	Тип и длина

	Имя поля

	

	+

	Строковый (20)

	МаркаОбр

	

	

	Строковый (20)

	ГабарОбр

	

	

	Длинное целое

	ДлДетОбр

	

	

	Длинное целое

	ДиамДетОбр

	

	

	Длинное целое

	ЧастотОбр

	

	

	Длинное целое

	МощОбр

	МаркаТрансп

	Ключевое поле

	Тип и длина

	Имя поля

	

	+

	Строковый (20)

	МаркаТр

	

	

	Длинное целое

	СкорТр

	

	

	Строковый (20)

	ГабарТр

	

	

	Длинное целое

	ГрузТр

	

	

	Длинное целое

	МассаТр

	Кластер

	Ключевое поле

	Тип и длина

	Имя поля

	

	+

	Длинное целое

	КодКласт

	

	

	Длинное целое

	ЧастКласт

	

	

	Длинное целое

	ДлинКласт

	

	

	Длинное целое

	ДиамКласт

	

	

	Целое

	ОтклКласт

	ГАУ

	Ключевое поле

	Тип и длина

	Имя поля

	

	+

	Целое

	КодГАУ

	

	

	Строковый (50)

	НазнГАУ

	

	

	Длинное целое

	ПлощГАУ

	АТНСС

	Ключевое поле

	Тип и длина

	Имя поля

	

	+

	Целое

	КодТНС

	

	

	Длинное целое

	ПропТНС

	

	

	Длинное целое

	ПлощТНС

	ГПС

	Ключевое поле

	Тип и длина

	Имя поля

	

	+

	Целое

	КодГПС

	

	

	Строковый (50)

	НазнГПС

	

	

	Строковый (50)

	НаимЦех

	ГАУ-ТНС

	Ключевое поле

	Тип и длина

	Имя поля

	

	+

	Целое

	КодГАУ

	

	+

	Целое

	КодТНС

	

	

	Целое

	КодГПС

	

	Расчет необходимого дискового пространства для хранения БД:

	Инструменты,приспособления:

	

	2+2+20+50+2=76 байт

	Х 10000=742,2 Кбайт

	

	Обрабатывающее оборудование: 

	

	2+20+2+1+8+2=35 байт

	Х1000 = 34,2 Кбайт




	Транспортное оборудование: 

	

	2+20+1+2=15 байт

	Х500 = 7,3 Кбайт

	

	МаркаОбраб: 

	

	20+20+2+2+2+2 = 48 байт

	Х5000 = 234,4 Кбайт

	

	МаркаТрансп: 

	

	20+2+20+2+2 = 46 байт

	Х2000 = 89,8 Кбайт

	

	Кластер: 

	

	2+2+2+2+1= 9 байт

	Х10000 = 87,8 Кбайт

	

	ГАУ: 

	

	1+50+2= 53 байт

	Х200 = 10,4 Кбайт

	

	АТНСС:

	

	1+2+2= 5 байт

	Х70 = 0,3 байт




	ГПС:

	

	1+50+50 = 101 байт

	Х30 = 2,9 байт

	

	ГАУ-ТНС:

	

	1+1+1 = 3 байт

	Х70Х200 = 41,0 Кбайт

	

	Всего: 

	

	742,2+34,2+7,3+ 234,4+89,8+87,8+10,4+0,3+2,9+41,0 = 1250 Кбайт

	


	ГЛАВА 4. ВЫБОР СУБД

	

	Выбор системы управления баз данных (СУБД) представляет собой сложную многопараметрическую задачу и является одним из важных этапов при разработке приложений баз данных. Выбранный программный продукт должен удовлетворять как текущим, так и будущим потребностям предприятия, при этом следует учитывать финансовые затраты на приобретение необходимого оборудования, самой системы, разработку необходимого программного обеспечения на ее основе, а также обучение персонала.

	Т.к. разработчик данной БД одновременно является и заказчиком, то было принято решение использовать для реализации данного курсового проекта СУБД MS Access 2003. Хотя эта СУБД и не является самой мощной и функционально насыщенной (к примеру СУБД MS SQL SERVER предоставляет мощные средства резервного копирования, репликации и восстановления), но тем не менее полностью удовлетворяет требованиям данного курсового проекта. Кроме того, можно использовать встроенные функции MS Access 2003 для создания форм и отчетов, не прибегая к использованию каких-либо языков программирования, что значительно сокращает время разработки интерфейса пользователя.

	

	


	ГЛАВА 5. РАЗРАБОТКА ПРИЛОЖЕНИЯ

	

	5.1 Общая схема приложения

	

	Для работы с БД в среде MS Access было разработано приложение, имеющее следующую структуру:

	

	

	

		

		

		По схеме видно, что приложение содержит 1 главную форму и 11 подчиненных, а также 2 отчета.

		Т.к. пользователями БД являются в первую очередь инженера производственных участков, то внимание при разработке приложения было уделено таким функциям, как проверка повторяющихся табельных номеров, автоматическое создание кластеров, проверка наличия связей при удалении (например если к ГАУ привязано оборудование, то удаление ГАУ некорректно!). Кроме того, были разработаны отчеты по всему оборудованию на предприятии( обрабатывающему и транспортному с группировкой по марке оборудования и с указанием общей стоимости оборудования на предприятии. Также предусмотрена возможность получения списка оборудования, которое может заменить вышедшее из строя.

	

	5.2 Запросы и макросы, использованные в приложении

	

	Рассмотрим описание используемых макрогрупп в БД.

	Макрогруппа Добавление

	Содержит макросы «Ввод оборудования», «Ввод марки оборудования», «Ввод транспорта», « Ввод марки транспорта», «Ввод инструмента», «Ввод ГПС», «Ввод ГАУ», «Ввод ТНС», обеспечивающие ввод новой записи в соответсвющую таблицу. При этом в каждом макросе обеспечивается проверка ввода значения в каждое поле записи и проверка повторяющегося табельного номера новой записи.

	В макросе «Ввод оборудования» предусмотрено автоматическое распознование кластера, к которому следует отнести новое оборудование.

	Макрос «Ввод Кластера» предназначен для ввода новой записи в таблицу «Кластер», вызывается он из макроса «Ввод оборудования» в случае если новому оборудованию не соответствует ни один из кластеров.

		Макрогруппа Удаление

	Содержит в себе макросы « Удаление оборудования», « Удаление марки оборудования», «Удаление транспорта», « Удаление марки транспорта», «Удаление инструмента», «Удаление ГПС», «Удаление ГАУ», «Удаление ГПС», «Удаление ТНС», «Удаление Кластера» которые используются для удаления записи в соответствующей таблице по введенному табельному номеру. В каждом макросе обеспечивается проверка ввода пустого табельного номера.

	Макрогруппа autoexec

		Содержит в себе макрос для автоматического запуска главной формы при открытии БД.

	Макрогруппа Главная

	Содержит в себе макрос “Выход”, который выполняет действие - закрытие БД.

	Макрогруппа Обновление – макрос «ГПС» обеспечивает обновление списка транспортного оборудования в форме «Содержимое ГПС», макрос «Замена» обеспечивает обновление списка заменяющего оборудования в форме «Замена оборудования».

	Макрогруппа Открыть – выполняется из главной формы и содержит следующий макросы:

	Открыть Обр . Открытие формы «Обрабатывающее оборудование»

	Открыть Тр. Открытие формы «Транспортное оборудование»

	Открыть МаркаОбр. Открытие формы «Марка обрабатывающего оборудования»

	Открыть МаркаТр. Открытие формы «Марки транспортного оборудования»

	Открыть Кластер. Открытие формы «Кластер»

	Открыть ИП. Открытие формы «Инструменты, приспособления»

	Открыть ГПС. Открытие формы «ГПС»

	Открыть ГПСдоб. Открытие формы «ГПС-добавление»

	Открыть ГАУ. Открытие формы «ГАУ»

	Открыть ТНС. Открытие формы «АТНСС»

	Открыть замену. Открытие формы «Замена оборудования»

	Открыть отчет. Открытие отчета «Обрабатывающее оборудование»

	Открыть отчетТр. Открытие отчета «Транспортное оборудование»

		Листинг программного кода макросов приведен в приложении.

	Кроме макросов в приложении использованы 17 запросов, созданных при помощи встроенного конструктора запросов Access.

	Запрос ДЛ,Диам,Част по Марке

	Определяет параметры оборудования (Длина, диаметр обрабатываемых деталей, наибольшая частота вращения гл. шпинделя) по марке оборудования.

	Запрос №Кластера по Марке

	Определяет номера кластера по параметрам : Длина, диаметр обрабатываемых деталей и наибольшей частота вращения гл. шпинделя.

	Запрос №Кластеров Проверка

	Определяет число записей в запросе Запрос №Кластера по Марке .

	ЗАПРОС Обрабатывающее оборудование

	Объединяет две таблицы: Обрабатывающее оборудование и Марка обрабатывающего оборудования.

	ЗАПРОС Транспортного оборудование

	Объединяет две таблицы: Транспортное оборудование и Марка транспортного оборудования.

	ЗапросМАХ№Кластера

	Определяет максимальный табельный номер в таблице «Кластер»

	ЗапросЧислоТНС

	Определяет число записей в таблице «АТНСС». Необходимо для запроса ЗапросГауПолностьюСвязанные

	ЗапросОбр

	Определяет марку обрабатывающего оборудования вышедшего из строя для формы «Замена оборудования»

	ЗапросТр

	Определяет марку транспортного оборудования вышедшего из строя для формы «Замена оборудования»

	ЗапросЗамены Обр

	Используя запрос ЗапросОбр формирует список обрабатывающего оборудования, способное заменить вышедшее из строя.

	ЗапросЗамены Тр

	Используя запрос ЗапросТр формирует список обрабатывающего оборудования, способное заменить вышедшее из строя.

	ЗапросГауСвязанные

	Для кажого ГАУ определяет число связей с АТНСС. Необходимо для формы «Содержимое ГПС» , для добавления новой записи.

	ЗапросГауПолностьюСвязанные

	Определяет список ГАУ, связанных с каждым АТНСС. Необходимо для формы «Содержимое ГПС», для добавления новой записи.

	Запрос ГАУ свободных

	Определяет список ГАУ, которых могут образовывать связь хоть с одной АТНСС. Необходимо для формы «Содержимое ГПС», для добавления новой записи

	Запрос для ГПС содержимого Подчиненный

	Определяет список АТНСС связанных с выбранным ГАУ в форме «Содержимое ГПС» при добавлении новой записи.

	Запрос для ГПС содержимого

	Определяет список АТНСС не связанных с выбранным ГАУ в форме «Содержимое ГПС» при добавлении новой записи.

	17. ЗАПРОС ГАУ и АТНСС

	Формирует список связанных ГАУ и АТНСС. Необходимо для формы «Содержимое ГПС»

	

	5.3 Описание приложения

	

	5.3.1 Функциональные возможности приложения

	При помощи разработанного приложения можно:

	Добавлять/изменять записи, характеризующие обрабатывающее оборудование, марку обрабатывающего оборудования.

	Добавлять/изменять записи, характеризующие транспортное оборудование, марку транспортного оборудования.

	Добавлять/изменять записи, характеризующие ГАУ.

	Добавлять/изменять записи, характеризующие АТНСС.

	Добавлять/изменять записи, характеризующие ГПС.

	Добавлять/изменять записи, характеризующие Инструменты, приспособления

	Получать отчет об обрабатывающем оборудовании.

	Получать отчет об транспортном оборудовании.

	Получать информацию об оборудовании способном заменить вышедшее из строя.

	

	5.3.2 Инструкция пользователя

	После запуска БД (файл «БД.mdb») на экране появится Главная форма приложения, имеющая вид:

	

	

	На ней расположены несколько групп кнопок.

	Кнопка “Марки обрабатывающего оборудования” вызывает форму для изменения маркировок обрабатывающего оборудования. При нажатии левой кнопки мыши открывается следующая форма:

	




	

	

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

	Для того чтобы добавить новую марку необходимо в нижней части окна корректно ввести все атрибуты новой марки и нажать кнопку «Добавить новую марку оборудования». Добавление марки оборудования уже существующей в списке запрещено!

	Для того чтобы удалить марку необходимо в правой-нижней части окна выбрать из списка удаляемую марку и нажать кнопку «Удалить марку из списка». Внимание удаление марки оборудования используемой каким-то оборудованием запрещено!

	Эта форма аналогична предыдущей. Добавление, изменение и удалени выполняется аналогично.

	Внимание! Изменение атрибута «Марка оборудования» запрещено!

	Кнопка “Обрабатывающее оборудование” вызывает форму для изменения списка обрабатывающего оборудования. При нажатии левой кнопки мыши открывается форма:

	




	

	

	Эта форма аналогична предыдущей. Добавление, изменение и удаление выполняется аналогично. Добавление оборудования с уже существующим в списке табельным номером запрещено! Удаление оборудования, к которому привязано какой-то инструмент или приспособление запрещено!

	Внимание! Изменение атрибутов касающихся марки оборудования, атрибута «№ кластера» и «Табельный номер» запрещено! («Габариты», «L», «D», «Частота», «Мощность»)

	Кнопка “ГАУ” предназначена для изменения списка ГАУ. При нажатии левой кнопки мыши открывается форма:

	

	

	

	Эта форма аналогична предыдущей. Добавление, изменение и удаление выполняется аналогично. Добавление ГАУ с уже существующим в списке табельным номером запрещено! Удаление ГАУ, к которому привязано оборудование запрещено! Изменение атрибута «Табельный номер» запрещено!

	Кнопку “ Кластеры” предназначена для просмотра и удаления. При нажатии левой кнопки мыши открывается форма:

	

	

	

	Добавление и изменение записей в этой форме запрещены. Удаление выполняется также как и в предыдущих формах. Удаление кластера, к которому привязано какое-то оборудование запрещено!

	Кнопка “Инструменты и приспособления” предназначена для изменения списка инструментов/приспособлений:

	

	

	

	Добавление, изменение и удаление выполняется стандартно. Добавление Инструмента/приспособления с уже существующим в списке табельным номером запрещено! Изменение атрибута «Табельный номер» запрещено!

	Кнопка “Марки транспортного оборудования” предназначена для изменения списка маркировок транспортного оборудования:

	

	

	

	Добавление, изменение и удаление записей аналогично. Добавление марки оборудования уже существующей в списке запрещено! Удаление марки оборудования используемой каким-то оборудованием запрещено! Изменение атрибута «Марка оборудования» запрещено!

	Кнопка “Транспортное оборудование” предназначена для изменения списка транспортного оборудования:

	

	

	

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

	Внимание! Изменение атрибутов касающихся марки оборудования и «Табельный номер» запрещено! («Скорость», «Габариты», «Грузоподъемность», «Вес»)

	Кнопка “АТНСС” предназначены для изменения списка АТНСС.

	

	

	

	Добавление, изменение и удаление выполняется аналогично. Добавление АТНСС с уже существующим в списке табельным номером запрещено! Изменение атрибута «Табельный номер» запрещено!

	Кнопка “ГПС” предназначены для изменения списка ГПС

	

	

	

	Добавление новой связи выполняется в пустом окне. Внимание! Вначале необходимо выбрать связываемое ГАУ, а затем АТНСС.

	Изменение записей выполняется аналогично предыдущих форм. Удаление производится так: вначале выделяется удалемая связь затем нажимается кнопка Del

	Кнопка “Отчет по оборудования” предназначена для вывода отчета по транспортному или обрабатывающему оборудованию в зависимости от сделанного выбора в окне-запросе:

	

	

	Отчет по обрабатывающему оборудованию:

	

	

	Этот отчет можно распечатать нажав правой клавишей на отчете и выбрав дейстивие «Печать…»

	Кнопка “Замена оборудования” предназначена для вывода списка оборудования, способного заменить вышедшее из строя:

	

	

	

	Для вывода списка необходима определить какое оборудование вышло из строя: обрабатывающее или транспортное и выбрать табельный номер вышедшего из строя оборудования.

	По нажатии кнопки “Выход” происходит закрытие БД.




	ЗАКЛЮЧЕНИЕ

	

	В результате выполнения курсовой работы была изучена методика проектирования БД, изучены декомпозиционный и ER-методы проектирования БД, а также рассмотрены такие аспекты как системный анализ предметной области и критерии выбора СУБД.

	В соответствии с методикой, применяя вышеназванные методы, была разработана БД учета основного оборудования на предприятии, а также приложение для работы с ней в среде MS Access 2003.

	

	
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

	

	1. А.Ю. Гончаров Самоучитель Access 2003, Москва 2004

	2. И.А. Ахмадеев, А.Х. Хайруллин, С.Ю.Юрасов Базы данных, Наб.Челны 2004

	3. Конспект лекций по БД, 2010 год

	4. А.С. Марков, К.Ю. Лисовский Базы Данных. Введение в теорию и методологию. Москва, 2004

	

	
ПРИЛОЖЕНИЕ.

	

	Листинг программного кода:

	

	Форма «Главная»

	

	Private Sub КнВыход_Click()

	On Error GoTo Главная_Выход_Err

	DoCmd.Quit acPrompt

	Главная_Выход_Exit:

	Exit Sub

	Главная_Выход_Err:

	MsgBox Error$

	Resume Главная_Выход_Exit

	End Sub

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

	On Error GoTo Открыть_Открыть_ИП_Err

	DoCmd.OpenForm "Инструменты,приспособления", acNormal, "", "", , acNormal

	Открыть_Открыть_ИП_Exit:

	Exit Sub

	Открыть_Открыть_ИП_Err:

	MsgBox Error$

	Resume Открыть_Открыть_ИП_Exit

	End Sub

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

	If MsgBox("Открыть отчет по обрабатывающему оборудованию?", vbYesNo, "Отчет") = vbYes Then

	DoCmd.OpenReport "Обрабатывающее оборудование", acViewPreview, "", "", acNormal

	Else

	DoCmd.OpenReport "Транспортное оборудование", acViewPreview, "", "", acNormal

	End If

	End Sub

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

	On Error GoTo Открыть_Открыть_МаркаОбр_Err

	DoCmd.OpenForm "Марка обрабатывающего оборудования", acNormal, "", "", , acNormal

	Открыть_Открыть_МаркаОбр_Exit:

	Exit Sub

	Открыть_Открыть_МаркаОбр_Err:

	MsgBox Error$

	Resume Открыть_Открыть_МаркаОбр_Exit

	End Sub

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

	On Error GoTo Открыть_Открыть_МаркаТр_Err

	DoCmd.OpenForm "Марка транспортного оборудования", acNormal, "", "", , acNormal

	Открыть_Открыть_МаркаТр_Exit:

	Exit Sub

	Открыть_Открыть_МаркаТр_Err:

	MsgBox Error$

	Resume Открыть_Открыть_МаркаТр_Exit

	End Sub

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

	On Error GoTo Открыть_Открыть_ГПСдоб_Err

	DoCmd.OpenForm "ГПС", acNormal, "", "", , acNormal

	Открыть_Открыть_ГПСдоб_Exit:

	Exit Sub

	Открыть_Открыть_ГПСдоб_Err:

	MsgBox Error$

	Resume Открыть_Открыть_ГПСдоб_Exit

	End Sub

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

	On Error GoTo Открыть_Открыть_Кластер_Err

	DoCmd.OpenForm "Кластер", acNormal, "", "", , acNormal

	Открыть_Открыть_Кластер_Exit:

	Exit Sub

	Открыть_Открыть_Кластер_Err:

	MsgBox Error$

	Resume Открыть_Открыть_Кластер_Exit

	End Sub

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

	On Error GoTo Открыть_Открыть_замену_Err

	DoCmd.OpenForm "Замена оборудования", acNormal, "", "", , acNormal

	Открыть_Открыть_замену_Exit:

	Exit Sub

	Открыть_Открыть_замену_Err:

	MsgBox Error$

	Resume Открыть_Открыть_замену_Exit

	End Sub

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

	On Error GoTo Открыть_Открыть_Обр_Err

	DoCmd.OpenForm "Обрабатывающее оборудование", acNormal, "", "", , acNormal

	Открыть_Открыть_Обр_Exit:

	Exit Sub

	Открыть_Открыть_Обр_Err:

	MsgBox Error$

	Resume Открыть_Открыть_Обр_Exit

	End Sub

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

	On Error GoTo Открыть_Открыть_ГАУ_Err

	DoCmd.OpenForm "ГАУ", acNormal, "", "", , acNormal

	Открыть_Открыть_ГАУ_Exit:

	Exit Sub

	Открыть_Открыть_ГАУ_Err:

	MsgBox Error$

	Resume Открыть_Открыть_ГАУ_Exit

	End Sub

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

	On Error GoTo Открыть_Открыть_ТНС_Err

	DoCmd.OpenForm "АТНСС", acNormal, "", "", , acNormal

	Открыть_Открыть_ТНС_Exit:

	Exit Sub

	Открыть_Открыть_ТНС_Err:

	MsgBox Error$

	Resume Открыть_Открыть_ТНС_Exit

	End Sub

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

	On Error GoTo Открыть_Открыть_Тр_Err

	DoCmd.OpenForm "Транспортное оборудование", acNormal, "", "", , acNormal

	Открыть_Открыть_Тр_Exit:

	Exit Sub

	Открыть_Открыть_Тр_Err:

	MsgBox Error$

	Resume Открыть_Открыть_Тр_Exit

	End Sub

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

	On Error GoTo Открыть_Открыть_ГПС_Err

	DoCmd.OpenForm "ГПС-добавление", acNormal, "", "", , acNormal

	Открыть_Открыть_ГПС_Exit:

	Exit Sub

	Открыть_Открыть_ГПС_Err:

	MsgBox Error$

	Resume Открыть_Открыть_ГПС_Exit

	End Sub

	

	Форма «АТНСС»

	

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

	On Error GoTo Добавление_Ввод_ТНС_Err

	With CodeContextObject

	If (Eval("(Forms!Атнсс![ТНС] Is Null) Or (Forms!Атнсс![Пропуск] Is Null) Or (Forms!Атнсс![Площ] Is Null)")) Then

	MsgBox "Введены не все данные!", vbExclamation, "Добавление нового АТНСС."

	Exit Sub

	End If

	DoCmd.GoToControl "КодТНС"

	DoCmd.FindRecord Val(Forms!Атнсс!ТНС), acEntire, False, , True, acCurrent, True

	If (Val(Forms!Атнсс!ТНС) = Forms!Атнсс!КодТНС) Then

	Beep

	MsgBox "Такой номер уже существует!", vbExclamation, "Ошибка"

	Exit Sub

	End If

	DoCmd.OpenForm "ДобавлениеАТНСС", acNormal, "", "", , acHidden

	DoCmd.GoToRecord acForm, "ДобавлениеАТНСС", acNewRec

	Forms!ДобавлениеАТНСС!КодТНС = Forms!Атнсс!ТНС

	Forms!ДобавлениеАТНСС!ПропТНС = Forms!Атнсс!Пропуск

	Forms!ДобавлениеАТНСС!ПлощТНС = Forms!Атнсс!Площ

	DoCmd.Close acForm, "ДобавлениеАТНСС"

	DoCmd.Requery ""

	DoCmd.Requery "ТНСУдаления"

	End With

	

	Добавление_Ввод_ТНС_Exit:

	

	Exit Sub

	Добавление_Ввод_ТНС_Err:

	DoCmd.Close acForm, "ДобавлениеАТНСС"

	'MsgBox Error$

	Resume Добавление_Ввод_ТНС_Exit

	End Sub

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

	On Error GoTo Удаление_Удаление_ТНС_Err

	If (Eval("Forms!Атнсс!ТНСУдаления Is Null")) Then

	MsgBox "Введены не все данные!", vbExclamation, "Удаление АТНСС."

	Exit Sub

	End If

	DoCmd.OpenForm "ДобавлениеАТНСС", acNormal, "", "", , acHidden

	DoCmd.SelectObject acForm, "ДобавлениеАТНСС", False

	'DoCmd.GoToControl "[КодТНС]"

	DoCmd.FindRecord Forms!Атнсс!ТНСУдаления, acEntire, False, , True, acCurrent, False

	DoCmd.RunCommand acCmdDeleteRecord

	DoCmd.Close acForm, "ДобавлениеАТНСС"

	DoCmd.Requery ""

	DoCmd.Requery "ТНСУдаления"

	Forms!Атнсс!ТНСУдаления = ""

	Удаление_Удаление_ТНС_Exit:

	Exit Sub

	Удаление_Удаление_ТНС_Err:

	DoCmd.Close acForm, "ДобавлениеАТНСС"

	m = MsgBox("Удаление невозможно так как имеется транспортное оборудование, привязанные к данному ГАУ!", vbExclamation, "Удаление ГАУ")

	'MsgBox Error$

	Resume Удаление_Удаление_ТНС_Exit

	End Sub

	

	Форма «ГАУ»

	

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

	On Error GoTo Добавление_Ввод_ГАУ_Err

	With CodeContextObject

	If (Eval("(Forms!Гау![ГАУ] Is Null) Or (Forms!Гау![Назн] Is Null) Or (Forms!Гау![Площ] Is Null)")) Then

	MsgBox "Введены не все данные!", vbExclamation, "Добавление нового ГАУ."

	Exit Sub

	End If

	DoCmd.GoToControl "КодГАУ"

	DoCmd.FindRecord Val(Forms!Гау![Гау]), acStart, False, , True, acCurrent, True

	If (Val(Forms!Гау![Гау]) = (Forms!Гау![КодГАУ])) Then

	Beep

	MsgBox "Такой номер уже существует!", vbExclamation, "Ошибка"

	Exit Sub

	End If

	DoCmd.OpenForm "ДобавлениеГАУ", acNormal, "", "", , acHidden

	DoCmd.GoToRecord acForm, "ДобавлениеГАУ", acNewRec

	Forms!ДобавлениеГАУ!КодГАУ = Forms!Гау!Гау

	Forms!ДобавлениеГАУ!НазнГАУ = Forms!Гау!Назн

	Forms!ДобавлениеГАУ!ПлощадьГАУ = Forms!Гау!Площ

	DoCmd.Close acForm, "ДобавлениеГАУ"

	DoCmd.Requery ""

	DoCmd.Requery "ГАУУдаления"

	End With

	Добавление_Ввод_ГАУ_Exit:

	Exit Sub

	Добавление_Ввод_ГАУ_Err:

	DoCmd.Close acForm, "ДобавлениеГАУ"

	'MsgBox Error$

	Resume Добавление_Ввод_ГАУ_Exit

	End Sub

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

	On Error GoTo Удаление_Удаление_ГАУ_Err

	If (Eval("Forms!Гау!ГАУУдаления Is Null")) Then

	MsgBox "Введены не все данные!", vbExclamation, "Удаление ГАУ."

	Exit Sub

	End If

	DoCmd.OpenForm "ДобавлениеГАУ", acNormal, "", "", , acHidden

	DoCmd.SelectObject acForm, "ДобавлениеГАУ", False

	DoCmd.GoToControl "[КодГАУ]"

	DoCmd.FindRecord Forms!Гау!ГАУУдаления, acEntire, False, , True, acCurrent, False

	DoCmd.RunCommand acCmdDeleteRecord

	DoCmd.Close acForm, "ДобавлениеГАУ"

	DoCmd.Requery ""

	DoCmd.Requery "ГАУУдаления"

	Forms!Гау!ГАУУдаления = ""

	Удаление_Удаление_ГАУ_Exit:

	Exit Sub

	Удаление_Удаление_ГАУ_Err:

	DoCmd.Close acForm, "ДобавлениеГАУ"

	m = MsgBox("Удаление невозможно так как имеется обрабатывающее оборудование, привязанные к данному ГАУ!", vbExclamation, "Удаление ГАУ")

	MsgBox Error$

	Resume Удаление_Удаление_ГАУ_Exit

	End Sub

	

	Форма «Содержание ГПС»

	

	Private Sub КодГАУ_Dirty(Cancel As Integer)

	On Error GoTo Обновление_Err

	КодТНС.Locked = False

	DoCmd.Requery "КодТНС"

	Обновление_Exit:

	Exit Sub

	Обновление_Err:

	MsgBox Error$

	Resume Обновление_Exit

	End Sub

	Private Sub КодТНС_Dirty(Cancel As Integer)

	DoCmd.Requery "КодГау"

	End Sub

	Private Sub КодТНС_GotFocus()

	If КодГАУ.Value > 0 Then Else m = MsgBox("Введите вначале табельный номер ГАУ!", vbInformation, "Внимание"): КодТНС.Locked = True

	End Sub

	

	Форма «ГПС»

	

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

	On Error GoTo Добавление_Ввод_ГПС_Err

	With CodeContextObject

	If (Eval("(Forms![ГПС-добавление]![ГПС] Is Null) Or (Forms![ГПС-добавление]![Назн] Is Null) Or (Forms![ГПС-добавление]![Цех] Is Null)")) Then

	MsgBox "Введены не все данные!", vbExclamation, "Добавление нового ГПС."

	Exit Sub

	End If

	DoCmd.GoToControl "КодГПС"

	DoCmd.FindRecord Val(Forms![ГПС-добавление]!ГПС), acEntire, False, , True, acCurrent, True

	If (Val(Forms![ГПС-добавление]!ГПС) = Forms![ГПС-добавление]!КодГПС) Then

	Beep

	MsgBox "Такой номер уже существует!", vbExclamation, "Ошибка"

	Exit Sub

	End If

	DoCmd.OpenForm "ДобавлениеГПС", acNormal, "", "", , acHidden

	DoCmd.GoToRecord acForm, "ДобавлениеГПС", acNewRec

	Forms!ДобавлениеГПС!КодГПС = Forms![ГПС-добавление]!ГПС

	Forms!ДобавлениеГПС!НазнГПС = Forms![ГПС-добавление]!Назн

	Forms!ДобавлениеГПС!НаимЦех = Forms![ГПС-добавление]!Цех

	DoCmd.Close acForm, "ДобавлениеГПС"

	DoCmd.Requery ""

	DoCmd.Requery "ГПСУдаления"

	End With

	Добавление_Ввод_ГПС_Exit:

	Exit Sub

	Добавление_Ввод_ГПС_Err:

	DoCmd.Close acForm, "ДобавлениеГПС"

	MsgBox Error$

	Resume Добавление_Ввод_ГПС_Exit

	End Sub

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

	On Error GoTo Удаление_Удаление_ГПС_Err

	If (Eval("Forms![ГПС-добавление]!ГПСУдаления Is Null")) Then

	MsgBox "Введены не все данные!", vbExclamation, "Удаление ГПС."

	Exit Sub

	End If

	DoCmd.OpenForm "ДобавлениеГПС", acNormal, "", "", , acHidden

	DoCmd.SelectObject acForm, "ДобавлениеГПС", False

	DoCmd.FindRecord Forms![ГПС-добавление]!ГПСУдаления, acEntire, False, , True, acCurrent, False

	DoCmd.RunCommand acCmdDeleteRecord

	DoCmd.Close acForm, "ДобавлениеГПС"

	DoCmd.Requery ""

	DoCmd.Requery "ГПСУдаления"

	Forms![ГПС-добавление]!ГПСУдаления = ""

	Удаление_Удаление_ГПС_Exit:

	Exit Sub

	Удаление_Удаление_ГПС_Err:

	DoCmd.Close acForm, "ДобавлениеГПС"

	m = MsgBox("Удаление невозможно так как имеются ГАУ или АТНСС, привязанные к данному ГПС!", vbExclamation, "Удаление ГПС")

	MsgBox Error$

	Resume Удаление_Удаление_ГПС_Exit

	End Sub

	

	Форма «Инструменты и приспособления»

	

	Private Sub КнМарка_Click()

	On Error GoTo Добавление_Ввод_инструмента_Err

	With CodeContextObject

	If (Eval("(Forms![Инструменты,приспособления]![Код] Is Null) Or (Forms![Инструменты,приспособления]![Обр] Is Null) Or (Forms![Инструменты,приспособления]![Марка] Is Null) Or (Forms![Инструменты,приспособления]![Назн] Is Null)")) Then

	MsgBox "Введены не все данные!", vbExclamation, "Добавление нового инструмента/приспособления."

	Exit Sub

	End If

	DoCmd.GoToControl "КодИП"

	DoCmd.FindRecord Val(Forms![Инструменты,приспособления]!Код), acEntire, False, , True, acCurrent, True

	If (Val(Forms![Инструменты,приспособления]!Код) = Forms![Инструменты,приспособления]!КодИП) Then

	Beep

	MsgBox "Такой номер уже существует!", vbExclamation, "Ошибка"

	Exit Sub

	End If

	DoCmd.OpenForm "ДобавлениеИП", acNormal, "", "", , acHidden

	DoCmd.GoToRecord acForm, "ДобавлениеИП", acNewRec

	Forms!ДобавлениеИП!КодИП = Forms![Инструменты,приспособления]!Код

	Forms!ДобавлениеИП!КодОбр = Forms![Инструменты,приспособления]!Обр

	Forms!ДобавлениеИП!МаркИП = Forms![Инструменты,приспособления]!Марка

	Forms!ДобавлениеИП!НазнИП = Forms![Инструменты,приспособления]!Назн

	Forms!ДобавлениеИП!ИнсПрисп = Forms![Инструменты,приспособления]!ИП

	DoCmd.Close acForm, "ДобавлениеИП"

	DoCmd.Requery ""

	DoCmd.Requery "КодУдаления"

	End With

	Добавление_Ввод_инструмента_Exit:

	Exit Sub

	Добавление_Ввод_инструмента_Err:

	DoCmd.Close acForm, "ДобавлениеИП"

	'MsgBox Error$

	Resume Добавление_Ввод_инструмента_Exit

	End Sub

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

	On Error GoTo Удаление_Удаление_инструмента_Err

	If (Eval("Forms![Инструменты,приспособления]!КодУдаления Is Null")) Then

	MsgBox "Введены не все данные!", vbExclamation, "Удаление инструмента/приспособления."

	Exit Sub

	End If

	DoCmd.OpenForm "ДобавлениеИП", acNormal, "", "", , acHidden

	DoCmd.SelectObject acForm, "ДобавлениеИП", False

	DoCmd.FindRecord Forms![Инструменты,приспособления]!КодУдаления, acEntire, False, , True, acCurrent, False

	DoCmd.RunCommand acCmdDeleteRecord

	DoCmd.Close acForm, "ДобавлениеИП"

	DoCmd.Requery ""

	DoCmd.Requery "КодУдаления"

	Forms![Инструменты,приспособления]!КодУдаления = ""

	Удаление_Удаление_инструмента_Exit:

	Exit Sub

	Удаление_Удаление_инструмента_Err:

	DoCmd.Close acForm, "ДобавлениеИП"

	m = MsgBox("Неизвестная ошибка. Удаление невозможно", vbExclamation, "Удаление инструмента или приспособления")

	MsgBox Error$

	Resume Удаление_Удаление_инструмента_Exit

	End Sub

	

	Форма «Кластер»

	

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

	On Error GoTo Удаление_Удаление_кластера_Err

	If (Eval("Forms!Кластер!Код Is Null")) Then

	MsgBox "Введены не все данные!", vbExclamation, "Удаление кластера"

	Exit Sub

	End If

	DoCmd.OpenForm "ДобавлениеКластер", acNormal, "", "", , acHidden

	DoCmd.SelectObject acForm, "ДобавлениеКластер", False

	DoCmd.GoToControl "[КодКласт]"

	DoCmd.FindRecord Forms!Кластер!Код, acEntire, False, , True, acCurrent, False

	DoCmd.RunCommand acCmdDeleteRecord

	DoCmd.Close acForm, "ДобавлениеКластер"

	DoCmd.Requery ""

	DoCmd.Requery "Код"

	Forms!Кластер!Код = ""

	Удаление_Удаление_кластера_Exit:

	Exit Sub

	Удаление_Удаление_кластера_Err:

	DoCmd.Close acForm, "ДобавлениеКластер"

	m = MsgBox("Удаление кластера невозможно так как имеется оборудование, привязанное к данному кластеру!", vbExclamation, "Удаление кластера")

	'MsgBox Error$

	Resume Удаление_Удаление_кластера_Exit

	End Sub

	

	Форма «Марка обрабатывающего оборудования»

	

	Private Sub КнМарка_Click()

	On Error GoTo Добавление_Ввод_марки_оборудования_Err

	With CodeContextObject

	If (Eval("(Forms![Марка обрабатывающего оборудования]![Марка] Is Null) Or (Forms![Марка обрабатывающего оборудования]![Габарит] Is Null) Or (Forms![Марка обрабатывающего оборудования]![Длина] Is Null) Or (Forms![Марка обрабатывающего оборудования]![Диаметр] Is Null) Or (Forms![Марка обрабатывающего оборудования]![Частота] Is Null) Or (Forms![Марка обрабатывающего оборудования]![Мощность] Is Null)")) Then

	MsgBox "Введены не все данные!", vbExclamation, "Добавление новой марки оборудования"

	Exit Sub

	End If

	DoCmd.GoToControl "МаркаОбр"

	DoCmd.FindRecord Val(Forms![Марка обрабатывающего оборудования]!Марка), acEntire, False, , True, acCurrent, True

	If (Forms![Марка обрабатывающего оборудования]!Марка = Forms![Марка обрабатывающего оборудования]!МаркаОбр) Then

	Beep

	MsgBox "Такой номер уже существует!", vbExclamation, "Ошибка"

	Exit Sub

	End If

	DoCmd.OpenForm "ДобавлениеМаркиОбр", acNormal, "", "", , acIcon

	DoCmd.GoToRecord acForm, "ДобавлениеМаркиОбр", acNewRec

	Forms!ДобавлениеМаркиОбр!МаркаОбр = Forms![Марка обрабатывающего оборудования]!Марка

	Forms!ДобавлениеМаркиОбр!ГабарОбр = Forms![Марка обрабатывающего оборудования]!Габарит

	Forms!ДобавлениеМаркиОбр!ДлДетОбр = Forms![Марка обрабатывающего оборудования]!Длина

	Forms!ДобавлениеМаркиОбр!ДиамДетОбр = Forms![Марка обрабатывающего оборудования]!Диаметр

	Forms!ДобавлениеМаркиОбр!ЧастотОбр = Forms![Марка обрабатывающего оборудования]!Частота

	Forms!ДобавлениеМаркиОбр!МощОбр = Forms![Марка обрабатывающего оборудования]!Мощность

	DoCmd.Close acForm, "ДобавлениеМаркиОбр"

	DoCmd.Requery ""

	DoCmd.Requery "МаркаУдаление"

	End With

	Добавление_Ввод_марки_оборудования_Exit:

	Exit Sub

	Добавление_Ввод_марки_оборудования_Err:

	DoCmd.Close acForm, "ДобавлениеМаркиОбр"

	MsgBox Error$

	Resume Добавление_Ввод_марки_оборудования_Exit

	End Sub

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

	On Error GoTo Удаление_Удаление_марки_оборудования_Err

	If (Eval("Forms![Марка обрабатывающего оборудования]!МаркаУдаление Is Null")) Then

	MsgBox "Введены не все данные!", vbExclamation, "Удаление марки оборудования"

	Exit Sub

	End If

	DoCmd.OpenForm "ДобавлениеМаркиОбр", acNormal, "", "", , acHidden

	DoCmd.SelectObject acForm, "ДобавлениеМаркиОбр", False

	DoCmd.GoToControl "[МаркаОбр]"

	DoCmd.FindRecord Forms![Марка обрабатывающего оборудования]!МаркаУдаление, acEntire, False, , True, acCurrent, False

	DoCmd.RunCommand acCmdDeleteRecord

	DoCmd.Close acForm, "ДобавлениеМаркиОбр"

	DoCmd.Requery ""

	DoCmd.Requery "МаркаУдаление"

	Forms![Марка обрабатывающего оборудования]!МаркаУдаление = ""

	End

	Удаление_Удаление_марки_оборудования_Exit:

	Exit Sub

	Удаление_Удаление_марки_оборудования_Err:

	DoCmd.Close acForm, "ДобавлениеМаркиОбр"

	m = MsgBox("Удаление невозможно так как имеется оборудование использующее эту марку!", vbExclamation, "Удаление марки оборудования")

	'MsgBox Error$

	Resume Удаление_Удаление_марки_оборудования_Exit

	End Sub

	

	Форма «Марка транспортного оборудования»

	

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

	On Error GoTo Добавление_Ввод_марки_транспорта_Err

	With CodeContextObject

	If (Eval("(Forms![Марка транспортного оборудования]![Марка] Is Null) Or (Forms![Марка транспортного оборудования]![Скорость] Is Null) Or (Forms![Марка транспортного оборудования]![Габарит] Is Null) Or (Forms![Марка транспортного оборудования]![Груз] Is Null) Or (Forms![Марка транспортного оборудования]![Вес] Is Null)")) Then

	MsgBox "Введены не все данные!", vbExclamation, "Добавление новой марки оборудования"

	Exit Sub

	End If

	DoCmd.GoToControl "МаркаТр"

	DoCmd.FindRecord Val(Forms![Марка транспортного оборудования]!Марка), acEntire, False, , True, acCurrent, True

	If (Forms![Марка транспортного оборудования]!Марка = Forms![Марка транспортного оборудования]!МаркаТр) Then

	Beep

	MsgBox "Такой номер уже существует!", vbExclamation, "Ошибка"

	Exit Sub

	End If

	DoCmd.OpenForm "ДобавлениеМаркиТр", acNormal, "", "", , acHidden

	DoCmd.GoToRecord acForm, "ДобавлениеМаркиТр", acNewRec

	Forms!ДобавлениеМаркиТр!МаркаТр = Forms![Марка транспортного оборудования]!Марка

	Forms!ДобавлениеМаркиТр!СкорТр = Forms![Марка транспортного оборудования]!Скорость

	Forms!ДобавлениеМаркиТр!ГабарТр = Forms![Марка транспортного оборудования]!Габарит

	Forms!ДобавлениеМаркиТр!ГрузТр = Forms![Марка транспортного оборудования]!Груз

	Forms!ДобавлениеМаркиТр!МассаТр = Forms![Марка транспортного оборудования]!Вес

	DoCmd.Close acForm, "ДобавлениеМаркиТр"

	DoCmd.Requery ""

	DoCmd.Requery "МаркаУдаление"

	End With

	Добавление_Ввод_марки_транспорта_Exit:

	Exit Sub

	Добавление_Ввод_марки_транспорта_Err:

	DoCmd.Close acForm, "ДобавлениеМаркиТр"

	MsgBox Error$

	Resume Добавление_Ввод_марки_транспорта_Exit

	End Sub

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

	On Error GoTo Удаление_Удаление_марки_транспорта_Err

	If (Eval("Forms![Марка транспортного оборудования]!МаркаУдаление Is Null")) Then

	MsgBox "Введены не все данные!", vbExclamation, "Удаление марки оборудования"

	Exit Sub

	End If

	DoCmd.OpenForm "ДобавлениеМаркиТр", acNormal, "", "", , acHidden

	DoCmd.SelectObject acForm, "ДобавлениеМаркиТр", False

	'DoCmd.GoToControl "[МаркаТр]"

	DoCmd.FindRecord Forms![Марка транспортного оборудования]!МаркаУдаление, acEntire, False, , True, acCurrent, False

	DoCmd.RunCommand acCmdDeleteRecord

	DoCmd.Close acForm, "ДобавлениеМаркиТр"

	DoCmd.Requery ""

	DoCmd.Requery "МаркаУдаление"

	Forms![Марка транспортного оборудования]!МаркаУдаление = ""

	Удаление_Удаление_марки_транспорта_Exit:

	Exit Sub

	Удаление_Удаление_марки_транспорта_Err:

	DoCmd.Close acForm, "ДобавлениеМаркиТр"

	m = MsgBox("Удаление невозможно так как имеется оборудование использующее эту марку!", vbExclamation, "Удаление марки оборудования")

	MsgBox Error$

	Resume Удаление_Удаление_марки_транспорта_Exit

	End Sub

	

	Форма «Обрабатывающее оборудование»

	

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

	On Error GoTo Добавление_Ввод_оборудования_Err

	With CodeContextObject

	If (Eval("(Forms![Обрабатывающее оборудование]![Марка] Is Null) Or (Forms![Обрабатывающее оборудование]![Гау] Is Null) Or (Forms![Обрабатывающее оборудование]![Дата] Is Null) Or (Forms![Обрабатывающее оборудование]![Стоим] Is Null) Or (Forms![Обрабатывающее оборудование]![Код] Is Null)")) Then

	MsgBox "Введены не все данные!", vbExclamation, "Добавление нового оборудования"

	Exit Sub

	End If

	DoCmd.GoToControl "КодОбр"

	DoCmd.FindRecord Val(Forms![Обрабатывающее оборудование]!Код), acEntire, False, , True, acCurrent, True

	If (Val(Forms![Обрабатывающее оборудование]!Код) = Forms![Обрабатывающее оборудование]!КодОбр) Then

	Beep

	MsgBox "Такой номер уже существует!", vbExclamation, "Ошибка"

	Exit Sub

	End If

	DoCmd.OpenForm "ДобавлениеОбр", acNormal, "", "", , acHidden

	DoCmd.OpenForm "Запрос №Кластеров Проверка", acNormal, "", "", , acHidden

	DoCmd.OpenForm "Запрос №Кластера по Марке", acNormal, "", "", , acHidden

	DoCmd.GoToRecord acForm, "ДобавлениеОбр", acNewRec

	If (Forms![Запрос №Кластеров Проверка]!CountКодКласт = 0) Then

	DoCmd.OpenForm "ДобавлениеКластер", acNormal, "", "", , acHidden

	DoCmd.GoToRecord acForm, "ДобавлениеКластер", acNewRec

	DoCmd.OpenForm "ФормаЗапросМАХ№Кластера", acNormal, "", "", , acHidden

	Forms!ДобавлениеКластер!КодКласт = Forms!ФормаЗапросМАХ№Кластера!MaxКодКласт + 1

	Forms!ДобавлениеОбр!КодКласт = Forms!ФормаЗапросМАХ№Кластера!MaxКодКласт + 1

	DoCmd.Close acForm, "ФормаЗапросМАХ№Кластера"

	DoCmd.OpenForm "ФормаЗапросДЛ,Диам,ЧастМарке", acNormal, "", "",, acHidden

	Forms!ДобавлениеКластер!ЧастКласт = Forms![ФормаЗапросДЛ,Диам,ЧастМарке]!ЧастотОбр

	Forms!ДобавлениеКластер!ДлинКласт = Forms![ФормаЗапросДЛ,Диам,ЧастМарке]!ДлДетОбр

	Forms!ДобавлениеКластер!ДиамКласт = Forms![ФормаЗапросДЛ,Диам,ЧастМарке]!ДиамДетОбр

	Forms!ДобавлениеКластер!ОтклКласт = 17

	DoCmd.Close acForm, "ФормаЗапросДЛ,Диам,ЧастМарке"

	DoCmd.Close acForm, "ДобавлениеКластер"

	End If

	If (Forms![Запрос №Кластеров Проверка]!CountКодКласт = 1) Then

	Forms!ДобавлениеОбр!КодКласт = Forms![Запрос №Кластера по Марке]!КодКласт

	End If

	DoCmd.Close acForm, "Запрос №Кластеров Проверка"

	DoCmd.Close acForm, "Запрос №Кластера по Марке"

	Forms!ДобавлениеОбр!КодОбр = Forms![Обрабатывающее оборудование]!Код

	Forms!ДобавлениеОбр!МаркаОбр = Forms![Обрабатывающее оборудование]!Марка

	Forms!ДобавлениеОбр!ДатаОбр = Forms![Обрабатывающее оборудование]!Дата

	Forms!ДобавлениеОбр!СтоимОбр = Forms![Обрабатывающее оборудование]!Стоим

	Forms!ДобавлениеОбр!КодГАУ = Forms![Обрабатывающее оборудование]!Гау

	DoCmd.Close acForm, "ДобавлениеОбр"

	DoCmd.Requery ""

	DoCmd.Requery "КодУдаления"

	End With

	Добавление_Ввод_оборудования_Exit:

	Exit Sub

	Добавление_Ввод_оборудования_Err:

	DoCmd.Close acForm, "ФормаЗапросМАХ№Кластера"

	DoCmd.Close acForm, "ФормаЗапросДЛ,Диам,ЧастМарке"

	DoCmd.Close acForm, "ДобавлениеКластер"

	DoCmd.Close acForm, "Запрос №Кластеров Проверка"

	DoCmd.Close acForm, "Запрос №Кластера по Марке"

	DoCmd.Close acForm, "ДобавлениеОбр"

	MsgBox Error$

	Resume Добавление_Ввод_оборудования_Exit

	End Sub

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

	On Error GoTo Удаление_Удаление_оборудования_Err

	If (Eval("Forms![Обрабатывающее оборудование]!КодУдаления Is Null")) Then

	MsgBox "Введены не все данные!", vbExclamation, "Удаление оборудования"

	Exit Sub

	End If

	DoCmd.OpenForm "ДобавлениеОбр", acNormal, "", "", , acHidden

	DoCmd.SelectObject acForm, "ДобавлениеОбр", False

	DoCmd.GoToControl "[КодОбр]"

	DoCmd.FindRecord Forms![Обрабатывающее оборудование]!КодУдаления, acEntire, False, , True, acCurrent, False

	DoCmd.RunCommand acCmdDeleteRecord

	DoCmd.Close acForm, "ДобавлениеОбр"

	DoCmd.Requery ""

	DoCmd.Requery "КодУдаления"

	Forms![Обрабатывающее оборудование]!КодУдаления = ""

	Удаление_Удаление_оборудования_Exit:

	Exit Sub

	Удаление_Удаление_оборудования_Err:

	DoCmd.Close acForm, "ДобавлениеОбр"

	m = MsgBox("Удаление невозможно так как имеются инструменты или приспособления, привязанные к данному оборудованию!", vbExclamation, "Удаление оборудования")

	Resume Удаление_Удаление_оборудования_Exit

	End Sub

	

	Форма «Транспортного оборудования»

	

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

	On Error GoTo Добавление_Ввод_транспорта_Err

	With CodeContextObject

	If (Eval("(Forms![Транспортное оборудование]![Марка] Is Null) Or (Forms![Транспортное оборудование]![Атнсс] Is Null) Or (Forms![Транспортное оборудование]![Код] Is Null) Or (Forms![Транспортное оборудование]![Стоим] Is Null)")) Then

	MsgBox "Введены не все данные!", vbExclamation, "Добавление нового оборудования"

	Exit Sub

	End If

	DoCmd.GoToControl "КодТр"

	DoCmd.FindRecord Val(Forms![Транспортное оборудование]!Код), acEntire, False, , True, acCurrent, True

	If (Val(Forms![Транспортное оборудование]!Код) = Forms![Транспортное оборудование]!КодТр) Then

	Beep

	MsgBox "Такой номер уже существует!", vbExclamation, "Ошибка"

	Exit Sub

	End If

	DoCmd.OpenForm "ДобавлениеТр", acNormal, "", "", , acHidden

	DoCmd.GoToRecord acForm, "ДобавлениеТр", acNewRec

	Forms!ДобавлениеТр!КодТр = Forms![Транспортное оборудование]!Код

	Forms!ДобавлениеТр!МаркаТр = Forms![Транспортное оборудование]!Марка

	Forms!ДобавлениеТр!КодТНС = Forms![Транспортное оборудование]!Атнсс

	Forms!ДобавлениеТр!СтоимТр = Forms![Транспортное оборудование]!Стоим

	DoCmd.Close acForm, "ДобавлениеТр"

	DoCmd.Requery ""

	DoCmd.Requery "КодУдаления"

	End With

	Добавление_Ввод_транспорта_Exit:

	Exit Sub

	Добавление_Ввод_транспорта_Err:

	DoCmd.Close acForm, "ДобавлениеТр"

	'MsgBox Error$

	Resume Добавление_Ввод_транспорта_Exit

	End Sub

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

	On Error GoTo Удаление_Удаление_транспорта_Err

	If (Eval("Forms![Транспортное оборудование]!КодУдаления Is Null")) Then

	MsgBox "Введены не все данные!", vbExclamation, "Удаление оборудования"

	Exit Sub

	End If

	DoCmd.OpenForm "ДобавлениеТр", acNormal, "", "", , acHidden

	DoCmd.SelectObject acForm, "ДобавлениеТр", False

	DoCmd.GoToControl "[КодТр]"

	DoCmd.FindRecord Forms![Транспортное оборудование]!КодУдаления, acEntire, False, True, acCurrent, False

	DoCmd.RunCommand acCmdDeleteRecord

	DoCmd.Close acForm, "ДобавлениеТр"

	DoCmd.Requery ""

	DoCmd.Requery "КодУдаления"

	Forms![Транспортное оборудование]!КодУдаления = ""

	Удаление_Удаление_транспорта_Exit:

	Exit Sub

	Удаление_Удаление_транспорта_Err:

	DoCmd.Close acForm, "ДобавлениеТр"

	m = MsgBox("Неизвестная ошибка. Удаление невозможно!", vbExclamation, "Удаление оборудования")

	''MsgBox Error$

	Resume Удаление_Удаление_транспорта_Exit

	End Sub

	

	Форма «Замена оборудования»

	

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

	If [Forms]![Отчет]![Flag].Value = Null Then m = MsgBox("Введите табельный номер", vbExclamation, "Ошибка"): Exit Sub

	If [Forms]![Отчет]![Flag].Value = 1 Then

	ЗапросОбр

	Else

	ЗапросТр

	End If

	End Sub

	Private Sub Список0_Click()

	DoCmd.Requery "Table"

	End Sub

	Private Sub Флажок4_Click()

	If Флажок4.Value Then

	[Список0].RowSource = "Обрабатывающее оборудование"

	Table.SourceObject = "Запрос.ЗапросЗамены Обр"

	Else

	[Список0].RowSource = "Транспортное оборудование"

	Table.SourceObject = "Запрос.ЗапросЗамены Тр"

	End If

	[Список0].Value = Null

	End Sub

10



2