Разработка автоматизированной информационной системы на примере "МегионСофтОйл"

Разработка автоматизированной информационной системы для учета и контроля выполнения ремонтных работ, и предоставления услуг по разработке программного обеспечения компании "МегионСофтОйл", разработка алгоритмов приложений программной системы и модулей.

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

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

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

3.1.3 Физическая модель базы данных

После выбора СУБД и построения даталогической модели, средствами ERwin была сгенерирована схема данных в MS Access (См. рис. 3.4).

Рисунок 3.4 - Схема данных в MS Access

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

Таблица КЛИЕНТЫ, разработанной базы данных служит для хранения данных о клиентах компании «МегионСофтОйл» и их скидках. Описание структуры таблицы КЛИЕНТЫ представлено в режиме конструктора с указанием наименований полей таблицы, ключевых полей и типов полей (См. рис. 3.5).

Рисунок 3.5 - Таблица КЛИЕНТЫ в режиме конструктора

Таблица ЗАКАЗЫ, разработанной базы данных служит для хранения данных о заказах клиентов компании «МегионСофтОйл» на проведение технического обслуживания оргтехники и разработку программного обеспечения. рекламного агентства на размещение наружной рекламы. . Описание структуры таблицы ЗАКАЗЫ представлено в режиме конструктора с указанием наименований полей таблицы, ключевых полей и типов полей (См. рис. 3.6).

Рисунок 3.6 - Таблица ЗАКАЗЫ в режиме конструктора

Таблица ОРГТЕХНИКА, разработанной базы данных служит для хранения данных о копировально-множительной и вычислительной технике, обслуживаемой специалистами компании «МегионСофтОйл». Описание структуры таблицы ОРГТЕХНИКА представлено в режиме конструктора с указанием наименований полей таблицы, ключевых полей и типов полей (См. рис. 3.7).

Рисунок 3.7 - Таблица ОРГТЕХНИКА в режиме конструктора

Таблица МАРКИ, разработанной базы данных служит для хранения данных о марках оргтехники, обслуживаемых специалистами компании. Описание структуры таблицы МАРКИ представлено в режиме конструктора с указанием наименований полей таблицы, ключевых полей и типов полей (См. рис. 3.8).

Рисунок 3.8 - Таблица МАРКИ в режиме конструктора

Таблица РЕМОНТ, разработанной базы данных служит для хранения данных о заказах клиентов компании «МегионСофтОйл» на проведение технического обслуживания оргтехники. Описание структуры таблицы РЕМОНТ представлено в режиме конструктора с указанием наименований полей таблицы, ключевых полей и типов полей (См. рис. 3.9).

Рисунок 3.9 - Таблица РЕМОНТ в режиме конструктора

Таблица УЗЛЫ, разработанной базы данных служит для хранения данных о комплектующих деталях оргтехники, обслуживаемой специалистами компании «МегионСофтОйл». Описание структуры таблицы УЗЛЫ представлено в режиме конструктора с указанием наименований полей таблицы, ключевых полей и типов полей (См. рис. 3.10).

Рисунок 3.10 - Таблица УЗЛЫ в режиме конструктора

Таблица РАСХОД, разработанной базы данных служит для хранения данных о фактах выполнения замены узлов устройств для устранения неисправностей оргтехники. Описание структуры таблицы РАСХОД представлено в режиме конструктора с указанием наименований полей таблицы, ключевых полей и типов полей (См. рис. 3.11).

Рисунок 3.11 - Таблица РАСХОД в режиме конструктора

Таблица УСЛУГИ, разработанной базы данных служит для хранения данных о видах услуг, предоставляемых компанией «МегионСофтОйл». Описание структуры таблицы УСЛУГИ представлено в режиме конструктора с указанием наименований полей таблицы, ключевых полей и типов полей (См. рис. 3.12).

Рисунок 3.12 - Таблица УСЛУГИ в режиме конструктора

Таблица РАБОТЫ, разработанной базы данных служит для хранения данных о фактах выполнения работ по устранению неисправностей, согласно заказу клиента на проведение технического обслуживания оргтехники. Описание структуры таблицы РАБОТЫ представлено в режиме конструктора с указанием наименований полей таблицы, ключевых полей и типов полей (См. рис. 3.13).

Рисунок 3.13 - Таблица РАБОТЫ в режиме конструктора

Таблица ПО, разработанной базы данных служит для хранения данных о заказах клиентов компании «МегионСофтОйл» на разработку программного обеспечения. Описание структуры таблицы ПО представлено в режиме конструктора с указанием наименований полей таблицы, ключевых полей и типов полей (См. рис. 3.14).

Рисунок 3.14 - Таблица ПО в режиме конструктора

Таблица ГРАФИК, разработанной базы данных служит для хранения данных о этапах работ по разработке программного обеспечения, согласно стандарту жизненного цикла ПО ГОСТ Р ИСО/МЭК 12207-99. Описание структуры таблицы ГРАФИК представлено в режиме конструктора с указанием наименований полей таблицы, ключевых полей и типов полей (См. рис. 3.15).

Рисунок 3.15 - Таблица ГРАФИК в режиме конструктора

3.2 Программное обеспечение задачи

3.2.1 Дерево функций и сценарий диалога

В рамках данного дипломного проекта при разработке информационной системы были выделены и детализированы два подмножества функций: служебные функции (проверка пароля); основные функции управления и обработки данных (ввод первичной информации, обработка, ведение справочников, запросы и др.).

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

Рисунок 3.16 - Схема иерархии функций

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

Рисунок 3.17 - Структурная схема проекта

3.2.2 Разработка алгоритмов приложений программной системы

Логическая структура разрабатываемой информационной системы представлена в виде блок-схемы (См. рис. 3.18).

Рисунок 3.18 - Логическая структура разработанной системы

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

В рамках данного дипломного проекта с помощью среды визуального программирования Delphi 10, были разработаны программные модули проекта, описание которых представлено в таблице 3.3.

Таблица 3.3 - Описание программных модулей проекта

Программный модуль

Описание программного модуля

Модуль данных (UDataM)

Модуль данных разработан для связи с базой данных, хранящейся в таблицах Access. Связь реализована с помощью технологии ADO. Связь с базой данных осуществлена с помощью компонента ADOConnection вкладки ADO. Запросы реализованы с помощью компонентов ADOQuery вкладки ADO. Визуализация данных осуществлена с помощью связующего компонента DataSource вкладки Data Access. Для генерации отчетов и сопроводительной документации используются шаблоны документов Word, связь с которыми реализуется с помощью компонентов WordApplication и WordDocument вкладки Servers.

Модуль главной формы (UMain)

Модуль главной формы разработан для работы со справочниками автоматизированной информационной системы, данные которых, хранятся в таблицах базы данных Access. Визуализация данных из таблиц Access осуществлена с помощью компонента DBGrid вкладки Data Controls. Навигация по таблицам осуществляется с помощью компонентов DBNavigator вкладки Data Controls. Главное меню программы реализовано с помощью компонента MainMenu вкладки Standard.

Модуль формы справочника «Клиенты компании» (Uklient)

Модуль формы разработан для работы со справочником «Клиенты компании» (добавление, сохранение, редактирование и удаление данных) автоматизированной информационной системы, данные которого, хранятся в таблице КЛИЕНТЫ базы данных Access. Визуализация данных из таблицы Access осуществлена с помощью компонента DBGrid вкладки Data Controls. Главное меню формы справочника «Клиенты компании» реализовано с помощью компонента MainMenu вкладки Standard. Поиск данных по справочнику организован с помощью компонента DBLookupComboBox вкладки Data Controls.

Модуль формы справочника «Услуги компании» (Uuslugi)

Модуль формы разработан для работы со справочником «Услуги компании» (добавление, сохранение, редактирование и удаление данных) автоматизированной информационной системы, данные которого, хранятся в таблице УСЛУГИ базы данных Access. Визуализация данных из таблицы Access осуществлена с помощью компонента DBGrid вкладки Data Controls. Главное меню формы справочника «Клиенты компании» реализовано с помощью компонента MainMenu вкладки Standard. Поиск данных по справочнику организован с помощью компонента DBLookupComboBox вкладки Data Controls.

Модуль формы справочника «Оргтехника» (Utex)

Модуль формы разработан для работы со справочником «Оргтехника» (добавление, сохранение, редактирование и удаление данных) автоматизированной информационной системы, данные которого, хранятся в таблице ОРГТЕХНИКА базы данных Access. Визуализация данных из таблицы Access осуществлена с помощью компонента DBCtrlGrid вкладки Data Controls. Главное меню формы справочника «Оргтехника» реализовано с помощью компонента MainMenu вкладки Standard. Поиск данных по справочнику организован с помощью компонента DBLookupComboBox вкладки Data Controls.

Модуль формы справочника «Марки оргтехники» (Umarka)

Модуль формы разработан для работы со справочником «Марки оргтехники» (добавление, сохранение, редактирование и удаление данных) автоматизированной информационной системы, данные которого, хранятся в таблице МАРКИ базы данных Access. Визуализация данных из таблицы Access осуществлена с помощью компонента DBCtrlGrid вкладки Data Controls. Главное меню формы справочника «Марки оргтехники» реализовано с помощью компонента MainMenu вкладки Standard. Поиск данных по справочнику организован с помощью компонента DBLookupComboBox вкладки Data Controls.

Модуль формы (UReport)

Модуль формы разработан для выбора периода отчетности и формирования выбранного отчета. Выбор периода для формирования отчетности организован с помощью компонента DateTimePicker вкладки Win32.

Модуль формы (Uspr)

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

В Приложении A представлен листинг программного кода описанных выше программных модулей проекта.

Модуль данных (UDataM) с указанием компонентов вкладки dbGo, используемых для работы с базой данных Access, представлен формой в среде Delphi 10 (См. рис. 3.19).

Рисунок 3.19 -Модуль данных (UDataM)

При разработке модуля данных использовались следующие компоненты вкладки dbGo, Data Access и Servers в Delphi 10:

? ADOConnection - компонент вкладки dbGo, который служит для подключения к базе данных Access;

? ADOTable - компонент вкладки dbGo, который служит для подключения и работы с таблицами БД (наборами данных);

? ADOQuery - компонент вкладки dbGo, который служит для организации SQL запросов к таблицам БД;

? DataSource - компонент вкладки Data Access, который служит для связи наборов данных и компонентов, предназначенных для визуализации данных;

? WordApplication - это сервер, с помощью которого осуществляется доступ к объекту Appication и запускается приложение Word;

? WordDocument - это специальный сервер документа, т.е. объекта, содержащегося в объекте TWordApplication.

3.3 Разработка руководства пользователя

3.1.1 Назначение программного средства

Разработанная автоматизированная информационная система необходима для учета и контроля выполнения ремонтных работ оргтехники, и предоставления услуг по разработке программного обеспечения компании «МегионСофтОйл» Тюменской области, Ханты-Мансийского автономного округа - Югра, Нижневартовского района, города Мегион.

3.1.2 Условия выполнения программы

Автоматизированная информационная система для автоматизации учета и контроля выполнения ремонтных работ оргтехники должна работать под управлением операционной системы MS Windows XP, Vista, 7 на IBM/PC совместимых персональных компьютерах с минимальной конфигурацией:

? Процессор: Intel Pentium 4 с частотой процессора 2.0 ГГц

? Объем оперативной памяти: 1Гбайт

? Объем накопителя на жестком диске: 60Гбайт

? Монитор: LCD-монитор диагональю 17”

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

3.1.3 Установка программного средства

Устанавливаем папку с файлами программы («Ремонт оргтехники (МегионСофтОйл) 1.0») на диск персонального компьютера, на котором предполагается использование разработанного программного средства.

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

После установки программного средства на персональный компьютер пользователя запускаем файл MEGION.exe, при этом открывается главное меню разработанной автоматизированной информационной системы (См. рис. 3.20).

Рисунок 3.20 - Главное меню программы (Проведение ТО)

Главное меню разработанной автоматизированной информационной системы служит для работы с заказами клиентов компании «МегионСофтОйл» на проведение технического обслуживания оргтехники и разработку программного обеспечения. Для добавления нового заказа на проведение технического обслуживания необходимо нажать на кнопку панели управления главной формы программы и заполнить следующие поля:

? Выбрать клиента (из выпадающего списка);

? Выбрать тип оргтехники (из выпадающего списка);

? Выбрать марку оргтехники (из выпадающего списка);

? Ввести серийный номер техники;

? Выбрать дату начала проведения технического обслуживания (из выпадающего календаря);

? Выбрать плановую дату окончания проведения технического обслуживания (из выпадающего календаря);

? Ввести описание неисправностей оргтехники.

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

Рисунок 3.21 - Контроль заполнения полей заказа на проведение ТО

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

Рисунок 3.22 - Добавление нового заказа на проведение ТО

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

Рисунок 3.23 - Сообщение для подтверждения удаления записи

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

После добавления нового заказа на проведение технического обслуживания пользователь системы имеет возможность распечатать документ «Акт приема-передачи» (См. рис. 3.24), нажав на кнопку «Документ» > «Акт приема-передачи» главного меню программы.

Рисунок 3.24 - Документ «Акт приема-передачи»

После приема оргтехники на техническое обслуживание пользователь имеет возможность распечатать документ «Наряд на ТО» (См. рис. 3.25), нажав на кнопку «Документ» > «Наряд на ТО» главного меню программы.

Рисунок 3.25 - Документ «Наряд на ТО»

После проведения диагностики неполадок, в случае необходимости замены узлов техники для устранения выявленных неполадок, необходимо добавить информацию об израсходованных материалах. Для добавления, редактирования, сохранения и удаления израсходованных материалов, необходимо нажать на соответствующую кнопку навигатора израсходованных узлов. После чего пользователь имеет возможность распечатать документ «Дефектная ведомость» (См. рис. 3.26), нажав на кнопку «Документ» > «Дефектная ведомость» главного меню программы.

Рисунок 3.26 - Документ «Дефектная ведомость»

После проведения технического обслуживания оргтехники, статус заказа изменяется на «выполнен». После чего, нажатием на кнопку главного меню программы «Документ» > «Акт выполненных работ», распечатывается документ «Акт выполненных работ», на основании которого оплачивается техническое обслуживание и передается техника клиенту.

Рисунок 3.27 - Документ «Акт выполненных работ»

Для добавления новых заказов клиентов компании «МегионСофтОйл» на разработку программного обеспечения необходимо перейти на вкладку «Разработка ПО» (См. рис. 3.28) с помощью фильтров на панели управления главной формы программы.

Рисунок 3.28 - Главное меню программы (Разработка ПО)

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

? Выбрать клиента (из выпадающего списка);

? Ввести название разрабатываемого программного обеспечения;

? Ввести стоимость разрабатываемого программного обеспечения;

? Ввести описание неисправностей оргтехники разрабатываемого программного обеспечения.

После добавления нового заказа на разработку программного обеспечения происходит автоматическое добавление этапов разработки программного обеспечения, согласно стандарту жизненного цикла ПО ГОСТ Р ИСО/МЭК 12207-99. Для составления графика этапов, необходимо установить фокус ввода в соответствующее поле (начало/завершение) таблицы графика работ и сделать двойной щелчок по выбранной дате на календаре главной формы программы.

Для формирования результатной отчетности по заказам на проведение технического обслуживания, необходимо нажать на кнопку главного меню программы «Отчеты» > «Отчет ТО». При этом открывается форма для выбора периода отчетности (См. рис. 3.29).

Рисунок 3.29 - Форма для выбора периода отчетности

После выбора необходимого периода отчетности, нажатием на кнопку , пользователь имеет возможность сформировать отчет о результатах деятельности подразделения «Технический отдел» (См. рис. 3.30).

Рисунок 3.30 - Отчет о результатах деятельности подразделения «Технический отдел»

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

Отчет о результатах деятельности подразделения «Отдел разработки и сопровождения ПО» (См. рис. 3.31), формируется аналогичным образом.

Рисунок 3.31 - Отчет о результатах деятельности подразделения «Отдел разработки и сопровождения ПО»

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

? Оргтехника;

? Марки оргтехники;

? Узлы оргтехники;

? Услуги компании;

? Клиенты компании.

Для работы со справочником «Оргтехника» (добавление, удаление, редактирование и сохранение данных), необходимо нажать на кнопку «Справочники» > «Оргтехника» главного меню программы (См. рис. 3.32).

Рисунок 3.32 - Справочник «Оргтехника»

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

- добавления записи в справочник;

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

- редактирование записи в справочнике;

- сохранение записи в справочник;

- удаление записи из справочника.

Аналогичным образом, нажатием на кнопку «Справочники» > «Марки оргтехники», происходит работа со справочником «Марки оргтехники» (См. рис. 3.33).

Рисунок 3.33 - Справочник «Марки оргтехники»

Аналогичным образом, нажатием на кнопку «Справочники» > «Узлы оргтехники», происходит работа со справочником «Узлы оргтехники» (См. рис. 3.34).

Рисунок 3.34 - Справочник «Узлы оргтехники»

Аналогичным образом, нажатием на кнопку «Справочники» > «Услуги компании», происходит работа со справочником «Услуги компании» (См. рис. 3.35).

Рисунок 3.35 - Справочник «Услуги компании»

Аналогичным образом, нажатием на кнопку «Справочники» > «Клиенты компании», происходит работа со справочником «Клиенты компании» (См. рис. 3.36).

Рисунок 3.36 - Справочник «Клиенты компании»

3.1.5 Резервное копирование и восстановление БД

Резервное копирование и восстановление БД проводится администратором, который имеет доступ к файлу базы данных Оргтехника(Мегион).mdb, средствами СУБД Access (См. рис. 3.37).

Рисунок 3.37 - Резервное копирование и восстановление базы данных средствами Access

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

4. Заключение

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

В рамках данного дипломного проекта была спроектирована и разработана автоматизированная информационная система для учета и контроля выполнения ремонтных работ оргтехники (ОТ), и предоставления услуг по разработке программного обеспечения компании «МегионСофтОйл» Тюменской области, Ханты-Мансийского автономного округа - Югра, Нижневартовского района, города Мегион.

Разработанная информационная система направлена в первую очередь на автоматизацию ручной работы оператора диспетчерской службы компании «МегионСофтОйл», а так же позволяет решать следующие задачи:

? Регистрация и учет заявок клиентов на разработку ПО или проведение ТО оргтехники.

? Формирование документа «Акт приема-передачи».

? Формирование документа «Наряд на проведение ТО».

? Формирование документа «Дефектная ведомость».

? Контроль выполнения ремонтных работ.

? Расчет стоимости выполненных ремонтных работ с учетом скидки клиента.

? Формирование документа «Акт выполненных работ».

? Составление графика работ по разработке программного обеспечения.

? Контроль соблюдения графика работ.

? Оперативный поиск и предоставление информации о состоянии заявки клиента.

? Формирование отчетов о результатах деятельности подразделений компании.

Преимуществами разработанной информационной системы является возможность анализа исполнительности заказов клиентов компании «МегионСофтОйл», на основании результатной отчетности, а также автоматический расчет необходимых параметров.

При проектировании базы данных использовалось такое мощное CASE-средство как ERwin 4.0, поскольку от того, насколько хорошо спроектирована база данных, зависит удобство ее дальнейшего использования и администрирования. Также использовалась система управления реляционными базами данных Microsoft Access, которая предоставляет пользователям функциональные возможности, позволяющие осуществлять доступ к важным данным, и производить их глубокий анализ, а также является серьезной средой разработки приложений. Для реализации пользовательского интерфейса была проведена разработка Windows-приложения с учетом принципов создания дружественных интерфейсов и программная реализация проекта с помощью визуальной среды проектирования Borland Delphi 2010, на объектно-ориентированном языке программирования Object Pascal. Для доступа к данным хранящимся в таблицах MS Access используется наиболее передовая технология доступа к данным - технология Microsoft ADO.

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

Список использованных источников

1. Информация о компании ООО «МегионСофтОйл»: http://www.rusprofile.ru/id/2033914.

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

3. Описание АИС «IT Invent»: http://it-invent.ru/Description.aspx.

4. Описание АИС «Учет компьютеров на предприятии» версия Prof »: http://tunesoft.ru/uchet-kompyuterov-versiya-prof-dlya-1c-7.7.html.

5. Описание АИС «БП: Авторизованный сервисный центр»: http://www.ascbp.ru/astc/avtomatizatciia-servisnykh-tcentrov.

6. Джен Л. Харрингтон. Проектирование реляционных баз данных Лори, 2006 г.

7. Вейцман В. М. «Проектирование экономических информационных систем: Учебное пособие». - Яр.: МУБИНТ, 2002. - 506с.

8. Гагарина Л.Г. Киселев Д.В., Федотова Е.Л. Разработка и эксплуатация автоматизированных информационных систем / под ред.проф.Л.Г.Гагариной. - М.: ИД «Форум»: Инфра-М, 2007 - 384 с.

9. Гайдамакин Н. А. Автоматизированные информационные системы, базы и банки данных. Вводный курс. - М.: Изд. Гелиос, 2008.- 375 с.

10. Информационные системы в экономике: учебник для студентов вузов / Под ред. Г. А. Титоренко. - 2-е изд., перераб. и доп. - М.: ЮНИТИ-ДАНА, 2008. - 463 с.

11. Диго С.М. Базы данных: проектирование и использование: Учебник. - М.: Финансы и статистика, 2005.

12. Кен Гетц и др. Access 2000. Руководство разработчика. Том 1. Настольные приложения: Пер. с англ. - К.: Издательская группа BHV, 2000.

13. Литвин П., Гетц К., Гунделой М. Разработка корпоративных приложений в Access 2002. Для профессионалов. - СПб.: Питер; Киев: BHV, 2003.

14. Питер Роб, Карлос Коронел. Системы баз данных: проектирование, реализация и управление, БХВ-Петербург, Сп-б, 2004 г.

15. Попов Ф.А., Ануфриева Н.Ю. Интеллектуализация пользовательских интерфейсов информационных систем // Вестник Томского государственного университета. - 2007.- №300(1).- с.130-133.

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

17. Новиков Ф.А. Microsoft Office 2003 в целом. - СПб.: БХВ - Санкт-Петербург, 2005. - 728 с.: ил.

18. Сибилёв В.Д. Проектирование баз данных: Учеб. пособие. -- Томск: Томский межвузовский центр дистанционного образования, 2007. -- 201 с.

19. Томас Коннолли, Каролин Бегг, Анна Страчан. Базы данных. Проектирование, реализация и сопровождение. Теория и практика, Вильямс, М, 2001 г.

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

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

22. Щербаков А. Ю. Современная компьютерная безопасность. Теоретические основы. Практические аспекты. М.: Книжный мир, 2009. - 352 с.

23. Элисон Балтер. Профессиональное программирование в Microsoft Office Access 2003 (+CD-ROM), Вильямс, М, 2006 г.

Приложение А. Листинг программных модулей проекта

Модуль данных (UDataM)

unit UDataM;

interface

uses

SysUtils, Classes, DB, ADODB, WordXP, OleServer;

var

DataM: TDataM;

implementation

uses UMain, Uklient, Uuslugi, Uuzel, Utex, Umarka;

{$R *.dfm}

//===После отмены в справочнике "Клиенты компании"===

procedure TDataM.ADOTklientAfterCancel(DataSet: TDataSet);

begin

Uklient.Fklient.N1.Enabled:=True;

Uklient.Fklient.N3.Enabled:=True;

Uklient.Fklient.N4.Enabled:=False;

Uklient.Fklient.N5.Enabled:=True;

end;

//===После удаления записи в справочнике "Клиенты компании"===

procedure TDataM.ADOTklientAfterDelete(DataSet: TDataSet);

begin

Uklient.Fklient.N1.Enabled:=True;

Uklient.Fklient.N3.Enabled:=True;

Uklient.Fklient.N4.Enabled:=False;

Uklient.Fklient.N5.Enabled:=True;

end;

//===После изменения записи в справочнике "Клиенты компании"===

procedure TDataM.ADOTklientAfterEdit(DataSet: TDataSet);

begin

Uklient.Fklient.N1.Enabled:=False;

Uklient.Fklient.N3.Enabled:=False;

Uklient.Fklient.N4.Enabled:=True;

Uklient.Fklient.N5.Enabled:=False;

end;

//===После добавление записи в справочник "Клиенты компании"===

procedure TDataM.ADOTklientAfterInsert(DataSet: TDataSet);

begin

Uklient.Fklient.N1.Enabled:=False;

Uklient.Fklient.N3.Enabled:=False;

Uklient.Fklient.N4.Enabled:=True;

Uklient.Fklient.N5.Enabled:=False;

end;

//===После сохранения записи в справочник "Клиенты компании"===

procedure TDataM.ADOTklientAfterPost(DataSet: TDataSet);

begin

Uklient.Fklient.N1.Enabled:=True;

Uklient.Fklient.N3.Enabled:=True;

Uklient.Fklient.N4.Enabled:=False;

Uklient.Fklient.N5.Enabled:=True;

ADOTklient.Refresh;

end;

//===После отмены в справочнике "Марки оргтехники"===

procedure TDataM.ADOTmarkiAfterCancel(DataSet: TDataSet);

begin

Umarka.Fmarka.N1.Enabled:=True;

Umarka.Fmarka.N3.Enabled:=True;

Umarka.Fmarka.N4.Enabled:=False;

Umarka.Fmarka.N5.Enabled:=True;

end;

//===После удаления записи в справочнике "Марки оргтехники"===

procedure TDataM.ADOTmarkiAfterDelete(DataSet: TDataSet);

begin

Umarka.Fmarka.N1.Enabled:=True;

Umarka.Fmarka.N3.Enabled:=True;

Umarka.Fmarka.N4.Enabled:=False;

Umarka.Fmarka.N5.Enabled:=True;

end;

//===После изменения записи в справочнике "Марки оргтехники"===

procedure TDataM.ADOTmarkiAfterEdit(DataSet: TDataSet);

begin

Umarka.Fmarka.N1.Enabled:=False;

Umarka.Fmarka.N3.Enabled:=False;

Umarka.Fmarka.N4.Enabled:=True;

Umarka.Fmarka.N5.Enabled:=False;

end;

//===После добавление записи в справочник "Марки оргтехники"===

procedure TDataM.ADOTmarkiAfterInsert(DataSet: TDataSet);

begin

Umarka.Fmarka.N1.Enabled:=False;

Umarka.Fmarka.N3.Enabled:=False;

Umarka.Fmarka.N4.Enabled:=True;

Umarka.Fmarka.N5.Enabled:=False;

end;

//===После сохранения записи в справочник "Марки оргтехники"===

procedure TDataM.ADOTmarkiAfterPost(DataSet: TDataSet);

begin

Umarka.Fmarka.N1.Enabled:=True;

Umarka.Fmarka.N3.Enabled:=True;

Umarka.Fmarka.N4.Enabled:=False;

Umarka.Fmarka.N5.Enabled:=True;

ADOTklient.Refresh;

end;

//===Обновить цену ПО===

procedure TDataM.ADOTprogCalcFields(DataSet: TDataSet);

var

S:currency;

begin

S:=ADOTprogЦена.Value;

ADOTprogСумма.Value:=S;

end;

//===Обновить сумму заказа===

procedure TDataM.ADOTrabAfterPost(DataSet: TDataSet);

begin

ADOQSumRab.Close;

ADOQSumRab.Parameters.ParamValues['N']:=ADOTremontНомерЗаказа.Value;

ADOQSumRab.Open;

end;

//===Расчет суммы работ===

procedure TDataM.ADOTrabCalcFields(DataSet: TDataSet);

var

S:currency;

begin

S:=ADOTrabЦена.Value*ADOTrabКоличество.Value;

ADOTrabСумма.Value:=S;

end;

//===Обновить сумму заказа===

procedure TDataM.ADOTrasAfterPost(DataSet: TDataSet);

begin

ADOQSumRas.Close;

ADOQSumRas.Parameters.ParamValues['N']:=ADOTremontНомерЗаказа.Value;

ADOQSumRas.Open;

end;

//===Расчет суммы расхода===

procedure TDataM.ADOTrasCalcFields(DataSet: TDataSet);

var

S:currency;

begin

S:=ADOTrasЦена.Value*ADOTrasКоличество.Value;

ADOTrasСумма.Value:=S;

end;

//===После отмены в справочнике "Оргтехника"===

procedure TDataM.ADOTtexAfterCancel(DataSet: TDataSet);

begin

Utex.Ftex.N1.Enabled:=True;

Utex.Ftex.N3.Enabled:=True;

Utex.Ftex.N4.Enabled:=False;

Utex.Ftex.N5.Enabled:=True;

end;

//===После удаления записи в справочнике "Оргтехника"===

procedure TDataM.ADOTtexAfterDelete(DataSet: TDataSet);

begin

Utex.Ftex.N1.Enabled:=True;

Utex.Ftex.N3.Enabled:=True;

Utex.Ftex.N4.Enabled:=False;

Utex.Ftex.N5.Enabled:=True;

end;

//===После изменения записи в справочнике "Оргтехника"===

procedure TDataM.ADOTtexAfterEdit(DataSet: TDataSet);

begin

Utex.Ftex.N1.Enabled:=False;

Utex.Ftex.N3.Enabled:=False;

Utex.Ftex.N4.Enabled:=True;

Utex.Ftex.N5.Enabled:=False;

end;

//===После добавление записи в справочник "Оргтехника"===

procedure TDataM.ADOTtexAfterInsert(DataSet: TDataSet);

begin

Utex.Ftex.N1.Enabled:=False;

Utex.Ftex.N3.Enabled:=False;

Utex.Ftex.N4.Enabled:=True;

Utex.Ftex.N5.Enabled:=False;

end;

//===После сохранения записи в справочник "Оргтехника"===

procedure TDataM.ADOTtexAfterPost(DataSet: TDataSet);

begin

Utex.Ftex.N1.Enabled:=True;

Utex.Ftex.N3.Enabled:=True;

Utex.Ftex.N4.Enabled:=False;

Utex.Ftex.N5.Enabled:=True;

ADOTklient.Refresh;

end;

//===После отмены в справочнике "Услуги компании"===

procedure TDataM.ADOTuslugiAfterCancel(DataSet: TDataSet);

begin

Uuslugi.Fuslugi.N1.Enabled:=True;

Uuslugi.Fuslugi.N3.Enabled:=True;

Uuslugi.Fuslugi.N4.Enabled:=False;

Uuslugi.Fuslugi.N5.Enabled:=True;

end;

//===После удаления записи в справочнике "Услуги компании"===

procedure TDataM.ADOTuslugiAfterDelete(DataSet: TDataSet);

begin

Uuslugi.Fuslugi.N1.Enabled:=True;

Uuslugi.Fuslugi.N3.Enabled:=True;

Uuslugi.Fuslugi.N4.Enabled:=False;

Uuslugi.Fuslugi.N5.Enabled:=True;

end;

//===После изменения записи в справочнике "Услуги компании"===

procedure TDataM.ADOTuslugiAfterEdit(DataSet: TDataSet);

begin

Uuslugi.Fuslugi.N1.Enabled:=False;

Uuslugi.Fuslugi.N3.Enabled:=False;

Uuslugi.Fuslugi.N4.Enabled:=True;

Uuslugi.Fuslugi.N5.Enabled:=False;

end;

//===После добавление записи в справочник "Услуги компании"===

procedure TDataM.ADOTuslugiAfterInsert(DataSet: TDataSet);

begin

Uuslugi.Fuslugi.N1.Enabled:=False;

Uuslugi.Fuslugi.N3.Enabled:=False;

Uuslugi.Fuslugi.N4.Enabled:=True;

Uuslugi.Fuslugi.N5.Enabled:=False;

end;

//===После сохранения записи в справочник "Услуги компании"===

procedure TDataM.ADOTuslugiAfterPost(DataSet: TDataSet);

begin

Uuslugi.Fuslugi.N1.Enabled:=True;

Uuslugi.Fuslugi.N3.Enabled:=True;

Uuslugi.Fuslugi.N4.Enabled:=False;

Uuslugi.Fuslugi.N5.Enabled:=True;

ADOTklient.Refresh;

end;

//===После отмены в справочнике "Узлы оргтехники"===

procedure TDataM.ADOTuzelAfterCancel(DataSet: TDataSet);

begin

Uuzel.Fuzel.N1.Enabled:=True;

Uuzel.Fuzel.N3.Enabled:=True;

Uuzel.Fuzel.N4.Enabled:=False;

Uuzel.Fuzel.N5.Enabled:=True;

end;

//===После удаления записи в справочнике "Узлы оргтехники"===

procedure TDataM.ADOTuzelAfterDelete(DataSet: TDataSet);

begin

Uuzel.Fuzel.N1.Enabled:=True;

Uuzel.Fuzel.N3.Enabled:=True;

Uuzel.Fuzel.N4.Enabled:=False;

Uuzel.Fuzel.N5.Enabled:=True;

end;

//===После изменения записи в справочнике "Узлы оргтехники"===

procedure TDataM.ADOTuzelAfterEdit(DataSet: TDataSet);

begin

Uuzel.Fuzel.N1.Enabled:=False;

Uuzel.Fuzel.N3.Enabled:=False;

Uuzel.Fuzel.N4.Enabled:=True;

Uuzel.Fuzel.N5.Enabled:=False;

end;

//===После добавление записи в справочник "Узлы оргтехники"===

procedure TDataM.ADOTuzelAfterInsert(DataSet: TDataSet);

begin

Uuzel.Fuzel.N1.Enabled:=False;

Uuzel.Fuzel.N3.Enabled:=False;

Uuzel.Fuzel.N4.Enabled:=True;

Uuzel.Fuzel.N5.Enabled:=False;

end;

//===После сохранения записи в справочник "Узлы оргтехники"===

procedure TDataM.ADOTuzelAfterPost(DataSet: TDataSet);

begin

Uuzel.Fuzel.N1.Enabled:=True;

Uuzel.Fuzel.N3.Enabled:=True;

Uuzel.Fuzel.N4.Enabled:=False;

Uuzel.Fuzel.N5.Enabled:=True;

ADOTklient.Refresh;

end;

//===Отображение суммы заказа===

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

begin

ADOQSumRab.Close;

ADOQSumRab.Parameters.ParamValues['N']:=ADOTremontНомерЗаказа.Value;

ADOQSumRab.Open;

ADOQSumRas.Close;

ADOQSumRas.Parameters.ParamValues['N']:=ADOTremontНомерЗаказа.Value;

ADOQSumRas.Open;

UMain.FMain.Edit2.Text:=Format('%m',[ADOQSumRasУзлы.Value+ADOQSumRabРаботы.Value]);

end;

//===Переход по записям таблицы заказов===

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

begin

if UDataM.DataM.ADOTzakazВидЗаказа.Value='Проведение ТО' then

begin

UMain.FMain.Panel4.Visible:=False;

UMain.FMain.Panel3.Visible:=True;

UMain.FMain.GroupBox13.Visible:=True;

UMain.FMain.GroupBox10.Visible:=False;

end;

if UDataM.DataM.ADOTzakazВидЗаказа.Value='Разработка ПО' then

begin

UMain.FMain.Panel3.Visible:=False;

UMain.FMain.Panel4.Visible:=True;

UMain.FMain.GroupBox13.Visible:=False;

UMain.FMain.GroupBox10.Visible:=True;

end;

end;

end.

Модуль главной формы (UMain)

unit UMain;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, Menus, ExtCtrls, DBCtrls, StdCtrls, Grids, DBGrids, Mask, ComCtrls, Buttons;

var

FMain: TFMain;

implementation

uses UDataM, Uklient, Uuslugi, Uuzel, Utex, Umarka, UReport, Uspr;

{$R *.dfm}

//===Поиск заказа===

procedure TFMain.BitBtn1Click(Sender: TObject);

begin

UDataM.DataM.ADOTzakaz.Filter:='НомерЗаказа='+Edit3.Text;

UDataM.DataM.ADOTzakaz.Filtered:=True;

RadioGroup1.ItemIndex:=-1;

end;

//===Добавить дату этапа===

procedure TFMain.MonthCalendar1DblClick(Sender: TObject);

begin

If DBGrid5.SelectedIndex=2 Then

begin

UDataM.DataM.ADOTgraf.Edit; UDataM.DataM.ADOTgraf.FieldValues['ДатаЭтапа']:=DateToStr(MonthCalendar1.Date);

UDataM.DataM.ADOTgraf.Post;

end;

If DBGrid5.SelectedIndex=3 Then

begin

UDataM.DataM.ADOTgraf.Edit; UDataM.DataM.ADOTgraf.FieldValues['ДатаЗавершенияЭтапа']:=DateToStr(MonthCalendar1.Date);

UDataM.DataM.ADOTgraf.Post;

end;

end;

//===Справочник "Узлы оргтехники"===

procedure TFMain.N8Click(Sender: TObject);

begin

Uuzel.Fuzel.ShowModal;

end;

//===Справочник "Оргтехника"===

procedure TFMain.N6Click(Sender: TObject);

begin

Utex.Ftex.ShowModal;

end;

//===Справочник "Услуги марки оргтехники"===

procedure TFMain.N7Click(Sender: TObject);

begin

Umarka.Fmarka.ShowModal;

end;

//===Справочник "Услуги компании"===

procedure TFMain.N9Click(Sender: TObject);

begin

Uuslugi.Fuslugi.ShowModal;

end;

//===Фильтр заказов===

procedure TFMain.RadioGroup1Click(Sender: TObject);

begin

if RadioGroup1.ItemIndex=0 then

begin

UDataM.DataM.ADOTzakaz.Filtered:=False;

end;

if RadioGroup1.ItemIndex=1 then

begin

UDataM.DataM.ADOTzakaz.Filter:='ВидЗаказа='+Chr(39) +'Проведение ТО'+Chr(39);

UDataM.DataM.ADOTzakaz.Filtered:=True;

end;

if RadioGroup1.ItemIndex=2 then

begin

UDataM.DataM.ADOTzakaz.Filter:='ВидЗаказа='+Chr(39) +'Разработка ПО'+Chr(39);

UDataM.DataM.ADOTzakaz.Filtered:=True;

end;

end;

//===Справочник "Клиенты компании"===

procedure TFMain.N10Click(Sender: TObject);

begin

Uklient.Fklient.ShowModal;

end;

//===Акт приема-передачи===

procedure TFMain.N11Click(Sender: TObject);

var

Name, NameS: OleVariant;

n: integer;

S: string;

begin

IF UDataM.DataM.ADOTzakazНомерЗаказа.Value=Null Then

begin

Showmessage('Выберите заказ на проведение ТО!');

Exit;

end;

n:=1;

Name:=ExtractFilePath(Application.ExeName)+'\documents\Акт приема-передачи.doc';

S:=IntToStr(UDataM.DataM.ADOTzakazНомерЗаказа.Value);

NameS:=ExtractFilePath(Application.ExeName)+'\temp\Акт приема-передачи №'+S+'.doc';

UDataM.DataM.WordApp.Connect;

Try

Application.Minimize;

UDataM.DataM.WordApp.Documents.Open(Name,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);

UDataM.DataM.WordDoc.ConnectTo(UDataM.DataM.WordApp.ActiveDocument);

UDataM.DataM.WordDoc.SaveAs(NameS); UDataM.DataM.WordDoc.Tables.Item(1).Cell(1,2).Range.InsertBefore(S);

S:=DateToStr(UDataM.DataM.ADOTzakazДатаЗаказа.Value); UDataM.DataM.WordDoc.Tables.Item(1).Cell(1,4).Range.InsertBefore(S);

S:=DBEdit1.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(1,2).Range.InsertBefore(S);

S:=DBEdit3.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(2,2).Range.InsertBefore(S);

S:=DBEdit4.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(3,2).Range.InsertBefore(S);

S:=DBEdit5.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(4,2).Range.InsertBefore(S);

S:=DBEdit6.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(5,2).Range.InsertBefore(S);

S:=DBEdit2.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(6,2).Range.InsertBefore(S);

S:='';

For n:=0 to DBMemo1.Lines.Count-1 do

S:=S+DBMemo1.Lines.Strings[n];

UDataM.DataM.WordDoc.Tables.Item(2).Cell(2,4).Range.InsertBefore(S);

Except

begin

ShowMessage('Шаблон документа "Акт приема-передачи" не найден!');

UDataM.DataM.WordApp.Disconnect;

Application.Restore;

exit;

end;

end;

UDataM.DataM.WordApp.Disconnect;

Application.Restore;

end;

//===Наряд на ТО===

procedure TFMain.N12Click(Sender: TObject);

var

Name, NameS: OleVariant;

n: integer;

S: string;

begin

IF UDataM.DataM.ADOTzakazНомерЗаказа.Value=Null Then

begin

Showmessage('Выберите заказ на проведение ТО!');

Exit;

end;

Name:=ExtractFilePath(Application.ExeName)+'\documents\Наряд на проведение ТО.doc';

S:=IntToStr(UDataM.DataM.ADOTzakazНомерЗаказа.Value);

NameS:=ExtractFilePath(Application.ExeName)+'\temp\Наряд на проведение ТО №'+S+'.doc';

UDataM.DataM.WordApp.Connect;

Try

Application.Minimize;

UDataM.DataM.WordApp.Documents.Open(Name,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);

UDataM.DataM.WordDoc.ConnectTo(UDataM.DataM.WordApp.ActiveDocument);

UDataM.DataM.WordDoc.SaveAs(NameS); UDataM.DataM.WordDoc.Tables.Item(1).Cell(1,2).Range.InsertBefore(S);

S:=DateToStr(UDataM.DataM.ADOTzakazДатаЗаказа.Value);

UDataM.DataM.WordDoc.Tables.Item(1).Cell(1,4).Range.InsertBefore(S);

S:=DBEdit1.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(1,2).Range.InsertBefore(S);

S:=DBEdit3.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(2,2).Range.InsertBefore(S);

S:=DBEdit4.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(3,2).Range.InsertBefore(S);

S:=DBEdit5.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(4,2).Range.InsertBefore(S);

S:=DBEdit6.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(5,2).Range.InsertBefore(S);

S:=DBEdit2.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(6,2).Range.InsertBefore(S);

S:=DBEDate1.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(7,2).Range.InsertBefore(S);

S:='';

For n:=0 to DBMemo1.Lines.Count-1 do

S:=S+DBMemo1.Lines.Strings[n];

UDataM.DataM.WordDoc.Tables.Item(2).Cell(2,4).Range.InsertBefore(S);

n:=1;

With UDataM.DataM.ADOTrab do

begin

First;

while not EOF do

begin

S:=IntToStr(n);

UDataM.DataM.WordDoc.Tables.Item(3).Cell(n+1,1).Range.InsertBefore(S);

S:=UDataM.DataM.ADOTrabУслуга.Value;

UDataM.DataM.WordDoc.Tables.Item(3).Cell(n+1,2).Range.InsertBefore(S);

S:=IntToStr(UDataM.DataM.ADOTrabКоличество.Value);

UDataM.DataM.WordDoc.Tables.Item(3).Cell(n+1,3).Range.InsertBefore(S);

UDataM.DataM.WordDoc.Tables.Item(3).Rows.Add(EmptyParam);

inc(n);

Next;

end;

end;

UDataM.DataM.WordDoc.Tables.Item(3).Rows.Item(n+1).Delete;

Except

begin

ShowMessage('Шаблон документа "Наряд на проведение ТО" не найден!');

UDataM.DataM.WordApp.Disconnect;

Application.Restore;

exit;

end;

end;

UDataM.DataM.WordApp.Disconnect;

Application.Restore;

end;

//===Дефектная ведомость===

procedure TFMain.N13Click(Sender: TObject);

var

Name, NameS: OleVariant;

n: integer;

S: string;

begin

IF UDataM.DataM.ADOTzakazНомерЗаказа.Value=Null Then

begin

Showmessage('Выберите заказ на проведение ТО!');

Exit;

end;

Name:=ExtractFilePath(Application.ExeName)+'\documents\Дефектная ведомость.doc';

S:=IntToStr(UDataM.DataM.ADOTzakazНомерЗаказа.Value);

NameS:=ExtractFilePath(Application.ExeName)+'\temp\Дефектная ведомость №'+S+'.doc';

UDataM.DataM.WordApp.Connect;

Try

Application.Minimize;

UDataM.DataM.WordApp.Documents.Open(Name,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);

UDataM.DataM.WordDoc.ConnectTo(UDataM.DataM.WordApp.ActiveDocument);

UDataM.DataM.WordDoc.SaveAs(NameS);

UDataM.DataM.WordDoc.Tables.Item(1).Cell(1,2).Range.InsertBefore(S);

S:=DateToStr(UDataM.DataM.ADOTzakazДатаЗаказа.Value);

UDataM.DataM.WordDoc.Tables.Item(1).Cell(1,4).Range.InsertBefore(S);

S:=DBEdit1.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(1,2).Range.InsertBefore(S);

S:=DBEdit3.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(2,2).Range.InsertBefore(S);

S:=DBEdit4.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(3,2).Range.InsertBefore(S);

S:=DBEdit5.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(4,2).Range.InsertBefore(S);

S:=DBEdit6.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(5,2).Range.InsertBefore(S);

S:=DBEdit2.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(6,2).Range.InsertBefore(S);

S:=DBEDate1.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(7,2).Range.InsertBefore(S);

S:=DBEdit7.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(8,2).Range.InsertBefore(S);

S:='';

For n:=0 to DBMemo1.Lines.Count-1 do

S:=S+DBMemo1.Lines.Strings[n];

UDataM.DataM.WordDoc.Tables.Item(2).Cell(2,4).Range.InsertBefore(S);

n:=1;

With UDataM.DataM.ADOTrab do

begin

First;

while not EOF do

begin

S:=IntToStr(n);

UDataM.DataM.WordDoc.Tables.Item(3).Cell(n+1,1).Range.InsertBefore(S);

S:=UDataM.DataM.ADOTrabУслуга.Value; UDataM.DataM.WordDoc.Tables.Item(3).Cell(n+1,2).Range.InsertBefore(S);

S:=Format('%m',[UDataM.DataM.ADOTrabЦена.Value]); UDataM.DataM.WordDoc.Tables.Item(3).Cell(n+1,3).Range.InsertBefore(S);

S:=IntToStr(UDataM.DataM.ADOTrabКоличество.Value); UDataM.DataM.WordDoc.Tables.Item(3).Cell(n+1,4).Range.InsertBefore(S);

S:=Format('%m',[UDataM.DataM.ADOTrabСумма.Value]); UDataM.DataM.WordDoc.Tables.Item(3).Cell(n+1,5).Range.InsertBefore(S);

UDataM.DataM.WordDoc.Tables.Item(3).Rows.Add(EmptyParam);

inc(n);

Next;

end;

end;

UDataM.DataM.WordDoc.Tables.Item(3).Rows.Item(n+1).Delete;

n:=1;

With UDataM.DataM.ADOTras do

begin

First;

while not EOF do

begin

S:=IntToStr(n); UDataM.DataM.WordDoc.Tables.Item(4).Cell(n+1,1).Range.InsertBefore(S);

S:=UDataM.DataM.ADOTrasУзел.Value; UDataM.DataM.WordDoc.Tables.Item(4).Cell(n+1,2).Range.InsertBefore(S);

S:=Format('%m',[UDataM.DataM.ADOTrasЦена.Value]); UDataM.DataM.WordDoc.Tables.Item(4).Cell(n+1,3).Range.InsertBefore(S);

S:=IntToStr(UDataM.DataM.ADOTrasКоличество.Value); UDataM.DataM.WordDoc.Tables.Item(4).Cell(n+1,4).Range.InsertBefore(S);

S:=Format('%m',[UDataM.DataM.ADOTrasСумма.Value]); UDataM.DataM.WordDoc.Tables.Item(4).Cell(n+1,5).Range.InsertBefore(S);

UDataM.DataM.WordDoc.Tables.Item(4).Rows.Add(EmptyParam);

inc(n);

Next;

end;

end;

UDataM.DataM.WordDoc.Tables.Item(4).Rows.Item(n+1).Delete;

S:=Format('%m',[UDataM.DataM.ADOQSumRabРаботы.Value]); UDataM.DataM.WordDoc.Tables.Item(5).Cell(1,2).Range.InsertBefore(S);

S:=Format('%m',[UDataM.DataM.ADOQSumRasУзлы.Value]); UDataM.DataM.WordDoc.Tables.Item(5).Cell(2,2).Range.InsertBefore(S);

S:=Edit2.Text; UDataM.DataM.WordDoc.Tables.Item(5).Cell(3,2).Range.InsertBefore(S);

Except

begin

ShowMessage('Шаблон документа "Дефектная ведомость" не найден!');

UDataM.DataM.WordApp.Disconnect;

Application.Restore;

exit;

end;

end;

UDataM.DataM.WordApp.Disconnect;

Application.Restore;

end;

//===Акт выполненных работ===

procedure TFMain.N14Click(Sender: TObject);

var

Name, NameS: OleVariant;

Sum: single;

n: integer;

S: string;

begin

IF UDataM.DataM.ADOTzakazНомерЗаказа.Value=Null Then

begin

Showmessage('Выберите заказ на проведение ТО!');

Exit;

end;

Name:=ExtractFilePath(Application.ExeName)+'\documents\Акт выполненных работ.doc';

S:=IntToStr(UDataM.DataM.ADOTzakazНомерЗаказа.Value);

NameS:=ExtractFilePath(Application.ExeName)+'\temp\Акт выполненных работ №'+S+'.doc';

UDataM.DataM.WordApp.Connect;

Try

Application.Minimize;

UDataM.DataM.WordApp.Documents.Open(Name,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam); UDataM.DataM.WordDoc.ConnectTo(UDataM.DataM.WordApp.ActiveDocument);

UDataM.DataM.WordDoc.SaveAs(NameS); UDataM.DataM.WordDoc.Tables.Item(1).Cell(1,2).Range.InsertBefore(S);

S:=DateToStr(UDataM.DataM.ADOTzakazДатаЗаказа.Value); UDataM.DataM.WordDoc.Tables.Item(1).Cell(1,4).Range.InsertBefore(S);

S:=DBEdit1.Text; UDataM.DataM.WordDoc.Tables.Item(2).Cell(1,2).Range.InsertBefore(S);

S:=DBEdit3.Text; UDataM.DataM.WordDoc.Tables.Item(2).Cell(2,2).Range.InsertBefore(S);

S:=DBEdit4.Text; UDataM.DataM.WordDoc.Tables.Item(2).Cell(3,2).Range.InsertBefore(S);

S:=DBEdit5.Text; UDataM.DataM.WordDoc.Tables.Item(2).Cell(4,2).Range.InsertBefore(S);

S:=DBEdit6.Text; UDataM.DataM.WordDoc.Tables.Item(2).Cell(5,2).Range.InsertBefore(S);

S:=DBEdit2.Text; UDataM.DataM.WordDoc.Tables.Item(2).Cell(6,2).Range.InsertBefore(S);

S:=DBEDate1.Text; UDataM.DataM.WordDoc.Tables.Item(2).Cell(7,2).Range.InsertBefore(S);

S:=DBEdit7.Text; UDataM.DataM.WordDoc.Tables.Item(2).Cell(8,2).Range.InsertBefore(S);

S:='';

For n:=0 to DBMemo1.Lines.Count-1 do

S:=S+DBMemo1.Lines.Strings[n]; UDataM.DataM.WordDoc.Tables.Item(2).Cell(2,4).Range.InsertBefore(S);

n:=1;

With UDataM.DataM.ADOTrab do

begin

First;

while not EOF do

begin

S:=IntToStr(n); UDataM.DataM.WordDoc.Tables.Item(3).Cell(n+1,1).Range.InsertBefore(S);

S:=UDataM.DataM.ADOTrabУслуга.Value; UDataM.DataM.WordDoc.Tables.Item(3).Cell(n+1,2).Range.InsertBefore(S);

S:=Format('%m',[UDataM.DataM.ADOTrabЦена.Value]); UDataM.DataM.WordDoc.Tables.Item(3).Cell(n+1,3).Range.InsertBefore(S);

S:=IntToStr(UDataM.DataM.ADOTrabКоличество.Value); UDataM.DataM.WordDoc.Tables.Item(3).Cell(n+1,4).Range.InsertBefore(S);

S:=Format('%m',[UDataM.DataM.ADOTrabСумма.Value]); UDataM.DataM.WordDoc.Tables.Item(3).Cell(n+1,5).Range.InsertBefore(S);

UDataM.DataM.WordDoc.Tables.Item(3).Rows.Add(EmptyParam);

inc(n);

Next;

end;

end;

UDataM.DataM.WordDoc.Tables.Item(3).Rows.Item(n+1).Delete;

n:=1;

With UDataM.DataM.ADOTras do

begin

First;

while not EOF do

begin

S:=IntToStr(n); UDataM.DataM.WordDoc.Tables.Item(4).Cell(n+1,1).Range.InsertBefore(S);

S:=UDataM.DataM.ADOTrasУзел.Value; UDataM.DataM.WordDoc.Tables.Item(4).Cell(n+1,2).Range.InsertBefore(S);

S:=Format('%m',[UDataM.DataM.ADOTrasЦена.Value]); UDataM.DataM.WordDoc.Tables.Item(4).Cell(n+1,3).Range.InsertBefore(S);

S:=IntToStr(UDataM.DataM.ADOTrasКоличество.Value); UDataM.DataM.WordDoc.Tables.Item(4).Cell(n+1,4).Range.InsertBefore(S);

S:=Format('%m',[UDataM.DataM.ADOTrasСумма.Value]); UDataM.DataM.WordDoc.Tables.Item(4).Cell(n+1,5).Range.InsertBefore(S);

UDataM.DataM.WordDoc.Tables.Item(4).Rows.Add(EmptyParam);

inc(n);

Next;

end;

end;

UDataM.DataM.WordDoc.Tables.Item(4).Rows.Item(n+1).Delete;

S:=Format('%m',[UDataM.DataM.ADOQSumRabРаботы.Value]); UDataM.DataM.WordDoc.Tables.Item(5).Cell(1,2).Range.InsertBefore(S);

S:=Format('%m',[UDataM.DataM.ADOQSumRasУзлы.Value]); UDataM.DataM.WordDoc.Tables.Item(5).Cell(2,2).Range.InsertBefore(S);

S:=Edit2.Text; UDataM.DataM.WordDoc.Tables.Item(5).Cell(3,2).Range.InsertBefore(S);

S:=IntToStr(UDataM.DataM.ADOTzakazСкидка.Value); UDataM.DataM.WordDoc.Tables.Item(5).Cell(4,2).Range.InsertBefore(S); Sum:=UDataM.DataM.ADOQSumRasУзлы.Value+DataM.ADOQSumRabРаботы.Value;

Sum:=Sum-(Sum*UDataM.DataM.ADOTzakazСкидка.Value/100);

S:=Format('%m',[Sum]); UDataM.DataM.WordDoc.Tables.Item(5).Cell(5,2).Range.InsertBefore(S);

Except

begin

ShowMessage('Шаблон документа "Акт выполненных работ" не найден!');

UDataM.DataM.WordApp.Disconnect;

Application.Restore;

exit;

end;

end;

UDataM.DataM.WordApp.Disconnect;

Application.Restore;

end;

//===Отчет ТО===

procedure TFMain.N15Click(Sender: TObject);

begin

Ureport.FReport.Caption:='Отчет ТО';

Ureport.FReport.ShowModal;

end;

//===Отчет ПО===

procedure TFMain.N16Click(Sender: TObject);

begin

Ureport.FReport.Caption:='Отчет ПО';

Ureport.FReport.ShowModal;

end;

//===Выход===

procedure TFMain.N17Click(Sender: TObject);

begin

FMain.Close;

end;

//===Справка===

procedure TFMain.N5Click(Sender: TObject);

begin

Uspr.Fspr.ShowModal;

end;

//===Добавить заказ на проведение ТО===

procedure TFMain.SBAddClick(Sender: TObject);

begin

Panel4.Visible:=False;

Panel3.Visible:=True;

UDataM.DataM.ADOTzakaz.Insert;

DBLookupComboBox3.Visible:=True;

DBLookupComboBox2.Visible:=True;

DBLookupComboBox4.Visible:=True;

DateTimePicker1.Enabled:=True;

DateTimePicker1.Date:=Date();

DateTimePicker2.Enabled:=True;

DateTimePicker2.Date:=Date();

DBMemo1.Visible:=False;

DBComboBox1.ReadOnly:=True;

Memo1.Visible:=True;

Memo1.Clear;

Edit1.Visible:=True;

Edit1.Clear;

DBEdit2.Visible:=False;

DBEDate1.Visible:=False;

DBEdit7.Visible:=False;

DBEdit1.Visible:=False;

DBEdit5.Visible:=False;

DBEdit6.Visible:=False;

SBAdd.Enabled:=False;

SBSave.Enabled:=True;

SBdelet.Enabled:=False;

end;

//===Добавить заказ на разработку ПО===

procedure TFMain.SBAddPOClick(Sender: TObject);


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

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