Учет основного оборудования на предприятии
Министерство образования и науки Российской Федерации
Государственное образовательное учреждение высшего профессионального образования
Камская инженерно-экономическая академия
Кафедра А и ИТ
Курсовая работа
по дисциплине «Базы данных»
на тему: «Учет основного оборудования на предприятии»
Выполнил: ст. гр. 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>