Автоматизация учета средств измерений и комплектующих материалов при выполнении ремонтов и технического обслуживания средств измерений (ТОиР) ТПУ "ЗапСибНефтеавтоматика"

Технико-экономическая характеристика и анализ деятельности организации. Выбор и обоснование комплекса задач автоматизации: информационного обеспечения, СУБД, инструментальных средств программирования и технического обеспечения. Проектирование базы данных.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 08.01.2014
Размер файла 9,6 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

GROUP BY Ремонт.Номер;

RepRefit

Компонент ADOQuery вкладки dbGo, обеспечивающий реализацию запроса к БД Access, для формирования отчета об аварийный поломках КИПиА за период времени:

SELECT Ремонт.Номер, Ремонт.Дата, Вид.Имя, Прибор.Имя, Клиент.Имя, МестаУстановки.Имя, Ремонт.ДатаВыполнения

FROM Вид INNER JOIN ((Клиент INNER JOIN (МестаУстановки INNER JOIN (Прибор INNER JOIN СредствоИзмерений ON Прибор.Номер = СредствоИзмерений.Прибор) ON МестаУстановки.Номер = СредствоИзмерений.МестоУстановки) ON Клиент.Номер = МестаУстановки.Компания) INNER JOIN Ремонт ON СредствоИзмерений.Номер = Ремонт.Прибор) ON Вид.Номер = Прибор.Вид

WHERE (((Ремонт.ДатаВыполнения) Between D1 And D2));

RepEngin

Компонент ADOQuery вкладки dbGo, обеспечивающий реализацию запроса к БД Access, для формирования отчета о результатах работы инженеров КИПиА за период времени:

SELECT Инженер.Номер, Инженер.Имя, Count(Ремонт.Номер) AS [Count-Номер]

FROM Инженер INNER JOIN Ремонт ON Инженер.Номер = Ремонт.Инженер

WHERE (((Ремонт.ДатаВыполнения) Between D1 And D2))

GROUP BY Инженер.Номер, Инженер.Имя

ORDER BY Count(Ремонт.Номер) DESC;

RepService

Компонент ADOQuery вкладки dbGo, обеспечивающий реализацию запроса к БД Access, для формирования отчета об уровне сервиса обслуживания клиентов за период времени:

SELECT Клиент.Номер, Клиент.Имя, Count(Ремонт.Номер) AS [Count-Номер]

FROM ((Клиент INNER JOIN МестаУстановки ON Клиент.Номер = МестаУстановки.Компания) INNER JOIN СредствоИзмерений ON МестаУстановки.Номер = СредствоИзмерений.МестоУстановки) INNER JOIN Ремонт ON СредствоИзмерений.Номер = Ремонт.Прибор

WHERE (((Ремонт.ДатаВыполнения) Between D1 And D2))

GROUP BY Клиент.Номер, Клиент.Имя

ORDER BY Count(Ремонт.Номер) DESC;

RepComp

Компонент ADOQuery вкладки dbGo, обеспечивающий реализацию запроса к БД Access, для формирования отчета о израсходованных комплектующих материалов за период времени:

SELECT Комплектующие.Номер, Тип.Имя, Комплектующие.Имя, Sum(РасходМатериалов.Количество) AS [Sum-Количество]

FROM Тип INNER JOIN (Комплектующие INNER JOIN (Ремонт INNER JOIN РасходМатериалов ON Ремонт.Номер = РасходМатериалов.Ремонт) ON Комплектующие.Номер = РасходМатериалов.Материал) ON Тип.Номер = Комплектующие.Тип

WHERE (((Ремонт.ДатаВыполнения) Between D1 And D2))

GROUP BY Комплектующие.Номер, Тип.Имя, Комплектующие.Имя;

Посредниками между наборами данных и компонентами отображения данных (таблицы, поля и т.д.) являются компоненты DataSource вкладки Data Access.

3.5.3 Иерархия программных модулей и структурная схема пакета

Иерархия программных модулей отображена в окне Project Manager среды разработки системы учета средств измерений и комплектующих материалов при выполнении ремонтов и технического обслуживания средств измерений (ТОиР) ТПУ "ЗапСибНефтеавтоматика" (см. рис. 3.21).

Рисунок 3.21 - Иерархия программных модулей

Структурная схема, разработанных программных модулей отражает иерархию вызова программных модулей в системе (см рис. 3.22).

Рисунок 3.22 - Структурная схема программных модулей системы

3.5.4 Иерархия функций управления и обработки данных

Дерево функций главного меню разработанной информационной системы учета средств измерений и комплектующих материалов при выполнении ремонтов и технического обслуживания средств измерений (ТОиР) ТПУ "ЗапСибНефтеавтоматика", отражает иерархию функций управления и обработки данных (см. рис. 3.23).

Рисунок 3.23 - Дерево функций главного меню системы

3.6 Результаты работы системы

3.6.2 Общие сведения о системе

Разработанная информационная система предназначена для автоматизации учета средств измерений и комплектующих материалов при выполнении ремонтов и технического обслуживания средств измерений (ТОиР) ТПУ "ЗапСибНефтеавтоматика". Система разработана на платформе MS Access 2007 с помощью средств визуального программирования Delphi 10.

3.6.3 Минимальные технические требования к системе

Минимальные технические характеристики рабочих станций ТПУ, использование которых необходимо для функционирования разрабатываемой системы для учета средств измерений и комплектующих:

- Процессор: Intel Pentium 4 2.4 ГГц;

- Память: DDR2 1024 МБ;

- Накопители: 40 Гб;

- Видеокарта: 1024 МБ;

- Монитор: SVGA с диагональю 17”;

- Принтер: лазерный принтер формата A4.

3.6.4 Установка и запуск системы

Для обеспечения работы системы необходимо скопировать папку с программой на локальный диск персонального компьютера ТПУ, на котором будет использоваться система. Для запуска приложения необходимо открыть файл ZSNA.exe, корневой папки программы.

3.6.5 Интерфейс справочников системы

Для автоматизации ввода в систему первичных данных разработаны формы следующих справочников:

- справочник "Группы КИПиА" - служит для автоматизации ввода первичных данных при регистрации групп контрольно-измерительных приборов и агрегатов, используемых при метрологическом обеспечении производства (см. рис. 3.24).

Рисунок 3.24 - Справочник "Группы КИПиА"

Функции формы справочника "Группы КИПиА":

1. Для добавления новой информации, необходимо нажать на кнопку "Insert" панели управления данной формы;

2. После заполнения полей справочника, необходимо сохранить данные, нажав на кнопку "Save" панели управления данной формы;

3. Для удаления информации служит кнопа "Delete" панели управления данной формы;

4. Для поиска информации форма снабжена системой сортировки по полю таблицы. Сортировка осуществляется с помощью щелчка по необходимому полю таблицы.

- справочник "Виды КИПиА" - служит для автоматизации ввода первичных данных при регистрации видов контрольно-измерительных приборов и агрегатов, используемых при метрологическом обеспечении производства (см. рис. 3.25).

Рисунок 3.25 - Справочник "Виды КИПиА"

Функции формы справочника "Виды КИПиА" выполняются аналогично с помощью кнопок панели управления справочника.

- справочник "Единицы измерений" - служит для автоматизации ввода первичных данных при регистрации единиц измерений КИПиА (см. рис. 3.26).

Рисунок 3.26 - Справочник "Единицы измерений"

Функции формы справочника "Единицы измерений" выполняются аналогично с помощью кнопок панели управления справочника.

- справочник "КИПиА" - служит для автоматизации ввода первичных данных при регистрации КИПиА, используемых при метрологическом обеспечении производства (см. рис. 3.27).

Рисунок 3.27 - Справочник "КИПиА"

Функции формы справочника "КИПиА" выполняются аналогично с помощью кнопок панели управления справочника.

- справочник "Типы материалов" - служит для автоматизации ввода первичных данных при регистрации типов комплектующих материалов, используемых во время ремонтов КИПиА (см. рис. 3.28).

Рисунок 3.28 - Справочник "Типы материалов"

Функции формы справочника "Типы материалов" выполняются аналогично с помощью кнопок панели управления справочника.

- справочник "Комплектующие материалы" - служит для автоматизации ввода первичных данных при регистрации комплектующих материалов, используемых во время ремонтов КИПиА (см. рис. 3.30).

Рисунок 3.30 - Справочник "Комплектующие материалы"

Функции формы справочника «Комплектующие материалы» выполняются аналогично с помощью кнопок панели управления справочника.

- справочник "Производители КИПиА" - служит для автоматизации ввода первичных данных при регистрации производителей КИПиА и комплектующих материалов. (см. рис. 3.31).

Рисунок 3.31 - Справочник "Производители КИПиА"

Функции формы справочника "Производители КИПиА" выполняются аналогично с помощью кнопок панели управления справочника.

- справочник "Инженеры КИПиА" - служит для автоматизации ввода первичных данных при регистрации инженеров КИПиА ТПУ "ЗСНА" (см. рис. 3.32).

Рисунок 3.32 - Справочник "Инженеры КИПиА"

Функции формы справочника "Инженеры КИПиА" выполняются аналогично с помощью кнопок панели управления справочника.

- справочник "Клиенты ТПУ ЗСНА" - служит для автоматизации ввода первичных данных при регистрации клиентов ТПУ "ЗСНА", которым оказываются услуги по метрологическому обеспечению производства (см. рис. 3.33).

Рисунок 3.33 - Справочник "Клиенты ТПУ ЗСНА"

Функции формы справочника "Клиенты ТПУ ЗСНА" выполняются аналогично с помощью кнопок панели управления справочника.

- справочник "Места установок КИПиА" - служит для автоматизации ввода первичных данных при регистрации мест установок КИПиА, используемых при метрологическом обеспечении производства (см. рис. 3.34).

Функции формы справочника "Места установок КИПиА" выполняются аналогично с помощью кнопок панели управления справочника.

Рисунок 3.34 - Справочник "Места установок КИПиА"

3.6.6 Выполнение программного средства

После запуска системы учета КИПиА, открывается главная форма разработанной информационной системы. Закладка "Поставки" служит для регистрации поставок КИПиА и комплектующих материалов от производителей (см. рис. 3.35).

Рисунок 3.35 - Закладка "Поставки"

В верхней левой части данной формы программного средства отображается список поставок КИПиА и комплектующих материалов. Для регистрации новой поставки необходимо:

- Нажать на кнопку "Insert" навигатора списка поставок КИПиА;

- Выбрать поставщика из выпадающего списка поля "Поставщик";

- Нажать на кнопку «Save» навигатора списка поставок КИПиА.

Для поиска поставки по номеру, необходимо ввести необходимый номер поставки в поле поиска. Для сброса параметров поиска необходимо нажать на кнопку "Refresh" навигатора списка поставок КИПиА.

В верхней правой части данной формы программного средства отображается список КИПиА, поставляемых производителем на основании выбранной поставки. Для регистрации КИПиА, поставляемых на основании поставки, необходимо:

- Выбрать поставку в списке поставок КИПиА;

- Нажать на кнопку "Insert" навигатора списка КИПиА поставки;

- Выбрать КИПиА из выпадающего списка поля "Имя";

- Нажать на кнопку "Save" навигатора списка КИПиА поставки.

При добавлении КИПиА, поставляемых на основании поставки, автоматически рассчитывается сумма поставки КИПиА.

В нижней части данной формы программного средства отображается список комплектующих материалов КИПиА, поставляемых производителем на основании выбранной поставки. Для регистрации комплектующих материалов КИПиА, поставляемых на основании поставки, необходимо:

- Выбрать поставку в списке поставок КИПиА;

- Нажать на кнопку "Insert" навигатора списка комплектующих материалов КИПиА поставки;

- Выбрать комплектующий материал КИПиА из выпадающего списка поля "КИПиА";

- Нажать на кнопку "Save" навигатора списка комплектующих материалов КИПиА поставки;

При добавлении комплектующих материалов КИПиА, поставляемых на основании поставки, автоматически рассчитывается сумма поставки комплектующих материалов КИПиА.

Закладка "Установка" служит для регистрации установок и заявок на ремонт КИПиА на местах установок клиентов, находящихся на метрологическом обеспечении у ТПУ "ЗСНА" (см. рис. 3.36).

Рисунок 3.36 - Закладка "Установка"

В верхней левой части данной формы программного средства отображается список мест установок клиентов, находящихся на метрологическом обеспечении у ТПУ "ЗСНА". В нижней части данной формы отображается список КИПиА, находящихся на складе ТПУ "ЗСНА". Для регистрации новой установки КИПиА на местах установок клиентов необходимо:

- Выбрать место установки КИПиА клиентов в списке мест установок (верхняя левая таблица);

- Выбрать КИПиА в списке КИПиА, находящихся на складе (нижняя таблица);

- Нажать на кнопку главного меню программы "Инструмент" > "Установка".

Для поиска КИПиА в списке КИПиА, находящихся на складе, необходимо ввести необходимый номер КИПиА в поле поиска. Для сброса параметров поиска необходимо нажать на кнопку "Refresh" навигатора списка КИПиА, находящихся на складе. Аналогичным образом выполняется поиск мест установок КИПиА в списке мест установок клиентов.

После регистрации установки КИПиА на местах установок клиентов, можно распечатать "Технический паспорт КИПиА" с помощью кнопки "Документы" > "Паспорт КИПиА" (см. рис. 3.37).

Рисунок 3.37 - Закладка "Технический паспорт КИПиА"

Для регистрации новой заявки на ремонт КИПиА на местах установок клиентов необходимо:

- Выбрать место установки КИПиА клиентов в списке мест установок (верхняя левая таблица);

- Выбрать КИПиА в списке КИПиА, установленных на выбранном месте установки (верхняя правая таблица);

- Нажать на кнопку главного меню программы "Инструмент" > "Заявка".

Все зарегистрированные ремонты КИПиА отображаются на закладке «Ремонты» главной формы приложения. Данная закладка служит также для регистрации выполнения ремонтов КИПиА и формирования ремонтной ведомости (см. рис. 3.38).

Рисунок 3.38 - Закладка "Ремонты"

автоматизация информационные системы программирование

В верхней части данной формы программного средства отображается список всех заявок на ремонт КИПиА, поступивших в ТПУ "ЗСНА". Для удобства, все невыполненные заявки на ремонт КИПиА, выделяются синим цветом. Для регистрации факта проведения ремонта необходимо:

- Выбрать заявку на ремонт КИПиА в списке заявок (верхняя таблица);

- Выбрать инженера КИПиА, выполнившего ремонт, из выпадающего списка поля "Инженер";

- Ввести показания счетчика КИПиА во время аварийной поломки в поле "Счетчик";

- Нажать на кнопку главного меню программы "Инструмент" > "Ремонт".

В нижней части данной формы отображается список комплектующих материалов КИПиА, израсходованных во время ремонта. Для регистрации комплектующих материалов КИПиА, израсходованных во время ремонта необходимо:

- Выбрать заявку на ремонт КИПиА в списке заявок (верхняя таблица);

- Нажать на кнопку "Insert" навигатора списка израсходованных комплектующих материалов КИПиА;

- Выбрать комплектующий материал КИПиА из выпадающего списка поля "Имя";

- Ввести количество израсходованных комплектующих материалов КИПиА в поле "Кол-во";

- Нажать на кнопку "Save" навигатора списка израсходованных комплектующих материалов КИПиА;

При добавлении израсходованных комплектующих материалов КИПиА, во время проведения ремонта, автоматически рассчитывается сумма израсходованных комплектующих материалов КИПиА.

После проведения ремонта КИПиА на местах установок клиентов, можно распечатать "Ремонтную ведомость" с помощью кнопки "Документы" > "Ремонтная ведомость" (см. рис. 3.39).

Рисунок 3.39 - Ремонтная ведомость

Закладка "График" служит для отображения и регистрации графика проверок и калибровок КИПиА, установленных на местах установок клиентов, находящихся на метрологическом обеспечении у ТПУ "ЗСНА" (см. рис. 3.40).

Рисунок 3.40 - Закладка "График"

Дата проверки и калибровки КИПиА рассчитывается автоматически на основании даты последней проверки и срока проверки КИПиА. Для удобства, КИПиА, дата проверки и калибровки которых меньше текущей, выделяются синим цветом.

Закладка "Отчеты" служит для формирования результатной отчетности по работе ТПУ "ЗСНА". Закладка "Расход комплектующих" служит для формирования отчета о израсходованных комплектующих материалах за отчетный период (см. рис. 3.41).

Рисунок 3.41 - Закладка "Расход комплектующих"

В верхней части данной формы программы отображается список всех израсходованных комплектующих материалов за отчетный период. В нижней части - отображается список всех проведенных ремонтов КИПиА за отчетный период. Для формирования отчета необходимо:

- Выбрать из выпадающего календаря дату начала отчетного периода;

- Выбрать из выпадающего календаря дату конца отчетного периода;

- Нажать на кнопку главного меню программы "Инструмент" > "Отчет".

Закладка "Уровень сервиса" служит для формирования отчета о проведенных ремонтах КИПиА, по каждому клиенту ТПУ "ЗСНА" (см. рис. 3.42).

Рисунок 3.42 - Закладка "Уровень сервиса"

Для удобства анализа результатов отчетности данная закладка снабжена диаграммой по клиентам ТПУ "ЗСНА". Формирование данного отчета происходит аналогичным образом.

Закладка "Работа инженеров" служит для формирования отчета о результатах работы инженеров КИПиА ТПУ "ЗСНА" (см. рис. 3.43).

Рисунок 3.43 - Закладка "Работа инженеров"

Для удобства анализа результатов отчетности данная закладка снабжена диаграммой по инженерам ТПУ "ЗСНА". Формирование данного отчета происходит аналогичным образом.

Закладка "Инвентаризация" служит для формирования инвентаризационной ведомости по комплектующим материалом КИПиА при проведении инвентаризации склада ТПУ "ЗСНА" (см. рис. 3.44).

Рисунок 3.44 - Закладка "Инвентаризация"

Для проведения инвентаризации комплектующих материалов КИПиА на складе ТПУ "ЗСНА", можно распечатать "Инвентаризационную ведомость" с помощью кнопки "Документы" > "Инвентаризация" (см. рис. 3.45).

Рисунок 3.45 - Инвентаризационную ведомость

Для завершения работы с программой необходимо закрыть приложения, либо нажать на кнопку "Файл" > "ВЫХОД".

ЗАКЛЮЧЕНИЕ

В рамках данного дипломного проекта была разработана EAM-система для учета средств измерений и комплектующих материалов при выполнении ремонтов и технического обслуживания средств измерений (ТОиР). Информационная система автоматизирует весь спектр задач связанных с приёмом заявок клиентов на монтаж и ремонт КИПиА. К тому же, разработанная система реализует автоматическое формирование сопроводительной документации и выходной отчетности и позволяет решать следующие задачи:

- регистрация и учет поступлений средств измерений и комплектующих на склад с производства;

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

- контроль выполнения заявок заказчиков об аварийных поломках средств измерений;

- регистрация и учет установленных средств измерений;

- ведение технического паспорта оборудования;

- формирование графика проверок и калибровок средств измерений;

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

- регистрация и учет ремонтов установленных средств измерений;

- формирование ремонтной ведомости;

- учет комплектующих материалов;

- формирование инвентаризационной ведомости;

- оперативный поиск информации об установленных средствах измерений;

- формирование отчета о расходах комплектующих КИПиА в Excel;

- формирование об уровне сервиса метрологического обеспечения производства в Excel;

- формирование отчета об аварийных поломках в Excel;

- формирование отчета о результатах работы инженеров в Excel.

При проектировании базы данных использовалось такое мощное CASE-средство как ERwin 4.0, поскольку от того, насколько хорошо спроектирована база данных, зависит удобство ее дальнейшего использования и администрирования. Также использовалась система управления реляционными базами данных Microsoft Access, которая предоставляет пользователям функциональные возможности, позволяющие осуществлять доступ к важным данным, и производить их глубокий анализ, а также является серьезной средой разработки приложений. Для реализации пользовательского интерфейса была проведена разработка Windows-приложения с учетом принципов создания дружественных интерфейсов и программная реализация проекта с помощью визуальной среды проектирования Borland Delphi 10, на объектно-ориентированном языке программирования Object Pascal. Для доступа к данным хранящимся в таблицах MS Access используется наиболее передовая технология доступа к данным - технология Microsoft ADO. В результате анализа показателей экономической эффективности были сделаны выводы о целесообразности разработки данной системы учета средств измерений и комплектующих материалов при выполнении ремонтов и технического обслуживания средств измерений (ТОиР) ТПУ "ЗапСибНефтеавтоматика".

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

1. История и перспективы ООО "Системный интегратор" [Электронный ресурс]. - Электрон. текстовые данные. - Режим доступа: http://syst-int.com/company/history.php

2. Краткая характеристика ТПУ "ЗапСибНефтеавтоматика" [Электронный ресурс]. - Электрон. текстовые данные. - Режим доступа: http://syst-int.com/company/structure/306/#!general

3. Профессиональное решение для управления ремонтами и техническим обслуживанием оборудования "Global-EAM" [Электронный ресурс]. - Электрон. текстовые данные. - Режим доступа: http://global-eam.ru/index.php?id=445

4. Корпорация Галактика. Информационные системы управления. ИС "Галактика EAM" [Электронный ресурс]. - Электрон. текстовые данные. - Режим доступа: http://www.galaktika.ru/eam/

5. Компания "АйТиЭм". Информационные системы для технического менеджмента предприятия. ИС «TRIM - Planned Maintenance System» [Электронный ресурс]. - Электрон. текстовые данные. - Режим доступа: http://www.itm.spb.ru/system-toir/

6. Маклаков С.В. BPwin и ERwin. CASE-средства разработки информационных систем. -- М.: Диалог-МИФИ, 2000. -- 256 с.

7. ГОСТ 34.601-90 Информационные технологии. Комплекс стандартов на автоматизированные системы. Автоматизированные системы. Стадии создания.

8. Ручкин В.С. Семенов И.О. Черемных С.В., Моделирование и анализ систем: IDEF-технологии: Практикум. 2005, Финансы и статистика, 192.

9. Харитонова И.А., Михеева В.Д., Microsoft Access 2003 - СПб.: BHV, 2006. - 1072с.

10. Фаронов В. В. Программирование баз данных в Delphi 7. Учебный курс. - СПб.: Питер, 2006. - 459 с.: ил.

11. ГОСТ 34.321- 96 Информационная технология. Система стандартов по базам данных. Эталонная модель.

12. Флёнов М. Е. Delphi в шутку и в серьез: что умеют хакеры (+CD). - СПб.: Питер, 2006. - 271 с.: ил.

13. Липаев В.В. Документирование сложных программных средств. - М.: Синтег, 2005.-329 с.

14. Программирование в Delphi 5: 2-е изд., переработанное и дополненное / А.Я. Архангельский. - М.: ЗАО "Издательство БИНОМ", 2000.-1072с.: ил.

15. Дунаев В. В. Базы данных. Язык SQL. - СПб: БХВ-Петербург, 2006.

16. Галисеев Г.В. Программирование в среде Delphi 7: самоучитель Ї М.: "Диалектика", 2003.

17. Черкасов Ю.М. Информационные технологии управления: Учебно-практическое пособие /. - М.:ГУУ, 2000.

18. Б. Я. Советов, Моделирование систем : учеб. для вузов, 5-е изд., стер., М : Высш. шк., 2007.

19. Романеи Ю.В., Тимофеев П.А., Шаньган В.Ф. Зашита информации в компьютер-ных системах и сетях / Под ред. Шаньгана В.Ф. -- 2-е изд., перераб. и доп. - М.: Радио и связь, 2001.

20. И.Л. Бройдо, Вычислительные системы, сети и телекоммуникации, учебник для вузов, изд. Питер, 2002.

ПРИЛОЖЕНИЕ А

(Программный код)

Листинг А.1 Ї МОДУЛЬ ГЛАВНОЙ ФОРМЫ

unit Main;

var

FMain: TFMain;

implementation

uses DeskBook, ADO;

{$R *.dfm}

procedure TFMain.N10Click(Sender: TObject);

begin

OpenDeskBook(N10.Caption, DataM.DKind, DataM.Kind);

end;

procedure TFMain.N11Click(Sender: TObject);

begin

OpenDeskBook(N11.Caption, DataM.DComp, DataM.Comp);

end;

procedure TFMain.N12Click(Sender: TObject);

begin

OpenDeskBook(N12.Caption, DataM.DFabric, DataM.Fabric);

end;

procedure TFMain.N13Click(Sender: TObject);

begin

OpenDeskBook(N13.Caption, DataM.DEngin, DataM.Engin);

end;

procedure TFMain.N14Click(Sender: TObject);

begin

OpenDeskBook(N14.Caption, DataM.DKlient, DataM.Klient);

end;

procedure TFMain.N15Click(Sender: TObject);

begin

OpenDeskBook(N15.Caption, DataM.DPlase, DataM.Plase);

end;

procedure TFMain.N16Click(Sender: TObject);

begin

DataM.AddMeans.Close;

DataM.AddMeans.Filter := 'Номер = ' + IntToStr(DataM.StockMeansНомер.Value);

DataM.AddMeans.Filtered:=True;

DataM.AddMeans.Open;

DataM.AddMeans.Edit;

DataM.AddMeansМестоУстановки.Value := DataM.PlaseНомер.Value;

DataM.AddMeansДатаУстановки.Value := Date();

DataM.AddMeansДатаПроверки.Value := Date();

DataM.AddMeans.Post;

DataM.StockMeans.Close;

DataM.StockMeans.Open;

DataM.KlientMeans.Close;

DataM.KlientMeans.Open;

DataM.SumKlienMeans.Close;

DataM.SumKlienMeans.Open;

end;

procedure TFMain.N17Click(Sender: TObject);

begin

DataM.AddMeans.Close;

DataM.AddMeans.Filter := 'Номер = ' + IntToStr(DataM.SkedНомер.Value);

DataM.AddMeans.Filtered:=True;

DataM.AddMeans.Open;

DataM.AddMeans.Edit;

DataM.AddMeansДатаПроверки.Value := Date();

DataM.AddMeans.Post;

DataM.Sked.Close;

DataM.Sked.Open;

end;

procedure TFMain.N18Click(Sender: TObject);

begin

DataM.Refit.Insert;

DataM.RefitПрибор.Value := DataM.KlientMeansСредствоИзмеренийНомер.Value;

DataM.RefitДата.Value := Date();

DataM.Refit.Post;

end;

procedure TFMain.N19Click(Sender: TObject);

begin

DataM.Refit.Edit;

DataM.RefitДатаВыполнения.Value := Date();

DataM.Refit.Post;

end;

procedure TFMain.N20Click(Sender: TObject);

begin

FMain.Close;

end;

procedure TFMain.N21Click(Sender: TObject);

var

Excel: Variant;

Name: OleVariant;

CellDoc: string;

n: integer;

begin

Excel := CreateOleObject('Excel.Application');

CellDoc := ExtractFilePath(Application.ExeName);

Name := CellDoc + '\Бланк\Паспорт.xls';

DataM.PasRefit.Close;

DataM.PasRefit.Filter := 'Прибор = ' +

IntToStr(DataM.KlientMeansСредствоИзмеренийНомер.Value);

DataM.PasRefit.Filtered := True;

DataM.PasRefit.Open;

Try

Excel.Workbooks.Open[Name];

Excel.Visible := True;

Name := CellDoc + 'Архив\Паспорт № '+IntToStr(DataM.KlientMeansСредствоИзмеренийНомер.Value)+'.xls';

Excel.Range['b4'] := DataM.KlientMeansВидИмя.Value;

Excel.Range['b6'] := DataM.KlientMeansПриборИмя.Value;

Excel.Range['b8'] := Format('%.1f', [DataM.KlientMeansКласс.Value]);

Excel.Range['f8'] := IntToStr(DataM.KlientMeansДиапазонОТ.Value) + ' - ' +

IntToStr(DataM.KlientMeansДиапазонДО.Value) + ' ' + DataM.KlientMeansИзмеренияИмя.Value ;

Excel.Range['b10'] := IntToStr(DataM.KlientMeansПроверка.Value);

Excel.Range['f10'] := Format('%m', [DataM.KlientMeansЦена.Value]);

Excel.Range['b12'] := DataM.KlientMeansПроизводительИмя.Value;

Excel.Range['f12'] := DataM.KlientMeansЗаводНомер.Value;

Excel.Range['b14'] := DataM.KlientMeansКлиентИмя.Value + ' (' + DataM.KlientMeansМестаУстановкиИмя.Value + ')'; Excel.Range['b16']:=DateToStr(DataM.KlientMeansДатаУстановки.Value); Excel.Range['f16']:=DateToStr(DataM.KlientMeansДатаПроверки.Value);

n := 19;

With DataM.PasRefit do

begin

DataM.PasRefit.First;

while not EOF do

begin

CellDoc := 'b' + IntToStr(n);

Excel.Range[CellDoc] := IntToStr(DataM.PasRefitНомер.Value);

Excel.Range[CellDoc].Select;

Excel.Selection.Borders.LineStyle:=1;

CellDoc := 'c' + IntToStr(n);

Excel.Range[CellDoc] := DateToStr(DataM.PasRefitДата.Value);

Excel.Range[CellDoc].Select;

Excel.Selection.Borders.LineStyle:=1;

CellDoc := 'd' + IntToStr(n);

Excel.Range[CellDoc] := DataM.PasRefitИнженер2.Value;

Excel.Range[CellDoc].Select;

Excel.Selection.Borders.LineStyle:=1;

CellDoc := 'e' + IntToStr(n);

Excel.Range[CellDoc] := IntToStr(DataM.PasRefitСчетчик.Value);

Excel.Range[CellDoc].Select;

Excel.Selection.Borders.LineStyle:=1;

CellDoc := 'f' + IntToStr(n);

Excel.Range[CellDoc] := DateToStr(DataM.PasRefitДатаВыполнения.Value);

Excel.Range[CellDoc].Select;

Excel.Selection.Borders.LineStyle:=1;

inc(n);

DataM.PasRefit.Next;

end;

end;

Excel.ActiveWorkbook.SaveAs[Name];

Except

begin

ShowMessage('Бланк документа "Паспорт КИПиА" не найден!');

Excel.ActiveWorkbook.Close;

Excel.Application.Quit;

Application.Restore;

exit;

end;

end;

end;

procedure TFMain.N22Click(Sender: TObject);

var

Excel: Variant;

Name: OleVariant;

CellDoc: string;

n: integer;

begin

Excel := CreateOleObject('Excel.Application');

CellDoc := ExtractFilePath(Application.ExeName);

Name := CellDoc + '\Бланк\Инвентаризация.xls';

Try

Excel.Workbooks.Open[Name];

Excel.Visible := True;

Name := CellDoc + 'Архив\Инвентаризация.xls';

Excel.Range['g4'] := DateToStr(Date());

n := 7;

With DataM.Invent do

begin

DataM.Invent.First;

while not EOF do

begin

CellDoc := 'b' + IntToStr(n);

Excel.Range[CellDoc] := IntToStr(DataM.InventНомер.Value);

Excel.Range[CellDoc].Select;

Excel.Selection.Borders.LineStyle:=1;

CellDoc := 'c' + IntToStr(n);

Excel.Range[CellDoc] := DataM.InventТип2.Value;

Excel.Range[CellDoc].Select;

Excel.Selection.Borders.LineStyle:=1;

CellDoc := 'd' + IntToStr(n);

Excel.Range[CellDoc] := DataM.InventИмя.Value;

Excel.Range[CellDoc].Select;

Excel.Selection.Borders.LineStyle:=1;

CellDoc := 'e' + IntToStr(n);

Excel.Range[CellDoc] := IntToStr(DataM.InventПриход.Value);

Excel.Range[CellDoc].Select;

Excel.Selection.Borders.LineStyle:=1;

CellDoc := 'f' + IntToStr(n);

Excel.Range[CellDoc] := IntToStr(DataM.InventРасход.Value);

Excel.Range[CellDoc].Select;

Excel.Selection.Borders.LineStyle:=1;

CellDoc := 'g' + IntToStr(n);

Excel.Range[CellDoc] := IntToStr(DataM.InventОстаток.Value);

Excel.Range[CellDoc].Select;

Excel.Selection.Borders.LineStyle:=1;

inc(n);

DataM.Invent.Next;

end;

end;

Excel.ActiveWorkbook.SaveAs[Name];

Except

begin

ShowMessage('Бланк документа "Инвентаризация" не найден!');

Excel.ActiveWorkbook.Close;

Excel.Application.Quit;

Application.Restore;

exit;

end;

end;

end;

procedure TFMain.N23Click(Sender: TObject);

var

Excel: Variant;

Name: OleVariant;

CellDoc: string;

n: integer;

begin

Excel := CreateOleObject('Excel.Application');

CellDoc := ExtractFilePath(Application.ExeName);

Name := CellDoc + '\Бланк\Ремонт.xls';

Try

Excel.Workbooks.Open[Name];

Excel.Visible := True;

Name := CellDoc + 'Архив\Ремонт № '+IntToStr(DataM.RefitНомер.Value)+'.xls';

Excel.Range['c4'] := DataM.RefitВид.Value;

Excel.Range['c6'] := DataM.RefitПрибор2.Value;

Excel.Range['c8'] := DataM.RefitИнженер2.Value;

Excel.Range['g8'] := IntToStr(DataM.RefitСчетчик.Value);

Excel.Range['c10'] := DataM.RefitКомпания.Value + ' (' +

DataM.RefitМесто.Value + ')';

Excel.Range['c12']:=DateToStr(DataM.RefitДата.Value);

Excel.Range['g12']:=DateToStr(DataM.RefitДатаВыполнения.Value);

n := 15;

With DataM.RefComp do

begin

DataM.RefComp.First;

while not EOF do

begin

CellDoc := 'b' + IntToStr(n);

Excel.Range[CellDoc] := IntToStr(DataM.RefCompМатериал.Value);

Excel.Range[CellDoc].Select;

Excel.Selection.Borders.LineStyle:=1;

CellDoc := 'c' + IntToStr(n);

Excel.Range[CellDoc] := DataM.RefCompМатериал2.Value;

Excel.Range[CellDoc].Select;

Excel.Selection.Borders.LineStyle:=1;

CellDoc := 'd' + IntToStr(n);

Excel.Range[CellDoc] := DataM.RefCompМатериалИмя.Value;

Excel.Range[CellDoc].Select;

Excel.Selection.Borders.LineStyle:=1;

CellDoc := 'e' + IntToStr(n);

Excel.Range[CellDoc] := IntToStr(DataM.RefCompКоличество.Value);

Excel.Range[CellDoc].Select;

Excel.Selection.Borders.LineStyle:=1;

CellDoc := 'f' + IntToStr(n);

Excel.Range[CellDoc] := Format('%m', [DataM.RefCompЦена.Value]);

Excel.Range[CellDoc].Select;

Excel.Selection.Borders.LineStyle:=1;

CellDoc := 'g' + IntToStr(n);

Excel.Range[CellDoc] := Format('%m', [DataM.RefCompСумма.Value]);

Excel.Range[CellDoc].Select;

Excel.Selection.Borders.LineStyle:=1;

inc(n);

DataM.RefComp.Next;

end;

end;

CellDoc := 'f' + IntToStr(n );

Excel.Range[CellDoc] := 'СУММА: ';

CellDoc := 'g' + IntToStr(n);

Excel.Range[CellDoc] := Format('%m',[DataM.SumRefCompСумма.Value]);

Excel.Range[CellDoc].Select;

Excel.Selection.Borders.LineStyle := 8;

Excel.ActiveWorkbook.SaveAs[Name];

Except

begin

ShowMessage('Бланк документа "Ремонтная ведомость" не найден!');

Excel.ActiveWorkbook.Close;

Excel.Application.Quit;

Application.Restore;

exit;

end;

end;

end;

procedure TFMain.N5Click(Sender: TObject);

begin

DataM.RepRefit.Close;

DataM.RepRefit.Parameters.ParamValues['D1'] := DateToStr(DateTimePicker1.Date);

DataM.RepRefit.Parameters.ParamValues['D2'] := DateToStr(DateTimePicker2.Date);

DataM.RepRefit.Open;

DataM.RepEngin.Close;

DataM.RepEngin.Parameters.ParamValues['D1'] := DateToStr(DateTimePicker1.Date);

DataM.RepEngin.Parameters.ParamValues['D2'] := DateToStr(DateTimePicker2.Date);

DataM.RepEngin.Open;

DataM.RepService.Close;

DataM.RepService.Parameters.ParamValues['D1'] := DateToStr(DateTimePicker1.Date);

DataM.RepService.Parameters.ParamValues['D2'] := DateToStr(DateTimePicker2.Date);

DataM.RepService.Open;

DataM.RepComp.Close;

DataM.RepComp.Parameters.ParamValues['D1'] := DateToStr(DateTimePicker1.Date);

DataM.RepComp.Parameters.ParamValues['D2'] := DateToStr(DateTimePicker2.Date);

DataM.RepComp.Open;

end;

procedure TFMain.N6Click(Sender: TObject);

begin

OpenDeskBook(N6.Caption, DataM.DGroup, DataM.Group);

end;

procedure TFMain.N7Click(Sender: TObject);

begin

OpenDeskBook(N7.Caption, DataM.DView, DataM.View);

end;

procedure TFMain.N8Click(Sender: TObject);

begin

OpenDeskBook(N8.Caption, DataM.DMeasur, DataM.Measur);

end;

procedure TFMain.N9Click(Sender: TObject);

begin

OpenDeskBook(N9.Caption, DataM.DDevice, DataM.Device);

end;

procedure TFMain.OpenDeskBook(Name: string; Data: TDataSource; Tab: TADOTable);

var

DeskBook: TFDeskBook;

w, i: integer;

begin

DeskBook := TFDeskBook.Create(Application);

DeskBook.Caption := 'Справочник "' + Name + '"';

DeskBook.DBGrid1.DataSource := Data;

DeskBook.DBNavigator1.DataSource := Data;

DeskBook.Tab := Tab;

w := 0;

for i := 0 to DeskBook.DBGrid1.Columns.Count - 1 do

w := w + DeskBook.DBGrid1.Columns.Items[i].Width;

DeskBook.Width := w + 100;

DeskBook.ShowModal;

end;

procedure TFMain.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;

DataCol: Integer; Column: TColumn; State: TGridDrawState);

begin

if (DataM.SkedГрафик.Value <= Date()) and

not (gdSelected in State) then

with DBGrid1.Canvas do

begin

FillRect(Rect);

Brush.Color := clSkyBlue;

TextOut(Rect.Left+2, Rect.Top+2, Column.Field.Text);

end;

end;

procedure TFMain.DBGrid8DrawColumnCell(Sender: TObject; const Rect: TRect;

DataCol: Integer; Column: TColumn; State: TGridDrawState);

begin

if (DataM.Refit.FieldByName('ДатаВыполнения').AsString = '') and

not (gdSelected in State) then

with DBGrid8.Canvas do

begin

FillRect(Rect);

Brush.Color := clSkyBlue;

TextOut(Rect.Left+2, Rect.Top+2, Column.Field.Text);

end;

end;

procedure TFMain.Edit1Change(Sender: TObject);

begin

if Edit1.Text <> '' then

begin

DataM.Plase.Filter := 'Номер = ' + Edit1.Text;

DataM.Plase.Filtered:=True;

end

else

DataM.Plase.Filtered:=False;

end;

procedure TFMain.Edit2Change(Sender: TObject);

begin

if Edit2.Text <> '' then

begin

DataM.StockMeans.Filter := 'Номер = ' + Edit2.Text;

DataM.StockMeans.Filtered:=True;

end

else

DataM.StockMeans.Filtered:=False;

end;

procedure TFMain.Edit3Change(Sender: TObject);

begin

if Edit3.Text <> '' then

begin

DataM.Supply.Filter := 'Номер = ' + Edit3.Text;

DataM.Supply.Filtered:=True;

end

else

DataM.Supply.Filtered:=False;

end;

procedure TFMain.Edit4Change(Sender: TObject);

begin

if Edit4.Text <> '' then

begin

DataM.Sked.Filter := 'Номер = ' + Edit4.Text;

DataM.Sked.Filtered:=True;

end

else

DataM.Sked.Filtered:=False;

end;

procedure TFMain.Edit5Change(Sender: TObject);

begin

if Edit5.Text <> '' then

begin

DataM.Refit.Filter := 'Номер = ' + Edit5.Text;

DataM.Refit.Filtered := True;

end

else

DataM.Refit.Filtered := False;

end;

procedure TFMain.Edit6Change(Sender: TObject);

begin

DataM.Invent.Close;

if Edit6.Text <> '' then

begin

DataM.Invent.Filter := 'Номер = ' + Edit6.Text;

DataM.Invent.Filtered := True;

end

else

DataM.Invent.Filtered := False;

DataM.Invent.Open;

end;

end.

Листинг А.2 Ї МОДУЛЬ ДАННЫХ

unit ADO;

var

DataM: TDataM;

implementation

uses Main;

{$R *.dfm}

procedure TDataM.DPlaseDataChange(Sender: TObject; Field: TField);

begin

KlientMeans.Close;

KlientMeans.Filter := 'МестаУстановки.Номер = ' + IntToStr(PlaseНомер.Value);

KlientMeans.Filtered := True;

KlientMeans.Open;

SumKlienMeans.Close;

SumKlienMeans.Filter := 'Номер = ' + IntToStr(PlaseНомер.Value);

SumKlienMeans.Filtered := True;

SumKlienMeans.Open;

end;

procedure TDataM.DRefitDataChange(Sender: TObject; Field: TField);

begin

RefComp.Close;

RefComp.Filter := 'Ремонт = ' + IntToStr(RefitНомер.Value);

RefComp.Filtered := True;

RefComp.Open;

SumRefComp.Close;

SumRefComp.Filter := 'Номер = ' + IntToStr(RefitНомер.Value);

SumRefComp.Filtered := True;

SumRefComp.Open;

end;

procedure TDataM.DSupplyDataChange(Sender: TObject; Field: TField);

begin

Means.Close;

Means.Filter := 'Поставка = ' + IntToStr(SupplyНомер.Value);

Means.Filtered := True;

Means.Open;

SupComp.Close;

SupComp.Filter := 'Поставка = ' + IntToStr(SupplyНомер.Value);

SupComp.Filtered := True;

SupComp.Open;

SumMeans.Close;

SumMeans.Filter := 'Номер = ' + IntToStr(SupplyНомер.Value);

SumMeans.Filtered := True;

SumMeans.Open;

SumSupComp.Close;

SumSupComp.Filter := 'Номер = ' + IntToStr(SupplyНомер.Value);

SumSupComp.Filtered := True;

SumSupComp.Open;

end;

procedure TDataM.InventAfterRefresh(DataSet: TDataSet);

begin

FMain.Edit6.Clear;

end;

procedure TDataM.InventCalcFields(DataSet: TDataSet);

begin

InventSup.Close;

InventSup.Filter := 'Номер = ' + IntToStr(InventНомер.Value);

InventSup.Filtered := True;

InventSup.Open;

InventRef.Close;

InventRef.Filter := 'Номер = ' + IntToStr(InventНомер.Value);

InventRef.Filtered := True;

InventRef.Open;

InventПриход.Value := InventSup.FieldByName('Sum-Количество').AsInteger;

InventРасход.Value := InventRef.FieldByName('Sum-Количество').AsInteger;

InventОстаток.Value := InventSup.FieldByName('Sum-Количество').AsInteger

- InventRef.FieldByName('Sum-Количество').AsInteger;

end;

procedure TDataM.KlientAfterRefresh(DataSet: TDataSet);

begin

FMain.Edit1.Clear;

end;

procedure TDataM.MeansAfterInsert(DataSet: TDataSet);

begin

MeansПоставка.Value := SupplyНомер.Value;

end;

procedure TDataM.RefCompAfterInsert(DataSet: TDataSet);

begin

RefCompРемонт.Value := RefitНомер.Value;

RefCompКоличество.Value := 1;

end;

procedure TDataM.RefCompCalcFields(DataSet: TDataSet);

begin

RefCompСумма.Value := RefCompКоличество.Value * RefCompЦена.Value;

end;

procedure TDataM.RefitAfterRefresh(DataSet: TDataSet);

begin

FMain.Edit5.Clear;

end;

procedure TDataM.SkedBeforeRefresh(DataSet: TDataSet);

begin

FMain.Edit4.Clear;

Abort;

end;

procedure TDataM.StockMeansBeforeRefresh(DataSet: TDataSet);

begin

FMain.Edit2.Clear;

Abort;

end;

procedure TDataM.SupCompAfterInsert(DataSet: TDataSet);

begin

SupCompПоставка.Value := SupplyНомер.Value;

SupCompКоличество.Value := 1;

end;

procedure TDataM.SupCompCalcFields(DataSet: TDataSet);

begin

SupCompСумма.Value := SupCompКоличество.Value * SupCompЦена.Value;

end;

procedure TDataM.SupplyAfterInsert(DataSet: TDataSet);

begin

SupplyДата.Value := Date();

end;

procedure TDataM.SupplyAfterRefresh(DataSet: TDataSet);

begin

FMain.Edit3.Clear;

end;

end.

Листинг А.2 Ї МОДУЛЬ СПРАВОЧНИКОВ

unit DeskBook;

var

FDeskBook: TFDeskBook;

implementation

{$R *.dfm}

procedure TFDeskBook.DBGrid1TitleClick(Column: TColumn);

begin

if Tab.Sort = '['+ Column.Title.Caption + '] ASC' then

Tab.Sort := '['+ Column.Title.Caption + '] DESC' else

Tab.Sort := '['+ Column.Title.Caption + '] ASC';

end;

end.

Размещено на Allbest.ru

...

Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.