Создание автоматизированного рабочего места оператора сервисного центра

Характеристика предприятия, особенности работы оператора сервисного центра. Требования к программному и техническому обеспечению. Проектирование моделей данных, модулей и структуры информационной системы. Разработка интерфейса и тестирование программы.

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

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

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

10.2 Обеспечение электробезопасности

Электрический ток представляет собой скрытый тип опасности, т.к. его трудно определить в токо- и нетоковедущих частях оборудования, которые являются хорошими проводниками электричества. Смертельно опасным для жизни человека считают ток, величина которого превышает 0,05А, ток менее 0,05А - безопасен (до 1000 В). С целью предупреждения поражений электрическим током к работе должны допускаться только лица, хорошо изучившие основные правила по технике безопасности.

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

Электрические установки, к которым относится практически все оборудование ЭВМ, представляют для человека большую потенциальную опасность, так как в процессе эксплуатации или проведении профилактических работ человек может коснуться частей, находящихся под напряжением. Специфическая опасность электроустановок - токоведущие проводники, корпуса стоек ЭВМ и прочего оборудования, оказавшегося под напряжением в результате повреждения (пробоя) изоляции, не подают каких-либо сигналов, которые предупреждают человека об опасности. Реакция человека на электрический ток возникает лишь при протекании последнего через тело человека. Исключительно важное значение для предотвращения электротравматизма имеет правильная организация обслуживания действующих электроустановок ВЦ, проведения ремонтных, монтажных и профилактических работ.

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

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

10.3 Обеспечение санитарно-гигиенических требований к помещениям и рабочим местам программистов

Помещения, их размеры (площадь, объем) должны в первую очередь соответствовать количеству работающих и размещаемому в них комплекту технических средств. В них предусматриваются соответствующие параметры температуры, освещения, чистоты воздуха, обеспечивают изоляцию, от производственных шумов и т.п. Для обеспечения нормальных условий труда санитарные нормы СН 245-71 устанавливают на одного работающего, объем производственного помещения не менее 15 м3, площадь помещения выгороженного стенами или глухими перегородками не менее 4,5 м3.

Для эксплуатации ЭВМ следует предусматривать следующие помещения:

- машинный зал, помещение для размещения сервисной и периферийной аппаратуры, помещение для хранения запасных деталей, инструментов, приборов (ЗИП);

- помещения для размещения приточно-вытяжных вентиляторов;

- помещение для персонала;

- помещение для приема-выдачи информации.

Основные помещения располагаются в непосредственной близости друг от друга. Их оборудуют общеобменной вентиляцией и искусственным освещением. К помещению машинного зала и хранения магнитных носителей информации предъявляются особые требования. Площадь машинного зала должна соответствовать площади необходимой по заводским техническим условиям данного типа ЭВМ.

Высота зала над технологическим полом до подвесного потолка должна быть 33,5 м. Расстояние подвесным и основным потолками при этом должно быть 0,5_0,8 м. Высоту подпольного пространства принимают равной 0,2_0,6 м.

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

Снижение шума, создаваемого на рабочих местах ВЦ внутренними источниками, а также шума проникающего извне, является очень важной задачей. Снижение шума в источнике излучения можно обеспечить применением упругих прокладок между основанием машины, прибора и опорной поверхностью. В качестве прокладок используются резина, войлок, пробка, различной конструкции амортизаторы. Под настольные шумящие аппараты можно подкладывать мягкие коврики из синтетических материалов, а под ножки столов, на которых они установлены, - прокладки из мягкой резины, войлока, толщиной 6_8 мм. Крепление прокладок возможно путем приклейки их к опорным частям.

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

Рациональная планировка помещения, размещения оборудования является важным фактором, позволяющим снизить шум при существующем оборудовании ЭВМ.

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

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

- ослабить шум самих источников (применение экранов, звукоизолирующих кожухов);

- снизить эффект суммарного воздействия отраженных звуковых волн (звукопоглощающие поверхности конструкций);

- применять рациональное расположение оборудования;

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

10.4 Противопожарная защита

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

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

Пожары представляют особую опасность, так как сопряжены с большими материальными потерями.

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

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

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

Энергоснабжение осуществляется от трансформаторной станции и двигатель-генераторных агрегатов. На трансформаторных подстанциях особую опасность представляют трансформаторы с масляным охлаждением. В связи с этим предпочтение следует отдавать сухим трансформатором.

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

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

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

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

Газовые огнетушители применяются для тушения жидких и твердых веществ, а также электроустановок, находящихся под напряжением.

Заключение

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

В ходе выполнения данной дипломной работы была разработана программа на языке высокого уровня Visual C++. А также изучены возможности данного языка. Было изучено взаимодействие программ, написанных на C++ с базами данных под управленим MS Access.

Изучены и исследованы автоматизированные информационные системы. Основное внимание уделено изучению современных методов защиты информации, способов проектирования приложений, объектно-ориентированному и системному программированию.

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

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

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

Список используемых источников

1. Брудник С.С. и др. "Экономическое содержание дипломных проектов", М.: ГАНГ, 1990г, 200 с.

2. С. Гилберт, Б.Маккарти “Самоучитель Visual C++ 6 в примерах”. Издательство «ДиаСофт», 2002 г, 496 стр.

3. В. Давыдов “Visual C++”; Петербург, 2008 г, 576 стр.

4. Майкл Дж. Янг “Visual C++ 6. Полное руководство пользователя”.

“Visual C++ 6 Руководство разработчика”. Санкт-Петербург, 2000 г, 560 стр.

5. Джесс Либерти «Освой самостоятельно С++ за 21 день», - М.: Изд. Дом «Вильямс», 2004 -288 с.

6. Назарр К., Рихтер Дж. “Windows via C/C++. Программирование на языке Visual C++”.Питер, Русская Редакция, 2008 г., 896 стр.

7. Павловская Т.А., Щупак Ю.А. «С/С++. Структурное программирование. Практикум». - СПб: Питер,1999 г, 2005 -239 с.

8. Павловская Т.А. «С/С++. Программирование на языке высокого уровня». - СПб: Питер, 2005 - 466 с.

9. Владислав Пирогов “Программирование на Visual C++.NET” БХВ- Петербург,2003 г., 786 стр.

10. Стивен Прата «Язык программирования С++. Лекции и упражнения». Учебник.- СПб: ООО «ДиаСофтЮП», 2003 - 1104 с.

11. Татьяна Сидорина “Самоучитель Microsoft Visual Studio C++ и MFC (+ CD-ROM)”; Петербург, 2009 г., 848 стр.

12. Юрий Тихонов “Самоучитель MFC”. Санкт-Петербург, 2000 г, 640 стр.

Приложение А

Руководство системного программиста, программиста и оператора

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

Программа состоит из 5 окон, благодаря которым возможно реализовать такие функции как:

- Добавление нового заказа

- Добавление неисправного оборудования

- Просмотр отчетов по заявкам

- Просмотр отчетов по оборудованию

- Добавление информации о диагностике

- Добавление описания выполненных ремонтных работ

- Архивирование базы данных.

Руководство системного программиста

Данная программа является оболочкой базы данных. Сама база данных при инсталляции программного приложения должна быть скопирована в папку C:\Program Files\АРМ оператора СЦ\База данных.mdb

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

На данном этапе папка C:\Program Files\АРМ оператора СЦ\ является рабочей папкой программы, в ней формируются файлы отчетов, храниться база данных и её резервная копия.

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

Данная программа не использует подключения к локальной сети или к сети интернет.

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

Руководство программиста

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

База данных должна находить в рабочей папке программы C:\Program Files\АРМ оператора СЦ\

Также следует проверить наличие установленного программного обеспечения а так же удовлетворение минимальным системным требованиям.

Руководство оператора.

При возникновении системных ошибок или неработоспособности программы обратитесь к системному программисту.

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

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

Если были заполнены не все необходимые поля, то это повлечет за собой появления окна сообщения с уведомлением об этом, как показано на рисунке А.1

Рисунок А.1 - Уведомление о том, что не заполнены все поля.

После этого происходит проверка введенной информации. На этом этапе может появиться сообщение наподобие такого, какое приведено на рисунке А.2.

Рисунок А.2 - Уведомление о некорректности вводимой информации

Если все было введено правильно, то появиться уведомление об успешном сохранении.

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

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

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

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

Приложение Б

Экранные формы

Разработанная мною программа состоит из главного окна и 4 диалоговых. Они показаны на рисунках ниже

Рисунок Б.1 - Главное окно программы.

Рисунок Б.2 - Окно добавления заявки.

Рисунок Б.3 - Окно добавления неисправного оборудования.

Рисунок Б.4 - Окно ввода результатов диагностики.

Рисунок Б.5 - Окно ввода информации о проведенных ремонтных работах.

Приложение В

Листинг программы

//Файл «АРМ оператора СЦ.cpp»

#include "stdafx.h"

#include "АМР оператора СЦ.h"

#include "fstream.h"

#include "АМР оператора СЦSet.h"

#include "АМР оператора СЦDoc.h"

#include "АМР оператора СЦView.h"

#include "WinAddZajav.h"

#include "WinAddObr.h"

#include "WinDiag.h"

#include "WinRem.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

BOOL result = TRUE;

CDatabase db;

CRecordset recset(&db);

CString zSQL;

CString IDZak;

CString Buff, Buff2,tekn;

int izav;

LPCTSTR lpszConnect =

_T("Driver={Microsoft Access Driver (*.mdb)};DSN='';DBQ=C:\\Program Files\\АРМ оператора СЦ\\База данных.mdb;");

BOOL bms2,bms;

class Zakaz

{public:

int iZajav;

int iKlient;

int KL;

CString szKlient;

CString szDtPriem;

CString szDtSrok;

CString szDtVipoln;};

class Oboryd

{ public:

CString Tip;

CString marka;

CString model;

CString SN;

CString dtpriem;

CString neisp;

CString diagnis;

CString stadija()

{ if (diagnis != "")

{return "Проведена диагноcтика";}

else

if (dtpriem != "")

{ return "Оборудование принято";}

else

{ return "Поступил заказ";}}

CString neispravnost()

{ if(diagnis != "")

{return diagnis;}

else

{ return neisp;}}

};

Zakaz mtek,mpro,mper;

Oboryd m2tek, m2pro,m2per;

CString AddToFile (CString _1)

{

CString _2;

recset.GetFieldValue(_1, _2);

if (_2 == "")

{return " *значение не задано* ";}

else

{ _2 = " " + _2 + " ";

return _2;}

};

void CMyView::OnButton1()

{

TRY

{ result = db.OpenEx(lpszConnect, CDatabase::noOdbcDialog);

zSQL = "SELECT Заявка.Дата_закрытия, Заявка.Номер_заявки, Клиенты.Название, Заявка.Срок_выполнения FROM Клиенты INNER JOIN Заявка ON Клиенты.Код_компании = Заявка.Код_клиента;";

recset.Open(CRecordset::forwardOnly, zSQL, CRecordset::readOnly);

bms = true;

while (!recset.IsEOF())

{ recset.GetFieldValue("Дата_закрытия", Buff2);

recset.GetFieldValue("Номер_заявки", Buff);

recset.GetFieldValue("Срок_выполнения", mtek.szDtSrok);

recset.GetFieldValue("Название", mtek.szKlient);

recset.MoveNext();

mtek.iZajav = atoi(Buff);

if (Buff2 == "")

{ if (bms)

{ bms = false;

mper.iZajav = mtek.iZajav;

mper.szDtSrok = mtek.szDtSrok;

mper.szKlient = mtek.szKlient;}

else

{ mpro.iZajav = mper.iZajav;

mpro.szDtSrok = mper.szDtSrok;

mpro.szKlient = mper.szKlient;

mper.iZajav = mtek.iZajav;

mper.szDtSrok = mtek.szDtSrok;

mper.szKlient = mtek.szKlient;};

if ((mper.iZajav == izav) && (mper.iZajav != mpro.iZajav))

{ Buff.Format(_T("%d"), mpro.iZajav);

SetDlgItemText(IDC_EDIT1,Buff);

SetDlgItemText(IDC_EDIT2,mpro.szKlient);

SetDlgItemText(IDC_EDIT3,mpro.szDtSrok);

izav = mpro.iZajav;

goto __Kon2;}}}

mpro.iZajav = mtek.iZajav;

mpro.szDtSrok = mtek.szDtSrok;

mpro.szKlient = mtek.szKlient;

Buff.Format(_T("%d"), mpro.iZajav);

SetDlgItemText(IDC_EDIT1,Buff);

SetDlgItemText(IDC_EDIT2,mpro.szKlient);

SetDlgItemText(IDC_EDIT3,mpro.szDtSrok);

__Kon2:

recset.Close();

int a=0,b=0;

Buff.Format(_T("%d"), mpro.iZajav);

zSQL = "SELECT [Ремонт оборудования].[Номер расписки]"

"FROM [Ремонт оборудования]"

"WHERE ((([Ремонт оборудования].[Код заявки])=" + Buff + "));";

recset.Open(CRecordset::forwardOnly, zSQL, CRecordset::readOnly);

while (!recset.IsEOF())

{ a++;

recset.MoveNext();}

recset.Close();

Buff.Format(_T("%d"), mpro.iZajav);

zSQL = "SELECT [Ремонт оборудования].[Номер расписки]"

"FROM [Ремонт оборудования]"

"WHERE ((([Ремонт оборудования].[Код заявки])=" + Buff + ") AND (([Ремонт оборудования].Выполнено)=true));";

recset.Open(CRecordset::forwardOnly, zSQL, CRecordset::readOnly);

while (!recset.IsEOF())

{ b++;

recset.MoveNext();}

recset.Close();

Buff.Format(_T("%d"), b);

Buff2.Format(_T("%d"), a);

Buff = "Выполнено " + Buff + " из " + Buff2;

SetDlgItemText(IDC_EDIT4,Buff); }

CATCH_ALL(e)

{ }

END_CATCH_ALL

db.Close();}

void CMyView::OnButton2()

{TRY

{ result = db.OpenEx(lpszConnect, CDatabase::noOdbcDialog);

zSQL = "SELECT Заявка.Дата_закрытия, Заявка.Номер_заявки, Клиенты.Название, Заявка.Срок_выполнения FROM Клиенты INNER JOIN Заявка ON Клиенты.Код_компании = Заявка.Код_клиента;";

recset.Open(CRecordset::forwardOnly, zSQL, CRecordset::readOnly);

bms = true;

while (!recset.IsEOF())

{ recset.GetFieldValue("Дата_закрытия", Buff2);

recset.GetFieldValue("Номер_заявки", Buff);

recset.GetFieldValue("Срок_выполнения", mtek.szDtSrok);

recset.GetFieldValue("Название", mtek.szKlient);

recset.MoveNext();

mtek.iZajav = atoi(Buff);

if (Buff2 == "")

{ if (bms)

{

bms = false;

mper.iZajav = mtek.iZajav;

mper.szDtSrok = mtek.szDtSrok;

mper.szKlient = mtek.szKlient;}

if (mtek.iZajav > mpro.iZajav)

{ Buff.Format(_T("%d"), mtek.iZajav);

SetDlgItemText(IDC_EDIT1,Buff);

SetDlgItemText(IDC_EDIT2,mtek.szKlient);

SetDlgItemText(IDC_EDIT3,mtek.szDtSrok);

mpro.iZajav = mtek.iZajav;

mpro.szDtSrok = mtek.szDtSrok;

mpro.szKlient = mtek.szKlient;

izav = mtek.iZajav;

goto __Kon1;}}}

mpro.iZajav = mper.iZajav;

mpro.szDtSrok = mper.szDtSrok;

mpro.szKlient = mper.szKlient;

Buff.Format(_T("%d"), mper.iZajav);

SetDlgItemText(IDC_EDIT1,Buff);

SetDlgItemText(IDC_EDIT2,mper.szKlient);

SetDlgItemText(IDC_EDIT3,mper.szDtSrok);

izav = mper.iZajav;

__Kon1:

recset.Close();

int a=0,b=0;

Buff.Format(_T("%d"), mpro.iZajav);

zSQL = "SELECT [Ремонт оборудования].[Номер расписки]"

"FROM [Ремонт оборудования]"

"WHERE ((([Ремонт оборудования].[Код заявки])=" + Buff + "));";

recset.Open(CRecordset::forwardOnly, zSQL, CRecordset::readOnly);

while (!recset.IsEOF())

{ a++;

recset.MoveNext();}

recset.Close();

Buff.Format(_T("%d"), mpro.iZajav);

zSQL = "SELECT [Ремонт оборудования].[Номер расписки]"

"FROM [Ремонт оборудования]"

"WHERE ((([Ремонт оборудования].[Код заявки])=" + Buff + ") AND (([Ремонт оборудования].Выполнено)=true));";

recset.Open(CRecordset::forwardOnly, zSQL, CRecordset::readOnly);

while (!recset.IsEOF())

{ b++;

recset.MoveNext();}

recset.Close();

Buff.Format(_T("%d"), b);

Buff2.Format(_T("%d"), a);

Buff = "Выполнено " + Buff + " из " + Buff2;

SetDlgItemText(IDC_EDIT4,Buff);}

CATCH_ALL(e)

{ }

END_CATCH_ALL

db.Close();}

void CMyView::OnButton6()

{ DeleteFile("C:\\Program Files\\АРМ оператора СЦ\\Отчет по заявке.txt");

GetDlgItemText(IDC_EDIT1,Buff);

TRY

{ result = db.OpenEx(lpszConnect, CDatabase::noOdbcDialog);

zSQL = "SELECT Заявка.Номер_заявки, Клиенты.Название, [Контактные лица].ФИО, [Контактные лица].Должность, Заявка.Дата_получения, Заявка.Срок_выполнения FROM Клиенты INNER JOIN ([Контактные лица] INNER JOIN Заявка ON [Контактные лица].[Код контактного лица] = Заявка.Код_контактного_лица) ON Клиенты.Код_компании = Заявка.Код_клиента WHERE (((Заявка.Номер_заявки)=" + Buff + "));";

recset.Open(CRecordset::forwardOnly, zSQL, CRecordset::readOnly);

if (recset.IsEOF())

{AfxMessageBox(("Заявка не найдена"),MB_OK);}

else

{ofstream outfile("C:\\Program Files\\АРМ оператора СЦ\\Отчет по заявке.txt");

outfile << "Заявка №" << AddToFile("Номер_заявки") << "\nОт " << AddToFile("Дата_получения") << ";\nКомпания " << AddToFile("Название") << "просит забрать перечисленое ниже оборудование и выполнить его ремонт.\nСдачу оборудования на фирме осуществит " << AddToFile("ФИО") << "("<< AddToFile("Должность") << ")\nРемонт оборудования необходимо выполнить до" << AddToFile ("Срок_выполнения") << "\n\n\n----------------";

recset.Close();

zSQL = "SELECT [Ремонт оборудования].*, Оборудование.*, Неисправность.[Признаки неисправности], Неисправность.[Распространение гарантии], Диагностика.*, Инженер.*, [Описание ремонта].[Описание ремонта], [Описание ремонта].[Дата ремонта], Гарантии.*, [Описание ремонта].[Стоимость ремонта]"

" FROM Гарантии RIGHT JOIN (Диагностика RIGHT JOIN (Инженер RIGHT JOIN (Неисправность RIGHT JOIN (Оборудование RIGHT JOIN ([Описание ремонта] RIGHT JOIN [Ремонт оборудования] ON [Описание ремонта].[Код ремонта] = [Ремонт оборудования].[Описание_ремонта]) ON Оборудование.[Код оборудования] = [Ремонт оборудования].Оборудование) ON Неисправность.[Код неисправности] = [Ремонт оборудования].[Код неисправности]) ON Инженер.[Код инженера] = [Ремонт оборудования].Инженер) ON Диагностика.[Номер диагностики] = Неисправность.Диагностика) ON Гарантии.[Номер гарантийного талона] = [Ремонт оборудования].[Гарантия до ремонта]"

" WHERE ((([Ремонт оборудования].[Код заявки])=" + Buff + "));";

recset.Open(CRecordset::forwardOnly, zSQL, CRecordset::readOnly);

while (!recset.IsEOF())

{ outfile << "\n\n\n\nРасписка №" << AddToFile("Номер расписки") << "\n" << AddToFile("Тип оборудования") << AddToFile("Марка") << AddToFile("Модель");

outfile << "\nДата приема:" << AddToFile("Дата приема") << "(" << AddToFile("Ф И О") << ")\n\nОписание поломки:\nЖалобы клиента:\n\t" << AddToFile("Признаки неисправности") ;

recset.GetFieldValue("Номер диагностики", Buff2);

if (Buff2 != "")

outfile << "\nРезультат диагностики(" << AddToFile("Дата проведения") << "№" << Buff << "):\n\t" <<AddToFile("Результат диагностики");

else

outfile << "\nДиагностика не проводилась.";

outfile << "\n\nОписание ремонта:\n";

recset.GetFieldValue("Описание ремонта", Buff2);

if (Buff2 != "")

{ outfile << "Выполненые работы:\n\t" << Buff2 << "\nСтоимость ремонта составила " << AddToFile("Стоимость ремонта") << "грн.\n";

recset.GetFieldValue("Гарантия до ремонта", Buff2);

if (Buff2 == "")

{

outfile << "Данное оборудование было на гарантийном обслуживании (№" << Buff2 << " до " << AddToFile("Срок гарантии") << ")";

}

else

{

outfile << "Данное оборудование не было на гарантийном обслуживании ";}}

else

outfile << "Ремонт не проводился.\n";

recset.MoveNext();

}

/////////////

outfile.close();

recset.Close();

ShellExecute (NULL, "open", "C:/Program Files/АРМ оператора СЦ/Отчет по заявке.txt",NULL, NULL, SW_SHOWNORMAL);}}

CATCH_ALL(e)

{ }

END_CATCH_ALL

db.Close();}

void CMyView::OnButton3()

{

TRY

{ db.OpenEx(lpszConnect, CDatabase::noOdbcDialog);

zSQL = "SELECT Оборудование.[Тип оборудования], Оборудование.Марка, Оборудование.Модель, Оборудование.SN, Неисправность.[Признаки неисправности], Диагностика.[Результат диагностики], [Ремонт оборудования].[Дата приема] "

"FROM (Диагностика RIGHT JOIN Неисправность ON Диагностика.[Номер диагностики] = Неисправность.Диагностика) RIGHT JOIN (Оборудование INNER JOIN ([Описание ремонта] RIGHT JOIN [Ремонт оборудования] ON [Описание ремонта].[Код ремонта] = [Ремонт оборудования].Описание_ремонта) ON Оборудование.[Код оборудования] = [Ремонт оборудования].Оборудование) ON Неисправность.[Код неисправности] = [Ремонт оборудования].[Код неисправности]"

"WHERE ((([Ремонт оборудования].Выполнено)=False));";

recset.Open(CRecordset::forwardOnly, zSQL, CRecordset::readOnly);

bms = true;

bms2=false;

while (!recset.IsEOF())

{

recset.GetFieldValue("Тип оборудования", m2tek.Tip);

recset.GetFieldValue("Марка", m2tek.marka);

recset.GetFieldValue("Модель", m2tek.model);

recset.GetFieldValue("SN", m2tek.SN);

recset.GetFieldValue("Дата приема", m2tek.dtpriem);

recset.GetFieldValue("Признаки неисправности", m2tek.neisp);

recset.GetFieldValue("Результат диагностики", m2tek.diagnis);

recset.MoveNext();

if (bms)

{

bms = false;

m2per.Tip = m2tek.Tip;

m2per.marka = m2tek.marka;

m2per.model = m2tek.model;

m2per.SN = m2tek.SN;

m2per.dtpriem = m2tek.dtpriem;

m2per.neisp = m2tek.neisp;

m2per.diagnis = m2tek.diagnis;

}

else

{

bms2 = true;

m2pro.Tip = m2per.Tip;

m2pro.marka = m2per.marka;

m2pro.model = m2per.model;

m2pro.SN = m2per.SN;

m2pro.dtpriem = m2per.dtpriem;

m2pro.neisp = m2per.neisp;

m2pro.diagnis = m2per.diagnis;

m2per.Tip = m2tek.Tip;

m2per.marka = m2tek.marka;

m2per.model = m2tek.model;

m2per.SN = m2tek.SN;

m2per.dtpriem = m2tek.dtpriem;

m2per.neisp = m2tek.neisp;

m2per.diagnis = m2tek.diagnis;

}

if ((m2tek.SN == tekn) && bms2)

{

SetDlgItemText(IDC_EDIT5, m2pro.Tip);

Buff = m2pro.marka + " " + m2pro.model;

SetDlgItemText(IDC_EDIT6, Buff);

SetDlgItemText(IDC_EDIT7, m2pro.SN);

SetDlgItemText(IDC_EDIT8, m2pro.neispravnost());

SetDlgItemText(IDC_EDIT9, m2pro.stadija());

tekn = m2pro.SN;

goto _m2;}}

SetDlgItemText(IDC_EDIT5, m2per.Tip);

Buff = m2per.marka + " " + m2per.model;

SetDlgItemText(IDC_EDIT6, Buff);

SetDlgItemText(IDC_EDIT7, m2per.SN);

SetDlgItemText(IDC_EDIT8, m2per.neispravnost());

SetDlgItemText(IDC_EDIT9, m2per.stadija());

tekn = m2pro.SN;}

_m2:

recset.Close();

CATCH_ALL(e)

{}

END_CATCH_ALL

db.Close();

}

void CMyView::OnButton4()

{

TRY

{ db.OpenEx(lpszConnect, CDatabase::noOdbcDialog);

zSQL = "SELECT Оборудование.[Тип оборудования], Оборудование.Марка, Оборудование.Модель, Оборудование.SN, Неисправность.[Признаки неисправности], Диагностика.[Результат диагностики], [Ремонт оборудования].[Дата приема] "

"FROM (Диагностика RIGHT JOIN Неисправность ON Диагностика.[Номер диагностики] = Неисправность.Диагностика) RIGHT JOIN (Оборудование INNER JOIN ([Описание ремонта] RIGHT JOIN [Ремонт оборудования] ON [Описание ремонта].[Код ремонта] = [Ремонт оборудования].Описание_ремонта) ON Оборудование.[Код оборудования] = [Ремонт оборудования].Оборудование) ON Неисправность.[Код неисправности] = [Ремонт оборудования].[Код неисправности]"

"WHERE ((([Ремонт оборудования].Выполнено)=False));";

recset.Open(CRecordset::forwardOnly, zSQL, CRecordset::readOnly);

bms = true;

while (!recset.IsEOF())

{ recset.GetFieldValue("Тип оборудования", m2tek.Tip);

recset.GetFieldValue("Марка", m2tek.marka);

recset.GetFieldValue("Модель", m2tek.model);

recset.GetFieldValue("SN", m2tek.SN);

recset.GetFieldValue("Дата приема", m2tek.dtpriem);

recset.GetFieldValue("Признаки неисправности", m2tek.neisp);

recset.GetFieldValue("Результат диагностики", m2tek.diagnis);

recset.MoveNext();

if (bms)

{ bms = false;

m2per.Tip = m2tek.Tip;

m2per.marka = m2tek.marka;

m2per.model = m2tek.model;

m2per.SN = m2tek.SN;

m2per.dtpriem = m2tek.dtpriem;

m2per.neisp = m2tek.neisp;

m2per.diagnis = m2tek.diagnis;

}

if (tekn == m2tek.SN)

{

if (recset.IsEOF())

{

goto _m3;

}

else

{

recset.GetFieldValue("Тип оборудования", m2tek.Tip);

recset.GetFieldValue("Марка", m2tek.marka);

recset.GetFieldValue("Модель", m2tek.model);

recset.GetFieldValue("SN", m2tek.SN);

recset.GetFieldValue("Дата приема", m2tek.dtpriem);

recset.GetFieldValue("Признаки неисправности", m2tek.neisp);

recset.GetFieldValue("Результат диагностики", m2tek.diagnis);

SetDlgItemText(IDC_EDIT5, m2tek.Tip);

Buff = m2tek.marka + " " + m2tek.model;

SetDlgItemText(IDC_EDIT6, Buff);

SetDlgItemText(IDC_EDIT7, m2tek.SN);

SetDlgItemText(IDC_EDIT8, m2tek.neispravnost());

SetDlgItemText(IDC_EDIT9, m2tek.stadija());

tekn = m2tek.SN;

goto _m1;}}}

_m3:

SetDlgItemText(IDC_EDIT5, m2per.Tip);

Buff = m2per.marka + " " + m2per.model;

SetDlgItemText(IDC_EDIT6, Buff);

SetDlgItemText(IDC_EDIT7, m2per.SN);

SetDlgItemText(IDC_EDIT8, m2per.neispravnost());

SetDlgItemText(IDC_EDIT9, m2per.stadija());

tekn = m2per.SN;}

_m1:

recset.Close();

CATCH_ALL(e)

{

}

END_CATCH_ALL

db.Close();

}

void CMyView::OnButton10()

{ GetDlgItemText(IDC_EDIT7,Buff);

TRY

{ result = db.OpenEx(lpszConnect, CDatabase::noOdbcDialog);

zSQL = "SELECT [Ремонт оборудования].*, Оборудование.*, Неисправность.[Признаки неисправности], Неисправность.[Распространение гарантии], Диагностика.*, Инженер.*, [Описание ремонта].[Описание ремонта], [Описание ремонта].[Дата ремонта], Гарантии.*, [Описание ремонта].[Стоимость ремонта]"

" FROM Гарантии RIGHT JOIN (Диагностика RIGHT JOIN (Инженер RIGHT JOIN (Неисправность RIGHT JOIN (Оборудование RIGHT JOIN ([Описание ремонта] RIGHT JOIN [Ремонт оборудования] ON [Описание ремонта].[Код ремонта] = [Ремонт оборудования].[Описание_ремонта]) ON Оборудование.[Код оборудования] = [Ремонт оборудования].Оборудование) ON Неисправность.[Код неисправности] = [Ремонт оборудования].[Код неисправности]) ON Инженер.[Код инженера] = [Ремонт оборудования].Инженер) ON Диагностика.[Номер диагностики] = Неисправность.Диагностика) ON Гарантии.[Номер гарантийного талона] = [Ремонт оборудования].[Гарантия до ремонта]"

" WHERE (((Оборудование.SN)=" + Buff + "));";

recset.Open(CRecordset::forwardOnly, zSQL, CRecordset::readOnly);

if (recset.IsEOF())

{

AfxMessageBox(("Расписка не найдена"),MB_OK);

}

else

{

ofstream outfile("C:\\Program Files\\АРМ оператора СЦ\\Отчет по неисправности.txt");

outfile << "Расписка №" << AddToFile("Номер расписки") << "\n" << AddToFile("Тип оборудования") << AddToFile("Марка") << AddToFile("Модель");

outfile << "\nДата приема:" << AddToFile("Дата приема") << "(" << AddToFile("Ф И О") << ")\n\nОписание поломки:\nЖалобы клиента:\n\t" << AddToFile("Признаки неисправности") ;

recset.GetFieldValue("Номер диагностики", Buff2);

if (Buff2 != "")

outfile << "\nРезультат диагностики(" << AddToFile("Дата проведения") << "№" << Buff << "):\n\t" <<AddToFile("Результат диагностики");

else

outfile << "\nДиагностика не проводилась.";

outfile << "\n\nОписание ремонта:\n";

recset.GetFieldValue("Описание ремонта", Buff2);

if (Buff2 != "")

{

outfile << "Выполненые работы:\n\t" << Buff2 << "\nСтоимость ремонта составила " << AddToFile("Стоимость ремонта") << "грн.\n";

recset.GetFieldValue("Гарантия до ремонта", Buff2);

if (Buff2 == "")

{

outfile << "Данное оборудование было на гарантийном обслуживании (№" << Buff2 << " до " << AddToFile("Срок гарантии") << ")";

}

else

{

outfile << "Данное оборудование не было на гарантийном обслуживании ";

}

}

else

outfile << "Ремонт не проводился.\n";

outfile.close();}}

ShellExecute (NULL, "open", "C:/Program Files/АРМ оператора СЦ/Отчет по неисправности.txt",NULL, NULL, SW_SHOWNORMAL);

recset.Close();

CATCH_ALL(e)

{}

END_CATCH_ALL

db.Close();}

void CMyView::OnButton5()

{ CWinAddZajav a;

a.DoModal();}

void CMyView::OnButton7()

{

CWinAddObr a;

a.DoModal();

}

void CMyView::OnButton8()

{ CWinDiag a;

a.DoModal();}

void CMyView::OnButton9()

{

CWinRem a;

a.DoModal();}

void CMyView::OnButton11()

{

CString aa = "C:/Program Files/АРМ оператора СЦ/База данных.mdb";

CString bb = "C:/Program Files/АРМ оператора СЦ/РК/База данных.mdb";

BOOL t=false;

CopyFileA(aa, bb, t);

}

void CMyView::OnButton12()

{

CString aa = "C:/Program Files/АРМ оператора СЦ/РК/База данных.mdb";

CString bb = "C:/Program Files/АРМ оператора СЦ/База данных.mdb";

BOOL t=false;

CopyFileA(aa, bb, t);

}

//Файл «WinAddZajav.cpp»

#include "stdafx.h"

#include "АМР оператора СЦ.h"

#include "WinAddZajav.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

CString lpszConnect =

_T("Driver={Microsoft Access Driver (*.mdb)};DSN='';DBQ=C:\\Program Files\\АРМ оператора СЦ\\База данных.mdb;");

class Zakaz

{

public:

int iZajav;

int iKlient;

int KL;

CString szKlient;

CString szDtPriem;

CString sxDtSrok;

CString szDtVipoln;

};

void CWinAddZajav::OnOK()

{

Zakaz zak;

CString zSQL,Buff,Buff2;

BOOL result = TRUE;

CDatabase db;

CRecordset recset(&db);

TRY

{

result = db.OpenEx(lpszConnect, CDatabase::noOdbcDialog);

GetDlgItemText(IDC_EDIT4,zak.szDtPriem);

GetDlgItemText(IDC_EDIT5,zak.sxDtSrok);

GetDlgItemText(IDC_EDIT1,Buff);

if (Buff == "")

{

AfxMessageBox(("Поле номера записи не заполнено!"),MB_OK);

goto __Kon;

}

else

{

zSQL = "SELECT Заявка.Номер_заявки FROM Заявка WHERE (((Заявка.Номер_заявки)=" + Buff + "));";

recset.Open(CRecordset::forwardOnly, zSQL, CRecordset::readOnly);

if(!recset.IsEOF())

{

AfxMessageBox(("Заявка с данным номером уже существует!"),MB_OK);

goto __Kon;

}

}

recset.Close();

zak.iZajav = atoi(Buff);

GetDlgItemText(IDC_EDIT2,Buff);

if (Buff == "")

{

AfxMessageBox(("Поле компании клиента не заполнено!"),MB_OK);

goto __Kon;

}

else

{

zSQL = "SELECT Клиенты.[Код_компании] FROM Клиенты WHERE (((Клиенты.Название)='" + Buff + "'));";

recset.Open(CRecordset::forwardOnly, zSQL, CRecordset::readOnly);

if(!recset.IsEOF())

recset.GetFieldValue("Код_компании", Buff);

else

{

AfxMessageBox(("Компания клиент не найдена!"),MB_OK);

goto __Kon;

}

zak.iKlient = atoi(Buff);

}

recset.Close();

if (Buff == "")

{

AfxMessageBox(("Поле контактного лица не заполнено!"),MB_OK);

goto __Kon;

}

else

{

zSQL = "SELECT [Контактные лица].[Код контактного лица], [Контактные лица].[Код предприятия] FROM [Контактные лица] WHERE ((([Контактные лица].ФИО)='" + Buff + "'));";

recset.Open(CRecordset::forwardOnly, zSQL, CRecordset::readOnly);

if(!recset.IsEOF())

{

recset.GetFieldValue("Код контактного лица", Buff);

recset.GetFieldValue("Код предприятия", Buff2);

}

else

{

AfxMessageBox(("Контактное лицо не найдено!"),MB_OK);

goto __Kon;

}

if(atoi(Buff2) != zak.iKlient)

{

AfxMessageBox(("Контактное лицо является представителем другой компании!"),MB_OK);

goto __Kon;

}

else

{

zak.KL = atoi(Buff);

}

}

recset.Close();

/////////////////Добавление в базу данных

Buff.Format(_T("%d"), zak.iZajav);

zSQL = "INSERT INTO Заявка (Номер_заявки,Код_клиента,Код_контактного_лица,Дата_получения,Срок_выполнения) VALUES (" + Buff + ",";

Buff.Format(_T("%d"), zak.iKlient);

zSQL = zSQL + Buff + ",";

Buff.Format(_T("%d"), zak.KL);

zSQL = zSQL + Buff + ",'" + zak.szDtPriem + "','" + zak.sxDtSrok + "')";

db.ExecuteSQL(zSQL);

}

CATCH_ALL(e)

{

}

END_CATCH_ALL

__Kon:

db.Close();

}

void CWinAddZajav::OnCancel()

{

CDialog::OnCancel();

}

//Файл «WinAddObr.cpp»

#include "stdafx.h"

#include "АМР оператора СЦ.h"

#include "WinAddObr.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

CString Buff3, Buff4,zSQL2,Obor,Ingen;

CDatabase db2;

CRecordset recset2(&db2);

bool bms3;

CString lpszConnect2 =

_T("Driver={Microsoft Access Driver (*.mdb)};DSN='';DBQ=C:\\Program Files\\АРМ оператора СЦ\\База данных.mdb;");

void CWinAddObr::OnButton1()

{

GetDlgItemText(IDC_EDIT9,Buff3);

if (Buff3 == "")

{AfxMessageBox(("Заполните поле серийного номера"),MB_OK);

}

else

{

TRY

{

db2.OpenEx(lpszConnect2, CDatabase::noOdbcDialog);

zSQL2 = "SELECT Оборудование.SN, Оборудование.[Тип оборудования], Оборудование.Марка, Оборудование.Модель"

" FROM Оборудование"

" WHERE (((Оборудование.SN)=" + Buff3 + "));";

recset2.Open(CRecordset::forwardOnly, zSQL2, CRecordset::readOnly);

if (!recset2.IsEOF())

{

recset2.GetFieldValue("Тип оборудования", Buff4);

SetDlgItemText(IDC_EDIT6,Buff4);

recset2.GetFieldValue("Марка", Buff4);

SetDlgItemText(IDC_EDIT7,Buff4);

recset2.GetFieldValue("Модель", Buff4);

SetDlgItemText(IDC_EDIT8,Buff4);

}

else

{

AfxMessageBox(("Оборудование не найдено"),MB_OK);

SetDlgItemText(IDC_EDIT9,"");

}

}

recset2.Close();

CATCH_ALL(e)

{

}

END_CATCH_ALL

db2.Close();

}

}

void CWinAddObr::OnButton2()

{

bms3 = true;

GetDlgItemText(IDC_EDIT6,Buff3);

if (Buff3 == "")

{bms3 = false;}

GetDlgItemText(IDC_EDIT7,Buff3);

if (Buff3 == "")

{

bms3 = false;

}

GetDlgItemText(IDC_EDIT8,Buff3);

if (Buff3 == "")

{

bms3 = false;

}

GetDlgItemText(IDC_EDIT9,Buff3);

if (Buff3 == "")

{bms3 = false;}

if (!bms3)

{AfxMessageBox(("Не все поля заполнены"),MB_OK);}

else

{

TRY

{

zSQL2 = "SELECT Оборудование.SN"

" FROM Оборудование"

" WHERE (((Оборудование.SN)=[]));";

db2.ExecuteSQL(zSQL2);

if (!recset2.IsEOF())

{

recset2.Close();

AfxMessageBox(("Оборудование с данным серийным номером уже существует в базе данных.\n Для просмотра нажмите поиск."),MB_OK);

}

else

{

recset2.Close();

db2.OpenEx(lpszConnect2, CDatabase::noOdbcDialog);

GetDlgItemText(IDC_EDIT6,Buff3);

zSQL2 = "INSERT INTO Оборудование ([Тип оборудования], Марка, Модель, SN) VALUES ('" + Buff3 + "','";

GetDlgItemText(IDC_EDIT7,Buff3);

zSQL2 = zSQL2 + Buff3 + "','";

GetDlgItemText(IDC_EDIT8,Buff3);

zSQL2 = zSQL2 + Buff3 + "','";

GetDlgItemText(IDC_EDIT9,Buff3);

zSQL2 = zSQL2 + Buff3 + "')";

db2.ExecuteSQL(zSQL2);

}

}

CATCH_ALL(e)

{

}

END_CATCH_ALL

db2.Close();

AfxMessageBox(("Оборудование добавлено"),MB_OK);

}

}

void CWinAddObr::OnButton3()

{

SetDlgItemText(IDC_EDIT6,"");

SetDlgItemText(IDC_EDIT7,"");

SetDlgItemText(IDC_EDIT8,"");

SetDlgItemText(IDC_EDIT9,"");

}

void CWinAddObr::OnButton4()

{

SetDlgItemText(IDC_EDIT10,"");

SetDlgItemText(IDC_EDIT11,"");

SetDlgItemText(IDC_EDIT12,"");

}

void CWinAddObr::OnButton5()

{

bms3 = true;

GetDlgItemText(IDC_EDIT10,Buff3);

if (Buff3 == "")

{

bms3 = false;

}

GetDlgItemText(IDC_EDIT11,Buff3);

if (Buff3 == "")

{

bms3 = false;

}

GetDlgItemText(IDC_EDIT12,Buff3);

if (Buff3 == "")

{

bms3 = false;

}

if (!bms3)

{

AfxMessageBox(("Не все поля заполнены"),MB_OK);

}

else

{

TRY

{

db2.OpenEx(lpszConnect2, CDatabase::noOdbcDialog);

GetDlgItemText(IDC_EDIT10,Buff3);

zSQL2 = "SELECT Гарантии.[Номер гарантийного талона] "

"FROM Гарантии "

"WHERE (((Гарантии.[Номер гарантийного талона])=" + Buff3 + "));";

recset2.Open(CRecordset::forwardOnly, zSQL2, CRecordset::readOnly);

if (!recset2.IsEOF())

{

recset2.Close();

AfxMessageBox(("Гарантийный талон с данным номером уже существует в базе данных.\n Для просмотра нажмите поиск."),MB_OK);

}

else

{

recset2.Close();

GetDlgItemText(IDC_EDIT10,Buff3);

zSQL2 = "INSERT INTO Гарантии ([Номер гарантийного талона], [Дата выдачи], [Срок гарантии]) VALUES (" + Buff3 + ",'";

GetDlgItemText(IDC_EDIT11,Buff3);

zSQL2 = zSQL2 + Buff3 + "','";

GetDlgItemText(IDC_EDIT12,Buff3);

zSQL2 = zSQL2 + Buff3 + "');";

db2.ExecuteSQL(zSQL2);

AfxMessageBox(("Гарантийный талон сохранен"),MB_OK);

}

}

CATCH_ALL(e)

{}

END_CATCH_ALL

db2.Close();

}}

void CWinAddObr::OnButton6()

{

TRY

{

db2.OpenEx(lpszConnect2, CDatabase::noOdbcDialog);

GetDlgItemText(IDC_EDIT10,Buff3);

if (Buff3 == "")

{

AfxMessageBox(("Введите номер гарантийного талона"),MB_OK);

}

else

{

zSQL2 = "SELECT Гарантии.[Номер гарантийного талона], Гарантии.[Дата выдачи], Гарантии.[Срок гарантии] "

"FROM Гарантии "

"WHERE (((Гарантии.[Номер гарантийного талона])=" + Buff3 + "));";

recset2.Open(CRecordset::forwardOnly, zSQL2, CRecordset::readOnly);

if (recset2.IsEOF())

{

AfxMessageBox(("Гарантийный талон с данным номером в базе данных не сохранен"),MB_OK);

}

else

{

recset2.GetFieldValue("Дата выдачи", Buff4);

SetDlgItemText(IDC_EDIT11,Buff4);

recset2.GetFieldValue("Срок гарантии", Buff4);

SetDlgItemText(IDC_EDIT12,Buff4);

}

}

}

recset2.Close();

CATCH_ALL(e)

{

}

END_CATCH_ALL

db2.Close();}

void CWinAddObr::OnButton7()

{

TRY

{

db2.OpenEx(lpszConnect2, CDatabase::noOdbcDialog);

GetDlgItemText(IDC_EDIT9,Buff3);

if (Buff3 == "")

{

AfxMessageBox(("Поле серийного номера оборудования не заполненено"),MB_OK);

goto __m6;

}

zSQL2 = "SELECT Оборудование.[Код оборудования] "

"FROM Оборудование "

"WHERE (((Оборудование.SN)=" + Buff3 + "));";

recset2.Open(CRecordset::forwardOnly, zSQL2, CRecordset::readOnly);

if (recset2.IsEOF())

{

AfxMessageBox(("Оборудование с данным серийным номером не найдено"),MB_OK);

recset2.Close();

goto __m6;

}

else

{

recset2.GetFieldValue("Код оборудования",Obor);

recset2.Close();

}

GetDlgItemText(IDC_EDIT1,Buff3);

if (Buff3 == "")

{

AfxMessageBox(("Поле номера расписки не заполненено"),MB_OK);

goto __m6;

}

zSQL2 = "SELECT [Ремонт оборудования].[Номер расписки] "

"FROM [Ремонт оборудования] "

"WHERE ((([Ремонт оборудования].[Номер расписки])=" + Buff3 + "));";

recset2.Open(CRecordset::forwardOnly, zSQL2, CRecordset::readOnly);

if (!recset2.IsEOF())

{

AfxMessageBox(("Расписка с данным номером уже использовалась"),MB_OK);

recset2.Close();

goto __m6;

}

recset2.Close();

GetDlgItemText(IDC_EDIT2,Buff3);

if (Buff3 == "")

{

AfxMessageBox(("Поле номера заявки не заполненено"),MB_OK);

goto __m6;

}

zSQL2 = "SELECT Заявка.Номер_заявки "

"FROM Заявка "

"WHERE (((Заявка.Номер_заявки)=" + Buff3 + "));";

recset2.Open(CRecordset::forwardOnly, zSQL2, CRecordset::readOnly);

if (recset2.IsEOF())

{

AfxMessageBox(("Заявка с данным номером не существует"),MB_OK);

recset2.Close();

goto __m6;

}

recset2.Close();

GetDlgItemText(IDC_EDIT3,Buff3);

if (Buff3 == "")

{

AfxMessageBox(("Поле фамилии инженера не заполнено"),MB_OK);

goto __m6;

}

zSQL2 = "SELECT Инженер.[Код инженера] "

"FROM Инженер "

"WHERE (((Инженер.[Ф И О])='" + Buff3 + "'));";

recset2.Open(CRecordset::forwardOnly, zSQL2, CRecordset::readOnly);

if (recset2.IsEOF())

{

AfxMessageBox(("Инженер не найден"),MB_OK);

recset2.Close();

goto __m6;

}

else

{

recset2.GetFieldValue("Код инженера",Ingen);

recset2.Close();

}

GetDlgItemText(IDC_EDIT5,Buff3);

zSQL2 = "INSERT INTO Неисправность ([Признаки неисправности])"

"VALUES ('" + Buff3 + "')";

db2.ExecuteSQL(zSQL2);

zSQL2 = "SELECT Неисправность.[Код неисправности]"

" FROM Неисправность"

" ORDER BY Неисправность.[Код неисправности] DESC;";

recset2.Open(CRecordset::forwardOnly, zSQL2, CRecordset::readOnly);

recset2.GetFieldValue("Код неисправности", Buff4);

recset2.Close();

GetDlgItemText(IDC_EDIT10,Buff3);

if (Buff3 != "")

{

GetDlgItemText(IDC_EDIT1,Buff3);

zSQL2 = "INSERT INTO [Ремонт оборудования] ([Номер расписки], [Код заявки], Оборудование, [Код неисправности], Инженер, [Дата приема], [Гарантия до ремонта]) "

"VALUES (" + Buff3 + ",";

GetDlgItemText(IDC_EDIT2,Buff3);

zSQL2 = zSQL2 + Buff3 + "," + Obor + "," + Buff4 + "," + Ingen + ",'";

GetDlgItemText(IDC_EDIT4,Buff3);

GetDlgItemText(IDC_EDIT10,Buff4);

zSQL2 = zSQL2 + Buff3 + "'," + Buff4 + ")";

db2.ExecuteSQL(zSQL2);

AfxMessageBox(("Добавлено"),MB_OK);

}

else

{

GetDlgItemText(IDC_EDIT1,Buff3);

zSQL2 = "INSERT INTO [Ремонт оборудования] ([Номер расписки], [Код заявки], Оборудование, [Код неисправности], Инженер, [Дата приема]) "

"VALUES (" + Buff3 + ",";

GetDlgItemText(IDC_EDIT2,Buff3);

zSQL2 = zSQL2 + Buff3 + "," + Obor + "," + Buff4 + "," + Ingen + ",'";

GetDlgItemText(IDC_EDIT4,Buff3);

zSQL2 = zSQL2 + Buff3 + "')";

db2.ExecuteSQL(zSQL2);

AfxMessageBox(("Добавлено"),MB_OK);

}

}

CATCH_ALL(e)

{

}

END_CATCH_ALL

__m6:

db2.Close();

}

void CWinAddObr::OnButton8()

{

SetDlgItemText(IDC_EDIT1,"");

SetDlgItemText(IDC_EDIT2,"");

SetDlgItemText(IDC_EDIT3,"");

SetDlgItemText(IDC_EDIT4,"");

SetDlgItemText(IDC_EDIT5,"");

}

void CWinAddObr::OnOK()

{}

void CWinAddObr::OnCancel()

{

CDialog::OnCancel();}

void CWinAddObr::OnButton9()

{

TRY

{

db2.OpenEx(lpszConnect2, CDatabase::noOdbcDialog);

GetDlgItemText(IDC_EDIT9, Buff3);

if (Buff3 == "")

{

AfxMessageBox(("Поле серийного номера оборудования не заполненено"),MB_OK);

recset2.Close();

goto __m5;

}

zSQL2 = "SELECT Оборудование.SN "

"FROM Оборудование "

"WHERE (((Оборудование.SN)=" + Buff3 + "));";

recset2.Open(CRecordset::forwardOnly, zSQL2, CRecordset::readOnly);

if (recset2.IsEOF())

{

AfxMessageBox(("Оборудование с данным серийным номером не найдено"),MB_OK);

recset2.Close();

goto __m5;

}

recset2.Close();

GetDlgItemText(IDC_EDIT1, Buff3);

if (Buff3 == "")

{

AfxMessageBox(("Поле номера расписки не заполненено"),MB_OK);

recset2.Close();

goto __m5;

}

zSQL2 = "SELECT [Ремонт оборудования].[Номер расписки] "

"FROM [Ремонт оборудования] "

"WHERE ((([Ремонт оборудования].[Номер расписки])=" + Buff3 + "));";

recset2.Open(CRecordset::forwardOnly, zSQL2, CRecordset::readOnly);

if (!recset2.IsEOF())

{

AfxMessageBox(("Расписка с данным номером уже использовалась"),MB_OK);

recset2.Close();

goto __m5;

}

recset2.Close();

GetDlgItemText(IDC_EDIT2, Buff3);

if (Buff3 == "")

{

AfxMessageBox(("Поле номера заявки не заполненено"),MB_OK);

recset2.Close();

goto __m5;

}

zSQL2 = "SELECT Заявка.Номер_заявки "

"FROM Заявка "

"WHERE (((Заявка.Номер_заявки)=" + Buff3 + "));";

recset2.Open(CRecordset::forwardOnly, zSQL2, CRecordset::readOnly);

if (recset2.IsEOF())

{

AfxMessageBox(("Заявка с данным номером не существует"),MB_OK);

recset2.Close();

goto __m5;

}

recset2.Close();

GetDlgItemText(IDC_EDIT3, Buff3);

if (Buff3 == "")

{

AfxMessageBox(("Поле фамилии инженера не заполненено"),MB_OK);

recset2.Close();

goto __m5;

}

zSQL2 = "SELECT Инженер.[Ф И О] "

"FROM Инженер "

"WHERE (((Инженер.[Ф И О])='" + Buff3 + "'));";

recset2.Open(CRecordset::forwardOnly, zSQL2, CRecordset::readOnly);

if (recset2.IsEOF())

{

AfxMessageBox(("Инженер не найден"),MB_OK);

recset2.Close();

goto __m5;

}

recset2.Close();

}

CATCH_ALL(e)

{ }

END_CATCH_ALL

__m5:

db2.Close();

}

//Файл «WinDiag.cpp»

#include "stdafx.h"

#include "АМР оператора СЦ.h"

#include "WinDiag.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

CDatabase db4;

CRecordset recset4(&db4);

CString zSQL4,lpszConnect4 =

_T("Driver={Microsoft Access Driver (*.mdb)};DSN='';DBQ=C:\\Program Files\\АМР оператора СЦ\\База данных.mdb;");

CString Buff8, Buff9;

void CWinDiag::OnButton1()

{

SetDlgItemText(IDC_EDIT1,"");

SetDlgItemText(IDC_EDIT2,"");

SetDlgItemText(IDC_EDIT3,"");

SetDlgItemText(IDC_EDIT4,"");}

void CWinDiag::OnButton2()

{

TRY

{

db4.OpenEx(lpszConnect4, CDatabase::noOdbcDialog);

GetDlgItemText(IDC_EDIT1, Buff8);

GetDlgItemText(IDC_EDIT3, Buff9);

if (Buff8 == "" && Buff9 == "")

{

AfxMessageBox(("Заполните поле номера расписки или серийного номера оборудования"),MB_OK);

goto _m7;}

if (Buff8 != "")

{

zSQL4 = "SELECT Оборудование.[Тип оборудования], Оборудование.Марка, Оборудование.Модель, Оборудование.SN, [Ремонт оборудования].[Номер расписки], Неисправность.[Признаки неисправности]"

" FROM Неисправность INNER JOIN (Оборудование INNER JOIN [Ремонт оборудования] ON Оборудование.[Код оборудования] = [Ремонт оборудования].Оборудование) ON Неисправность.[Код неисправности] = [Ремонт оборудования].[Код неисправности]"

" WHERE ((([Ремонт оборудования].[Номер расписки])=" + Buff8 + ") AND (([Ремонт оборудования].Выполнено)=False));";

}

else

if (Buff9 != "")

{

zSQL4 = "SELECT Оборудование.[Тип оборудования], Оборудование.Марка, Оборудование.Модель, Оборудование.SN, [Ремонт оборудования].[Номер расписки], Неисправность.[Признаки неисправности]"

" FROM Неисправность INNER JOIN (Оборудование INNER JOIN [Ремонт оборудования] ON Оборудование.[Код оборудования] = [Ремонт оборудования].Оборудование) ON Неисправность.[Код неисправности] = [Ремонт оборудования].[Код неисправности]"

" WHERE (((Оборудование.SN)=" + Buff9 + ") AND (([Ремонт оборудования].Выполнено)=False));";

}

recset4.Open(CRecordset::forwardOnly, zSQL4, CRecordset::readOnly);

if (!recset4.IsEOF())

{

recset4.GetFieldValue("Тип оборудования", Buff8);

Buff9 = Buff8;

recset4.GetFieldValue("Марка", Buff8);

Buff9 = Buff9 + " " + Buff8 + " ";

recset4.GetFieldValue("Модель", Buff8);

Buff9 = Buff9 + Buff8;

SetDlgItemText(IDC_EDIT2, Buff9);

recset4.GetFieldValue("SN", Buff8);

SetDlgItemText(IDC_EDIT3, Buff8);

recset4.GetFieldValue("Номер расписки", Buff8);

SetDlgItemText(IDC_EDIT1, Buff8);

recset4.GetFieldValue("Признаки неисправности", Buff8);

SetDlgItemText(IDC_EDIT4, Buff8);

}

else

{

AfxMessageBox(("Оборудование не найдено"),MB_OK);}

recset4.Close();}

CATCH_ALL(e)

{}

END_CATCH_ALL

_m7:

db4.Close();}

void CWinDiag::OnCancel()

{

CDialog::OnCancel();}

void CWinDiag::OnOK()

{

TRY

{

db4.OpenEx(lpszConnect4, CDatabase::noOdbcDialog);

GetDlgItemText(IDC_EDIT1, Buff8);

if (Buff8 == "")

{

AfxMessageBox(("Оборудование не выбрано"),MB_OK);

}

else

{

zSQL4 = "SELECT [Ремонт оборудования].[Код неисправности]"

" FROM [Ремонт оборудования]"

" WHERE ((([Ремонт оборудования].[Номер расписки])=" + Buff8 + ") AND (([Ремонт оборудования].[Выполнено])=False));";

recset4.Open(CRecordset::forwardOnly, zSQL4, CRecordset::readOnly);

if (recset4.IsEOF())

{

AfxMessageBox(("Данного оборудования нет в списке ожидающих ремонта"),MB_OK);

recset4.Close();

}

else

{

recset4.GetFieldValue("Код неисправности", Buff9);


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

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