Курсовая работа: Учет основного оборудования на предприятии
Название: Учет основного оборудования на предприятии Раздел: Рефераты по информатике, программированию Тип: курсовая работа | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Министерство образования и науки Российской Федерации Государственное образовательное учреждение высшего профессионального образования Камская инженерно-экономическая академия Кафедра А и ИТ Курсовая работа по дисциплине «Базы данных» на тему: «Учет основного оборудования на предприятии» Выполнил: ст. гр. 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. ЗАДАНИЕНеобходимо спроектировать и реализовать реляционную БД учета основного оборудования на предприятии. Целью курсовой работы является приобретение навыков по проектированию базы данных и разработки программного обеспечения для работы с ней. Отчет по работе должен содержать: 1. Системный анализ предметной области; 2. Последовательность проектирования БД двумя методами (декомпозиционным и ER-методом); 3. Обоснование выбора СУБД; 4. Разработанное приложение для работы с БД, а также общую блок-схему и блок-схему алгоритмов; 5. Инструкцию пользователя для разработанного приложения. ГЛАВА 2. СИСТЕМНЫЙ АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИДанная БД разработана для учета имеющегося основного оборудования на одном предприятии. При разработке необходимо учесть следующие требования: 1. Для каждого оборудования необходимо иметь возможность получить основную техническую информацию. 2. Обрабатывающие оборудования, которые имеют схожие технические характеристики необходимо объединить в кластеры. 3. Каждому обрабатывающему оборудованию необходимо привязать набор инструментов и приспособлений 4. Необходимо иметь возможность получения отчета по всем имеющимся оборудованиям. 5. Необходимо иметь возможность получения списка оборудования, способных заменить вышедшее из строя. Для корректной работы БД необходимо разделить основное оборудование на транспортное и обрабатывающее. Таким образом, в БД необходимо хранить: Данные об обрабатывающем оборудовании: 1. Код оборудования (КодОбр)– каждому обрабатывающему оборудованию присваивается уникальный код 2. Марка (МаркаОбр) – определяет технические характеристики обрабатывающего оборудования 3. Габаритные размеры (ГабарОбр) – общий для оборудования одной марки. 4. Наибольшая длина обрабатываемых деталей (ДлДетОбр) - параметр общий для оборудования одной марки. Величина указывается в мм. 5. Наибольший диаметр обрабатываемых деталей (ДиамДетОбр) –параметр общий для оборудования одной марки. Если деталь типа призма, то вместо диаметра указывается наибольший из ширины и высоты. Величина указывается в мм. 6. Пределы частот вращений главного шпинделя (ЧастотОбр) – общий параметр для оборудования одной марки. Величина указывается в мин-1 7. Мощность привода главного движения (МощОбр) – общий параметр для оборудования одной марки. Величина указывается кВт. 8. Стоимость (СтоимОбр) – определяет стоимость приобретения оборудования. Величина указывается в тыс. руб. 9. Дата изготовления (ДатаОбр)- определяет год выпуска обрабатывающего оборудования Данные об транспортном оборудовании: 1. Код оборудования (КодТр)– каждому транспортному оборудованию присваивается уникальный код 2. Марка (МаркаТр) – определяет технические характеристики транспортного оборудования 3. Скорость перемещения (СкорТр) – общий параметр для одной марки. Величина указывается в м/мин. 4. Габаритные размеры (ГабарТр) – общий параметр для одной марки. 5. Грузоподъемность (ГрузТр)–общий параметр для оборудования одной марки. Величина указывается в кг. 6. Масса транспортного оборудования (МассаТр) – общий параметр для оборудования одной марки. Величина указывается в т. 7. Стоимость (СтоимТр) – определяет стоимость приобретения транспортного оборудования. Величина указывается в тыс. руб. Данные об инструменте/приспособлении: 1. Код инструмента/приспособления (КодИП) – уникальный номер инструмента/приспособления на предприятии 2. Марка инструмента/приспособления (МаркИП) - определяет технические характеристики инструмента/приспособления 3. Назаначение инструмента/приспособления (НазнИП) – определяет техническое назначение инструмента/приспособления: резец проходной, резец копировальный и т.д. 4. «Инструмент» (ИнсПрисп) – параметр для разделения инструментов и приспособлений, хранимое значение логическое. Данные об автоматической транспортно накопительно-складской системе (далее просто АТНСС): 1. Код АТНСС (КодАТНСС) – уникальный код автоматической транспотрно-накопительно-складской системы. 2. Пропускная способность (ПропАТНСС)–число перевозимых ед.изделия в час 3. Площадь охватываемая данной АТНСС (ПлощАТНСС) – указывается в м2 Данные о гибком автоматизированном участке (далее просто ГАУ): 1. Код ГАУ (КодГАУ) – каждому ГАУ присваивается уникальный код. 2. Назначение ГАУ (НазнГАУ) – разные участки могут изготавливать одни и те же детали. 3. Площадь, занимаемая ГАУ (ПлощГАУ) – указывается в м2 Данные о гибкой производственной системе (далее просто ГПС): 1. Код ГПС (КодГПС) – каждому ГПС присваивается уникальный код. 2. Назначение ГПС (НазнГПС) –техническая информация о выполняемой работе на ГПС. 3. Наименовние цеха (НаимЦех) – несколько ГПС могут быть привязанык одному цеху. Данные о кластерах (объединение транспортного оборудования по определенным характеристикам в некотором диапазоне): 1. Код кластера (КодКласт)- уникальный код кластера 2. Частота вращения главного шпинделя (ЧастКласт) - устанавливается для каждого кластера 3. Длина обрабатываемых деталей (ДлинКласт)- устанавливается для каждого кластера 4. Диаметр обрабатываемых деталей (ДиамКласт) - устанавливается для каждого кластера. Если деталь типа призма, то вместо диаметра указывается наибольший из ширины и высоты. 5. Процент отклонения (ОтклКласт) – определяет диапазон отклонения параметров в пределах одного кластера Количественные характеристики При построении модели базы данных за основу выбран набор нормализованных отношений, полученный в результате проектирования ER-методом. Модель представлена на рисунке ниже. Предполагается, что количество обрабатывающего и транспортного оборудования на предприятии не более 1000 ед. и 500 ед. соответсвенно. В базе данных будет хранится информация о 5000 обрабатывающих и 2000 транспортных оборудованиях. Число ГАУ будет равно 200, ГПС - 30, а АТНСС – 70. Число используемых инструментов/приспособлений – 10000. Предполагается, что число кластеров будет не более 10000. ГЛАВА 3. ПРОЕКТИРОВАНИЕ БАЗЫ ДАННЫХ3.1 Проектирование базы данных декомпозиционным методомСоставим универсальное отношение, содержащее атрибуты, указанные ниже, и внесём в него ряд записей. Атрибуты, хранимые в БД: Код транспортного оборудования (КодТр), код инструмента/приспособления (КодИП), код обрабатывающего оборудования (КодОбр), марка обрабатывающего оборудования (МаркаОбр), габаритные размеры обрабатывающего оборудования (ГабарОбр), наибольшая длина обрабатываемых деталей на обрабатывающем оборудовании (ДлДетОбр), наибольший диаметр обрабатываемых деталей на обрабатывающем оборудовании (ДиамДетОбр), пределы частот вращений главного шпинделя на обрабатывающем оборудовании (ЧастотОбр), мощность привода главного движения обрабатывающего оборудования (МощОбр), стоимость обрабатывающего оборудования (СтоимОбр), дата изготовления обрабатывающего оборудования (ДатаОбр), марка транспортного оборудования (МаркаТр), скорость перемещения транспортного оборудования (СкорТр), габаритные размеры транспортного оборудования (ГабарТр), грузоподъемность транспортного оборудования (ГрузТр), масса транспортного оборудования (МассаТр), стоимость транспортного оборудования (СтоимТр), марка инструмента/приспособления (МаркИП), назначение инструмента/приспособления (НазнИП), инструмент или приспосбление (ИнсПрисп), код ГАУ (КодГАУ), назначение ГАУ (НазнГАУ), площадь, занимаемая ГАУ (ПлощГАУ), код АТНСС (КодТНС), пропускная способность АТНСС (ПропТНС), площадь охватываемая данной АТНСС (ПлощТНС), код ГПС (КодГПС), назначение ГПС (НазнГПС), наименовние цеха (НаимЦех), код кластера (КодКласт), частота вращения главного шпинделя в кластере (ЧастКласт), длина обрабатываемых деталей в кластере (ДлинКласт), диаметр обрабатываемых деталей в кластере (ДиамКласт), процент отклонения в кластере (ОтклКласт)
Проанализируем ФЗ данного отношения: 1. Код обрабатывающего оборудования – уникален и однозначно определяет марку оборудования, стоимость оборудования, дата изготовления оборудования. В тоже время каждое обрабатывающее оборудования однозначно привязано к одному кластеру и одному ГАУ. В свою очередь, марка оборудования однозначно определяет габаритные размеры оборудования, наибольшую длину и диаметр обрабатываемых деталей, пределы частот вращений главного шпинделя и мощность привода главного движения. Таким образом, имеем: КодОбр ® МаркаОбр; КодОбр ® СтоимОбр; КодОбр ® ДатаОбр; КодОбр ® КодКласт; КодОбр ® КодГАУ; МаркаОбр ® ГабарОбр; МаркаОбр ® ДлДетОбр; МаркаОбр ® ДиамДетОбр; МаркаОбр ® ЧастотОбр; МаркаОбр ® МощОбр; 2. Если известен код транспортного оборудования, то по нему можно определить марку транспортного оборудования, стоимость транспортного оборудования. В тоже время каждое транспортное оборудование привязано к одному АТНСС. В свою очередь, зная марку транспортного оборудования, мы однозначно знаем скорость перемещения, габаритные размеры, грузоподъемность и масса транспортного оборудования. Таким образом, имеем: КодТр ® МаркаТр; КодТр ® СтоимТр; КодТр ® КодТНС; МаркаТр ® СкорТр; МаркаТр ® ГабарТр; МаркаТр ® ГрузТр; МаркаТр ® МассаТр; 3. Код инструмента/приспособления однозначно определяет марку инструмента/приспособления, назначение инструмента/приспособления и определяет инструмент это или приспособление. В тоже время код интрумента/приспособления однозначно определяет оборудование, к которому привязано. Таким образом, имеем: КодИП ® МаркИП; КодИП ® НазнИП; КодИП ® ИнсПрисп; КодИП ® КодОбр; 4. Код АТНСС однозначно определяет пропускную способность и площадь, охватываемая данной АТНСС. Таким образом, имеем: КодТНС ® ПропТНС; КодТНС ® ПлощТНС; 5. Код ГАУ однозначно определяет назначение и площадь, занимаемую ГАУ. В тоже время код ГАУ совместно с кодом АТНСС однозначно привязано к одному ГПС. Таким образом, несколько ГАУ и АТНСС могут быть привязано к одному ГПС. Таким образом, имеем: КодГАУ ® НазнГАУ; КодГАУ ® ПлощГАУ; КодГАУ, КодТНС ® КодГПС; 6. Код ГПС однозначно определяет назначение ГПС и наименование цеха к которому оно привязано. Таким образом, имеем: КодГПС ® НазнГПС; КодГПС ® НаимЦех; 7. Код кластера однозначно процент отклонения параметров, определяет частоту вращения главного шпинделя, длину обрабатываемых деталей, диаметр обрабатываемых деталей на оборудовании принадлежащем данному кластеру. Таким образом, имеем: КодКласт ® ЧастКласт; КодКласт ® ДлинКласт; КодКласт ® ДиамКласт; КодКласт ® ОтклКласт; С учётом вышесказанного диаграмма ФЗ имеет вид (см. рис.). R
В данной курсовой работе нет избыточных ФЗ, следовательно, универсальное отношение имеет минимальное покрытие. Определяем возможные ключи и детерминанты отношения R
Учитывая, что не каждый первичный ключ является детерминантом, рассматриваемое универсальное отношение не находится в нормальной форме Бойса – Кодда (НФБК) и требуется декомпозиция универсального отношения. Для проведения декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: КодГПС ® НазнГПС, НаимЦех. В результате получим два отношения R 1 и R 2 . R 1 ГПС (КодГПС, НазнГПС, НаимЦех)
Т.е. отношение находится в НФБК и дальнейшая его декомпозиция не требуется (возможный ключ и детерминант совпадают): R 2 (КодТр, КодИП, КодОбр, МаркаОбр, ГабарОбр, ДлДетОбр, ДиамДетОбр, ЧастотОбр, МощОбр, СтоимОбр, ДатаОбр, МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр, СтоимТр, МаркИП, НазнИП, ИнсПрисп, КодГАУ, НазнГАУ, ПлощГАУ, КодТНС, ПропТНС, ПлощТНС, КодГПС, КодКласт, ЧастКласт, ДлинКласт, ДиамКласт,ОтклКласт)
Т.к. возможный ключ не является детерминантом, необходима дальнейшая декомпозиция. Для проведения декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: КодКласт® ЧастКласт, ДлинКласт, ДиамКласт,ОтклКласт. В результате получим два отношения R 3 и R 4 : R 3 Кластер (КодКласт, ЧастКласт, ДлинКласт, ДиамКласт,ОтклКласт)
Т.е. отношение находится в НФБК и дальнейшая его декомпозиция не требуется (возможный ключ и детерминант совпадают). R 4 (КодТр, КодИП, КодОбр, МаркаОбр, ГабарОбр, ДлДетОбр, ДиамДетОбр, ЧастотОбр, МощОбр, СтоимОбр, ДатаОбр, МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр, СтоимТр, МаркИП, НазнИП, ИнсПрисп, КодГАУ, НазнГАУ, ПлощГАУ, КодТНС, ПропТНС, ПлощТНС, КодГПС, КодКласт)
Т.к. возможный ключ не является детерминантом, необходима дальнейшая декомпозиция. Для проведения декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: МаркаОбр ® ГабарОбр, ДлДетОбр, ДиамДетОбр, ЧастотОбр, МощОбр. В результате получим два отношения R 5 и R 6 : R 5 МаркаОбраб (МаркаОбр, ГабарОбр, ДлДетОбр,ДиамДетОбр, ЧастотОбр, МощОбр)
Т.е. отношение находится в НФБК и дальнейшая его декомпозиция не требуется (возможный ключ и детерминант совпадают). R 6 (КодТр, КодИП, КодОбр, МаркаОбр, СтоимОбр, ДатаОбр, МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр, СтоимТр, МаркИП, НазнИП, ИнсПрисп, КодГАУ, НазнГАУ, ПлощГАУ, КодТНС, ПропТНС, ПлощТНС, КодГПС, КодКласт)
Т.к. возможный ключ не является детерминантом, необходима дальнейшая декомпозиция. Для проведения декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: КодГАУ ® НазнГАУ, ПлощГАУ. В результате получим два отношения R 7 и R 8 : R 7 ГАУ (КодГАУ, НазнГАУ, ПлощГАУ)
Т.е. отношение находится в НФБК и дальнейшая его декомпозиция не требуется (возможный ключ и детерминант совпадают). R 8 (КодТр, КодИП, КодОбр, МаркаОбр, СтоимОбр, ДатаОбр, МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр, СтоимТр, МаркИП, НазнИП, ИнсПрисп, КодГАУ, КодТНС, ПропТНС, ПлощТНС, КодГПС, КодКласт)
Т.к. возможный ключ не является детерминантом, необходима дальнейшая декомпозиция. Для проведения декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: КодТНС ® ПропТНС, ПлощТНС. В результате получим два отношения R 9 и R 10 : R 9 ТНС (КодТНС, ПропТНС, ПлощТНС)
Т.е. отношение находится в НФБК и дальнейшая его декомпозиция не требуется (возможный ключ и детерминант совпадают). R 10 (КодТр, КодИП, КодОбр, МаркаОбр, СтоимОбр, ДатаОбр, МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр, СтоимТр, МаркИП, НазнИП, ИнсПрисп, КодГАУ, КодТНС, КодГПС, КодКласт)
Т.к. возможный ключ не является детерминантом, необходима дальнейшая декомпозиция. Для проведения декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: КодГАУ, КодТНС ® КодГПС. В результате получим три отношения R 11, R 12 и R 13 : R 11 ГАУ-ТНС (КодГАУ, КодТНС, КодГПС)
Т.е. отношение находится в НФБК и дальнейшая его декомпозиция не требуется (возможный ключ и детерминант совпадают). R 12 (КодТр, МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр, СтоимТр, КодТНС)
Т.к. возможный ключ не является детерминантом, необходима дальнейшая декомпозиция. Для проведения декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: МаркаТр ® СкроТр, ГабарТр, ГрузТр, МассаТр. В результате получим три отношения R 14 и R 15 : R 14 МаркаТрансп (МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр)
Т.е. отношение находится в НФБК и дальнейшая его декомпозиция не требуется (возможный ключ и детерминант совпадают). R 15 Транспортное оборудование (КодТр, КодТНС, МаркаТр, СтоимТр)
Т.е. отношение находится в НФБК и дальнейшая его декомпозиция не требуется (возможный ключ и детерминант совпадают). R 13 (КодИП, КодОбр, МаркаОбр, СтоимОбр, ДатаОбр, МаркИП, НазнИП, ИнсПрисп, КодГАУ, КодКласт)
Т.к. возможный ключ не является детерминантом, необходима дальнейшая декомпозиция. Для проведения декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: КодОбр ® КодКласт, МаркаОбр, КодГАУ, ДатаОбр, СтоимОбр. В результате получим три отношения R 16 и R 17 : R 16 Обрабатывающее оборудование (КодОбр, МаркаОбр, КодКласт, КодГАУ, ДатаОбр, СтоимОбр)
Т.е. отношение находится в НФБК и дальнейшая его декомпозиция не требуется (возможный ключ и детерминант совпадают). R 17 Инструмент/приспособление (КодИП, КодОбр, МаркИП, НазнИП, ИнсПрисп)
Т.е. отношение находится в НФБК и дальнейшая его декомпозиция не требуется (возможный ключ и детерминант совпадают). В результате использования декомпозиционного метода проектирования получили набор из десяти нормализованных отношений. R 1 ГПС (КодГПС, НазнГПС, НаимЦех) R 3 Кластер (КодКласт, ЧастКласт, ДлинКласт, ДиамКласт,ОтклКласт) R 5 МаркаОбраб (МаркаОбр, ГабарОбр, ДлДетОбр,ДиамДетОбр, ЧастотОбр, МощОбр) R 7 ГАУ (КодГАУ, НазнГАУ, ПлощГАУ) R 9 ТНС (КодТНС, ПропТНС, ПлощТНС) R 11 ГАУ-ТНС (КодГАУ, КодТНС, КодГПС) R 14 МаркаТрансп (МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр) R 15 Транспортное оборудование (КодТр, КодТНС, МаркаТр, СтоимТр) R 16 Обрабатывающее оборудование (КодОбр, МаркаОбр, КодКласт, КодГАУ, ДатаОбр, СтоимОбр) R 17 Инструмент/приспособление (КодИП, КодОбр, МаркИП, НазнИП, ИнсПрисп) Заполним данными эти отношения: R 1 ГПС (КодГПС, НазнГПС, НаимЦех)
R 3 Кластер (КодКласт, ЧастКласт, ДлинКласт, ДиамКласт,ОтклКласт)
R 5 МаркаОбраб (МаркаОбр, ГабарОбр, ДлДетОбр,ДиамДетОбр, ЧастотОбр, МощОбр)
R 7 ГАУ (КодГАУ, НазнГАУ, ПлощГАУ)
R 9 ТНС (КодТНС, ПропТНС, ПлощТНС)
R 11 ГАУ-ТНС (КодГАУ, КодТНС, КодГПС)
R 14 МаркаТрансп (МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр)
R 15 Транспортное оборудование (КодТр, МаркаТр, СтоимТр, КодТНС)
R 16 Обрабатывающее оборудование (КодОбр, МаркаОбр, ДатаОбр, СтоимОбр, КодКласт, КодГАУ)
R 17 Инструмент/приспособление (КодИП, КодОбр, МаркИП, НазнИП, ИнсПрисп)
3.2 Проектирование базы данных с использованием ER - методаНа первом этапе проектирования определяются сущности и связи между ними. Представляющими интерес сущностями в рассматриваемом случае являются ГАУ, АТНСС, Кластер, Обрабатывающее оборудование, Транспортное оборудование. Сущности ГАУ (Г) и АТНСС(А) объединены связью «Соединяется». Сущности «Обрабатывающее оборудование»(О) и ГАУ(Г) объединены связью «Входит». Сущности «Транспортное оборудование»(Т) и АТНСС(А) объединены связью «Входит». Сущности «Инструменты, приспособления» (И) и «Обрабатывающее оборудование»(О) объединены связью «Привязаны». Сущности «Обрабатывающее оборудование»(О) и Кластеры(К) объединены связью «Входит». Ролевых сущностей здесь нет. Составим диаграммы ER– экземпляров: Каждое ГАУ может связываться с несколькими АТНСС, каждая АТНСС может соединяться с несколькими ГАУ, поэтому степень связи N:М. Класс принадлежности обеих сущностей – обязательный. Каждое обрабатывающее оборудование может входить только в одно ГАУ, в каждое ГАУ может входить несколько оборудований, поэтому степень связи N:1. Класс принадлежности обеих сущностей – обязательный. Каждое транспортное оборудование может входить только в одну АТНСС, в каждую АТНСС может входить несколько оборудований, поэтому степень связи N:1. Класс принадлежности обеих сущностей – обязательный. Каждый инструмент(приспособление) может привязывается только к одному обрабатывающему оборудованию, каждому оборудованию может быть привязано несколько инструментов(приспособлений), поэтому степень связи N:1. Класс принадлежности обеих сущностей – обязательный. Каждое обрабатывающее оборудование может входить только в один кластер ГАУ, в каждый кластер может входить несколько оборудований, поэтому степень связи N:1. Класс принадлежности обеих сущностей – обязательный. Составим диаграмму ER– типа: Ключи сущностей: КодКласт, КодИП, КодОбр, КодГАУ, КодТНС, КодТр. Переходим к генерации предварительных отношений Рассмотрим отношения ГАУ – АТНСС. Т.к. степень связи N:М, то требуется три отношения, два из которых для сущностей, в которых первичными ключами являются ключи соответствующих сущностей и одно отношение для связи, где в качестве атрибутов используются ключи обоих сущностей. R 1 ГАУ (КодГАУ, …) R 2 АТНСС (КодТНС, …) R 3 Соединение (КодГАУ, КодТНС, …) Рассмотрим отношения «Транспортное оборудование»- АТНСС, «Обрабатывающее оборудование» - ГАУ, «Обрабатывающее оборудование» - Кластер, «Инструменты, приспособления» - «Обрабатывающее оборудование». Для каждого отношения справедливо правило генерации отношений №4. Т.к. степень связи N:1 и класс принадлежности N-связной сущности является обязательным, то достаточным является использование двух отношений, по одному - на каждую сущность, в которых первичными ключами являются ключи соответствующих сущностей. Дополнительно ключ 1-связной сущности должен быть добавлен как атрибут в отношение, отводимое N-связной сущности. R 4 Транспортное оборудование (КодТр, КодТНС …) R 5 АТНСС2 (КодТНС, …) R 6 Обрабатывающее оборудование1 (КодОбр, КодГАУ …) R 7 ГАУ2 (КодГау, …) R 8 Обрабатывающее оборудование2 (КодОбр, КодКласт …) R 9 Кластер (КодКласт, …) R 10 Инструменты,приспособления (КодИП, КодОбр …) R 11 Обрабатывающее оборудование3 (КодОбр, …) Видно, что отношения R5 и R2 дублируют друг друга, следовательно одно отношение необходимо исключить из проектного набора. Пусть им будет R2. Видно, что отношения R7 и R1 дублируют друг друга, следовательно одно отношение необходимо исключить из проектного набора. Пусть им будет R1. Видно, что атрибуты отношения R11 могут быть найдены в отношениях R8 и R6, следовательно отношение R11 необходимо исключить из проектного набора. Видно, что все атрибуты отношения R8, кроме КодКласт, могут быть найдены в отношении R6, следовательно их обоих необходимо заменить отношением, полученным операцией СОЕДИНЕНИЕ над ними: R 12 Обрабатывающее оборудование (КодОбр, КодГАУ, КодКласт …) Распределим оставшиеся атрибуты по отношениям: R 1 ГАУ (КодГАУ, НазнГАУ, ПлощГАУ) R 2 АТНСС (КодТНС, ПропТНС, ПлощТНС) R 3 Содинение (КодГАУ, КодТНС, КодГПС, НазнГПС, НаимЦех) R 4 Транспортное оборудование (КодТр, КодТНС, МаркаТр, СтоимТр, СкорТр, ГабарТр, ГрузТр, МассаТр) R 9 Кластер (КодКласт, ЧастКласт, ДлинКласт, ДиамКласт,ОтклКласт ) R 10 Инструменты,приспособления (КодИП, КодОбр,МаркИП, НазнИП, ИнсПрисп) R 12 Обрабатывающее оборудование (КодОбр, КодГАУ, КодКласт, МаркаОбр, ДатаОбр, СтоимОбр, ГабарОбр, ДлДетОбр,ДиамДетОбр, ЧастотОбр, МощОбр) Для проверки нахождения полученных отношений в НФБК построим для каждого отношения диаграммы ФЗ и определим возможные ключи и детерминанты. R 1 ГАУ (КодГАУ, НазнГАУ, ПлощГАУ)
Отношение находится в НФБК, декомпозиция не требуется. R 2 АТНСС (КодТНС, ПропТНС, ПлощТНС)
Отношение находится в НФБК, декомпозиция не требуется. R 4 Транспортное оборудование (КодТр, КодТНС, МаркаТр, СтоимТр, СкорТр, ГабарТр, ГрузТр, МассаТр)
Т.к. возможный ключ не является детерминантом, необходима дальнейшая декомпозиция. Отношение R 4 разделяем на R 13 и R 14 . Для декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: МаркаТр® СкорТр, ГабарТр, ГрузТр, МассаТр. В результате получим два отношения: R 13 Транспортное оборудование (КодТр, КодТНС, МаркаТр, СтоимТр)
Отношение находится в НФБК, декомпозиция не требуется. R 14 МаркаТрансп (МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр)
Отношение находится в НФБК, декомпозиция не требуется. R 9 Кластер (КодКласт, ЧастКласт, ДлинКласт, ДиамКласт,ОтклКласт )
Отношение находится в НФБК, декомпозиция не требуется. R 10 Инструменты,приспособления (КодИП, КодОбр,МаркИП, НазнИП, ИнсПрисп)
Отношение находится в НФБК, декомпозиция не требуется. R 12 Обрабатывающее оборудование (КодОбр, КодГАУ, КодКласт, МаркаОбр, ДатаОбр, СтоимОбр, ГабарОбр, ДлДетОбр,ДиамДетОбр, ЧастотОбр, МощОбр)
Т.к. возможный ключ не является детерминантом, необходима дальнейшая декомпозиция. Отношение R 12 разделяем на R 15 и R 16 . Для декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: МаркаОбр® ГабарОбр, ДлДетОбр, ДиамДетОбр, ЧастотОбр, МощОбр. В результате получим два отношения: R 15 Обрабатывающее оборудование (КодОбр, МаркаОбр, КодКласт, КодГАУ, ДатаОбр, СтоимОбр)
Отношение находится в НФБК, декомпозиция не требуется. R 16 МаркаОбраб(МаркаОбр, ГабарОбр, ДлДетОбр,ДиамДетОбр, ЧастотОбр, МощОбр)
Отношение находится в НФБК, декомпозиция не требуется. R 3 Соединение (КодГАУ, КодТНС, КодГПС, НазнГПС, НаимЦех)
Т.к. возможный ключ не является детерминантом, необходима дальнейшая декомпозиция. Отношение R 3 разделяем на R 17 и R 18 . Для декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: КодГПС® НазнГПС, НаимЦех. В результате получим два отношения: R 17 ГПС (КодГПС, НазнГПС, НаимЦех)
Отношение находится в НФБК, декомпозиция не требуется. R 18 Соединение (КодГАУ, КодТНС, КодГПС)
Отношение находится в НФБК, декомпозиция не требуется. 3.3 Проверка отношений на завершающей фазе проектированияРезультирующий набор отношений: R 1 Инструменты,приспособления (КодИП, КодОбр,МаркИП, НазнИП, ИнсПрисп) R 2 Обрабатывающее оборудование (КодОбр, МаркаОбр, КодКласт, КодГАУ, ДатаОбр, СтоимОбр) R 3 Транспортное оборудование (КодТр, КодТНС, МаркаТр, СтоимТр) R 4 МаркаОбраб(МаркаОбр, ГабарОбр, ДлДетОбр,ДиамДетОбр, ЧастотОбр, МощОбр) R 5 МаркаТрансп (МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр) R 6 Кластер (КодКласт, ЧастКласт, ДлинКласт, ДиамКласт,ОтклКласт ) R 7 ГАУ (КодГАУ, НазнГАУ, ПлощГАУ) R 8 АТНСС (КодТНС, ПропТНС, ПлощТНС) R 9 ГПС (КодГПС, НазнГПС, НаимЦех) R 10 ГАУ-ТНС (КодГАУ, КодТНС, КодГПС) Проведем проверку: 1. Одна и та же ФЗ не содержится более чем в одном отношении. 2. Нет отношений, все атрибуты в которых могут быть найдены в другом отношении проектного набора, либо в отношении, полученном из других отношений проектного набора с помощью серии операций СОЕДИНЕНИЕ. Т.е. отсутствуют избыточные отношения. 3. Набор ФЗ, полученный в результате проектирования декомпозиционным методом совпадает с набором, присутствующим в минимальном покрытии, полученным перед началом декомпозиции. 3.4 Модель базы данныхПри построении модели базы данных за основу выбран набор нормализованных отношений, полученный в результате проектирования ER-методом. Модель представлена на рисунке ниже. Предполагается, что количество обрабатывающего и транспортного оборудования на предприятии не более 1000 ед. и 500 ед. соответственно. В базе данных будет храниться информация о 5000 обрабатывающих и 2000 транспортных оборудованиях. Число ГАУ будет равно 200, ГПС - 30, а АТНСС – 70. Число используемых инструментов/приспособлений – 10000. Предполагается, что число кластеров будет не более 10000.
Расчет необходимого дискового пространства для хранения БД: Инструменты,приспособления: 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. ВЫБОР СУБДВыбор системы управления баз данных (СУБД) представляет собой сложную многопараметрическую задачу и является одним из важных этапов при разработке приложений баз данных. Выбранный программный продукт должен удовлетворять как текущим, так и будущим потребностям предприятия, при этом следует учитывать финансовые затраты на приобретение необходимого оборудования, самой системы, разработку необходимого программного обеспечения на ее основе, а также обучение персонала. Т.к. разработчик данной БД одновременно является и заказчиком, то было принято решение использовать для реализации данного курсового проекта СУБД MSAccess2003. Хотя эта СУБД и не является самой мощной и функционально насыщенной (к примеру СУБД MSSQLSERVERпредоставляет мощные средства резервного копирования, репликации и восстановления), но тем не менее полностью удовлетворяет требованиям данного курсового проекта. Кроме того, можно использовать встроенные функции MSAccess2003 для создания форм и отчетов, не прибегая к использованию каких-либо языков программирования, что значительно сокращает время разработки интерфейса пользователя. ГЛАВА 5. РАЗРАБОТКА ПРИЛОЖЕНИЯ5.1 Общая схема приложенияДля работы с БД в среде MSAccessбыло разработано приложение, имеющее следующую структуру: По схеме видно, что приложение содержит 1 главную форму и 11 подчиненных, а также 2 отчета. Т.к. пользователями БД являются в первую очередь инженера производственных участков, то внимание при разработке приложения было уделено таким функциям, как проверка повторяющихся табельных номеров, автоматическое создание кластеров, проверка наличия связей при удалении (например если к ГАУ привязано оборудование, то удаление ГАУ некорректно!). Кроме того, были разработаны отчеты по всему оборудованию на предприятии( обрабатывающему и транспортному с группировкой по марке оборудования и с указанием общей стоимости оборудования на предприятии. Также предусмотрена возможность получения списка оборудования, которое может заменить вышедшее из строя. 5.2 Запросы и макросы, использованные в приложенииРассмотрим описание используемых макрогрупп в БД. 1. Макрогруппа Добавление Содержит макросы « Ввод оборудования», «Ввод марки оборудования», «Ввод транспорта», « Ввод марки транспорта», «Ввод инструмента», «Ввод ГПС», «Ввод ГАУ», «Ввод ТНС», обеспечивающие ввод новой записи в соответсвющую таблицу. При этом в каждом макросе обеспечивается проверка ввода значения в каждое поле записи и проверка повторяющегося табельного номера новой записи. В макросе « Ввод оборудования» предусмотрено автоматическое распознование кластера, к которому следует отнести новое оборудование. Макрос «Ввод Кластера» предназначен для ввода новой записи в таблицу «Кластер», вызывается он из макроса « Ввод оборудования» в случае если новому оборудованию не соответствует ни один из кластеров. 2. Макрогруппа Удаление Содержит в себе макросы « Удаление оборудования», « Удаление марки оборудования», «Удаление транспорта», « Удаление марки транспорта», «Удаление инструмента», «Удаление ГПС», «Удаление ГАУ», «Удаление ГПС», «Удаление ТНС», «Удаление Кластера» которые используются для удаления записи в соответствующей таблице по введенному табельному номеру. В каждом макросе обеспечивается проверка ввода пустого табельного номера. 3. Макрогруппа autoexec Содержит в себе макрос для автоматического запуска главной формы при открытии БД. 4. Макрогруппа Главная Содержит в себе макрос “Выход”, который выполняет действие - закрытие БД. 5. Макрогруппа Обновление – макрос «ГПС» обеспечивает обновление списка транспортного оборудования в форме «Содержимое ГПС», макрос «Замена» обеспечивает обновление списка заменяющего оборудования в форме «Замена оборудования». 6. Макрогруппа Открыть – выполняется из главной формы и содержит следующий макросы: - Открыть Обр . Открытие формы «Обрабатывающее оборудование» - Открыть Тр. Открытие формы «Транспортное оборудование» - Открыть МаркаОбр. Открытие формы «Марка обрабатывающего оборудования» - Открыть МаркаТр. Открытие формы «Марки транспортного оборудования» - Открыть Кластер. Открытие формы «Кластер» - Открыть ИП. Открытие формы «Инструменты, приспособления» - Открыть ГПС. Открытие формы «ГПС» - Открыть ГПСдоб. Открытие формы «ГПС-добавление» - Открыть ГАУ. Открытие формы «ГАУ» - Открыть ТНС. Открытие формы «АТНСС» - Открыть замену. Открытие формы «Замена оборудования» - Открыть отчет. Открытие отчета «Обрабатывающее оборудование» - Открыть отчетТр. Открытие отчета «Транспортное оборудование» Листинг программного кода макросов приведен в приложении. Кроме макросов в приложении использованы 17 запросов, созданных при помощи встроенного конструктора запросов Access. 1. Запрос ДЛ,Диам,Част по Марке Определяет параметры оборудования (Длина, диаметр обрабатываемых деталей, наибольшая частота вращения гл. шпинделя) по марке оборудования. 2. Запрос №Кластера по Марке Определяет номера кластера по параметрам : Длина, диаметр обрабатываемых деталей и наибольшей частота вращения гл. шпинделя. 3. Запрос №Кластеров Проверка Определяет число записей в запросе Запрос №Кластера по Марке . 4. ЗАПРОС Обрабатывающее оборудование Объединяет две таблицы: Обрабатывающее оборудование и Марка обрабатывающего оборудования. 5. ЗАПРОС Транспортного оборудование Объединяет две таблицы: Транспортное оборудование и Марка транспортного оборудования. 6. ЗапросМАХ№Кластера Определяет максимальный табельный номер в таблице «Кластер» 7. ЗапросЧислоТНС Определяет число записей в таблице «АТНСС». Необходимо для запроса ЗапросГауПолностьюСвязанные 8. ЗапросОбр Определяет марку обрабатывающего оборудования вышедшего из строя для формы «Замена оборудования» 9. ЗапросТр Определяет марку транспортного оборудования вышедшего из строя для формы «Замена оборудования» 10. ЗапросЗамены Обр Используя запрос ЗапросОбр формирует список обрабатывающего оборудования, способное заменить вышедшее из строя. 11. ЗапросЗамены Тр Используя запрос ЗапросТр формирует список обрабатывающего оборудования, способное заменить вышедшее из строя. 12. ЗапросГауСвязанные Для кажого ГАУ определяет число связей с АТНСС. Необходимо для формы «Содержимое ГПС» , для добавления новой записи. 13. ЗапросГауПолностьюСвязанные Определяет список ГАУ, связанных с каждым АТНСС. Необходимо для формы «Содержимое ГПС», для добавления новой записи. 14. Запрос ГАУ свободных Определяет список ГАУ, которых могут образовывать связь хоть с одной АТНСС. Необходимо для формы «Содержимое ГПС», для добавления новой записи 15. Запрос для ГПС содержимого Подчиненный Определяет список АТНСС связанных с выбранным ГАУ в форме «Содержимое ГПС» при добавлении новой записи. 16. Запрос для ГПС содержимого Определяет список АТНСС не связанных с выбранным ГАУ в форме «Содержимое ГПС» при добавлении новой записи. 17. ЗАПРОС ГАУ и АТНСС Формирует список связанных ГАУ и АТНСС. Необходимо для формы «Содержимое ГПС» 5.3 Описание приложения5.3.1 Функциональные возможности приложенияПри помощи разработанного приложения можно: 1. Добавлять/изменять записи, характеризующие обрабатывающее оборудование, марку обрабатывающего оборудования. 2. Добавлять/изменять записи, характеризующие транспортное оборудование, марку транспортного оборудования. 3. Добавлять/изменять записи, характеризующие ГАУ. 4. Добавлять/изменять записи, характеризующие АТНСС. 5. Добавлять/изменять записи, характеризующие ГПС. 6. Добавлять/изменять записи, характеризующие Инструменты, приспособления 7. Получать отчет об обрабатывающем оборудовании. 8. Получать отчет об транспортном оборудовании. 9. Получать информацию об оборудовании способном заменить вышедшее из строя. 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: MsgBoxError$ Resume Открыть_Открыть_ИП_Exit End Sub Private Sub Кнопка 12_Click() IfMsgBox("Открыть отчет по обрабатывающему оборудованию?", vbYesNo, "Отчет") = vbYesThen 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: MsgBoxError$ 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: MsgBoxError$ 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.CloseacForm, "ДобавлениеГАУ" DoCmd.Requery"" DoCmd.Requery"ГАУУдаления" EndWith Добавление_Ввод_ГАУ_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 |