Разработка АИС по принятию и обработке заявок

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

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

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

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

1. В Interbase 2010 появилась 64-х-битная архитектура, благодаря чему разработчикам удалось достигнуть значительного увеличения объемов контентно-адресуемой памяти. Это позволяет преодолеть ограничения на размер таблиц и размер обрабатываемых данных.

2. Появилась возможность вызова функций Dynamic SQL в хранимых процедурах и триггерах.

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

4. Безопасность данных. Программа поддерживает пароли длиной до 32 байт и использует алгоритм криптографического хеширования SHA-1, что является важным аргументом при взаимодействии ПО, например, с платежными системами.

5. Работа в облаке. СУБД Interbase 2010 развертывается в Cloud Computing (среде облачных вычислений), что позволяет приложению получать мгновенный доступ к ресурсам.

Традиционным достоинством считается кроссплатформенность -- InterBase поддерживает GNU/Linux, Microsoft Windows, Unix и Solaris.

3.2.1.3 Firebird (FirebirdSQL)

Firebird (FirebirdSQL) -- компактная, кроссплатформенная, свободная система управления базами данных (СУБД), работающая на GNU/Linux, Microsoft Windows и разнообразных Unix платформах.

В качестве преимуществ Firebird можно отметить многоверсионную архитектуру, обеспечивающую параллельную обработку оперативных и аналитических запросов (это возможно потому, что читающие пользователи не блокируют пишущих), компактность (дистрибутив 5Mb), высокую эффективность и мощную языковую поддержку для хранимых процедур и триггеров. Firebird используется в различных промышленных системах с 2001 г. Это коммерчески независимый проект C и C++ программистов, технических советников и разработчиков мультиплатформенных систем управления базами данных, основанный на исходном тексте, выпущенном корпорацией Borland 25 июля 2000 года в виде свободной версии Interbase 6.0. Среди недостатков перечислятся отсутствие кеша результатов запросов, индексов fulltext для полнотекстового поиска.

Основные изменения последней версии Firebird (2.5):

1. Управление пользователями через SQL (CREATE USER/ALTER USER/DROP USER).

2. Модификация представлений через инструкции ALTER VIEW и CREATE OR ALTER VIEW.

3. Возможность изменять вычисляемые поля ALTER COLUMN.

4. Оператор SIMILAR TO позволяет проверять регулярные выражения в условии WHERE, CHECK и в операторе * IF расширения PSQL.

3.2.1.4 MySQL

MySQL -- свободная система управления базами данных (СУБД). MySQL является собственностью компании Sun Microsystems (http://ru.sun.com/), осуществляющей разработку и поддержку приложения. Распространяется под GNU General Public License и под собственной коммерческой лицензией, на выбор. Помимо этого компания MySQL AB разрабатывает функциональность по заказу лицензионных пользователей, именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации.

MySQL портирована на большое количество платформ: AIX, BSDi, FreeBSD, HP-UX, GNU/Linux, Mac OS X, NetBSD, OpenBSD, OS/2 Warp, SGI IRIX, Solaris, SunOS, SCO OpenServer, SCO UnixWare, Tru64, Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, Windows Server 2003 и Windows Vista. Существует также порт MySQL к OpenVMS. Важно отметить, что компания MySQL AB предоставляет для свободной загрузки не только исходные коды СУБД, но и откомпилированные и оптимизированные под конкретные операционные системы готовые исполняемые модули, которые можно загрузить с зеркал, представленных на официальном сайте (http://dev.mysql.com/downloads/). MySQL имеет API для языков Delphi, C, C++, Эйфель, Java, Лисп, Perl, PHP, Python, Ruby, Smalltalk и Tcl, библиотеки для языков платформы .NET, а также обеспечивает поддержку для ODBC посредством ODBC-драйвера MyODBC.

3.2.2 Язык программирования и среда разработки

В качестве языка программирования и среды разработки были выбраны - Visual Basic.NET и Microsoft Visual Studio 2008. Метод выбора заключался в уровне знаний языка и среды программирования, необходимых для выполнения работы.

Visual Basic .NET (VB.NET) -- это объектно-ориентированный язык программирования. Microsoft Visual Studio 2008 -- это мощная и настраиваемая среда программирования, которая содержит все инструменты, необходимые для быстрого и эффективного создания надежных программ для Windows. Большинство возможностей Visual Studio можно одинаково использовать в Visual Basic .NET, Visual C++ .NET, Visual C# .NET и Visual J# .NET.

3.2.3 Вывод

Поскольку существующая программно-аппаратная среда предприятия построена на базе решений Microsoft, будет достаточным выбрать в качестве СУБД Microsoft SQL Server 2008 R2. В качестве языка программирования и среды разработки выбраны - Visual Basic.NET и Microsoft Visual Studio 2008.

4. Решение задачи

4.1 Создание модели ИС

Для проведения анализа и реорганизации бизнес - процессов предназначено CASE-средство верхнего уровня AllFusion Process Modeler r7.1.

Построение модели информационной системы начинается с описания функционирования системы в целом в виде контекстной диаграммы. На рисунке П1.1. представлена контекстная диаграмма «Деятельность отдела ИТ по принятию и обработке заявок» в стандарте IDEF0.

После описания контекстной диаграммы проводится функциональная декомпозиция - система разбивается на подсистемы и каждая подсистема описывается отдельно (диаграммы декомпозиции). Затем каждая подсистема разбивается на более мелкие и так далее до достижения нужной степени подробности. В результате такого разбиения, каждый фрагмент системы изображается на отдельной диаграмме декомпозиции.

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

Диаграмма работы «Принять заявку» изображена на рисунке П1.3. Диаграмма работы «Рассмотрение заявки» изображена на рисунке П1.4. Диаграмма работы «Управление» изображена на рисунке П1.5.

4.2 Проектирование базы данных

4.2.1 Инфологическая модель данных

В ходе анализа предметной области были выделены следующие сущности:

Заявка (Номер заявки, Идентификатор инцидента, Идентификатор исполнителя, Идентификатор приоритета, Идентификатор статуса, ФИО заявителя, Номер телефона заявителя, Время открытия, Время закрытия, Время выполнения, Номер заявителя, Имя ПК, Номер кабинета, Удалена, Отклонена)

Данные заявки (Номер заявки, Образ данных)

Комментарий заявки (Номер заявки, Время комментария, Комментарий)

Также в предметной области выделены следующие справочники:

Тип инцидента (Идентификатор, Имя инцидента)

Статус заявки (Идентификатор, Имя статуса)

Приоритет заявки (Идентификатор, Имя приоритета)

Исполнитель (Идентификатор, Имя исполнителя)

Описанные выше сущности образуют связи, описанные в таблице 4.1.

Таблица 4.1

Связи между сущностями

Сущность

Тип связи

Сущность

Тип инцидента

Один - ко многим

Заявка

Статус заявки

Один - ко многим

Заявка

Приоритет заявки

Один - ко многим

Заявка

Исполнитель

Один - ко многим

Заявка

Заявка

Один - к одному

Данные заявки

Заявка

Один - к одному

Комментарий заявки

На рисунке 4.1. представлена инфологическая модель данных, разработанная при помощи AllFusion ERwin Data Modeler r7.2.

Описанные выше сущности образуют связи, описанные в таблице 4.1.

4.2.2 Даталогическая модель данных

На основе инфологической модели была разработана даталогическая модель (рисунок 4.2.).

Рисунок 4.1. Инфологическая модель данных

Для хранения экземпляров выделенных сущностей создана база данных со структурой, приведённой ниже. Каждой сущности предметной области соответствует одна таблица базы данных.

Рисунок 4.2 Даталогическая модель данных

admins - соответствует сущности Исполнитель

Таблица 4.2

Таблица admins

Наименование поля

Тип поля

Описание

id_users

Счетчик

Идентификатор

admin

Текстовый (50)

Имя исполнителя

attach - соответствует сущности Данные заявки

Таблица 4.3

Таблица attach

Наименование поля

Тип поля

Описание

id_ticket

Счетчик

Идентификатор

image

Двоичные данные

Образ данных

comments - соответствует сущности Комментарий

Таблица 4.4

Таблица comments

Наименование поля

Тип поля

Описание

id_ticket

Счетчик

Идентификатор

dt_comments

Дата и время

Время комментария

comments

Текстовый

Комментарий

incident - соответствует сущности Тип инцидента

Таблица 4.5

Таблица incident

Наименование поля

Тип поля

Описание

id_incident

Счетчик

Идентификатор

name_incident

Текстовый (50)

Имя инцидента

priority - соответствует сущности Приоритет заявки

Таблица 4.6

Таблица priority

Наименование поля

Тип поля

Описание

id_priority

Счетчик

Идентификатор

name_priority

Текстовый (20)

Приоритет

status - соответствует сущности Статус заявки

Таблица 4.7

Таблица status

Наименование поля

Тип поля

Описание

id_status

Счетчик

Идентификатор

name_status

Текстовый (20)

Статус

ticket - соответствует сущности Заявка

Таблица 4.8

Таблица ticket

Наименование поля

Тип поля

Описание

id_ticket

Счетчик

Идентификатор

id_incident

Числовой

Идентификатор инцидента

id_status

Числовой

Идентификатор статуса

id_priority

Числовой

Идентификатор приоритета

id_users

Числовой

Идентификатор исполнителя

fio

Текстовый (50)

Системное имя заявителя

phone

Текстовый (20)

Номер телефона

open_ticket

Дата и время

Время открытия

close_ticket

Дата и время

Время закрытия

work_time

Дата и время

Время выполнения

tabel

Числовой

Номер заявителя

pc_inv

Текстовый (50)

Имя ПК

room

Числовой

Номер кабинета

deleted

Логический

Удалена или нет

otklon

Логический

Отклонена или нет

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

На рисунке 4.3. изображена физическая модель данных, разработанная в AllFusion ERwin Data Modeler r7.2.

Рисунок 4.3 Физическая модель данных

4.2.4 Построение схемы данных

На рисунке 4.4. приведен список таблиц, реализованных в Microsoft SQL Server 2008

Рисунок 4.4 Список таблиц БД

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

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

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

Связь устанавливается между полями таблиц (между первичным ключом основной таблицы и внешним ключом подчиненной таблицы).

Рисунок 4.5 Схема данных

4.3 Разработка интерфейса

4.3.1 Приложение «Заявки - Пользователь»

4.3.1.1 Главное окно

Главное окно приложения «Заявки - Пользователь» изображено на рисунке 4.6. Позволяет создать заявку в отдел ИТ. Заполнение всех полей формы обязательно, за исключением снимка экрана. Имя пользователя и сетевое имя компьютера заполняются автоматически. Приложение отображает заявки созданные пользователем с компьютера, на котором запущено приложение. Количество отображаемых заявок изменяется в настройках. Для просмотра заявки необходимо выполнить двойной клик указателем мышь на заявке.

Рис 4.6 Главное окно приложения «Заявки - Пользователь»

4.3.1.2 Окно «Настройки»

Окно «Настройки» приложения «Заявки - Пользователь» изображено на рисунке 4.7. Форма содержит поля для ввода имени сервера БД, имени БД, количества отображаемых заявок и интервал обновления списка заявок.

Рис. 4.7 Окно «Настройки» приложения «Заявки - Пользователь»

4.3.1.3 Окно заявки

Окно «Заявка» в приложении «Заявки - Пользователь» изображено на рисунке 4.8. Для открытия окна заявки необходимо выполнить двойной клик указателем мышь по заявке в главном окне.

Рис. 4.8 Окно «Заявка» в приложении «Заявки - Пользователь»

4.3.1.4 Окно «Снимок экрана»

Окно «Снимок экрана» в приложении «Заявки - Пользователь» изображено на рисунке 4.9.

Рис. 4.9 Окно «Снимок экрана» в приложении «Заявки - Пользователь»

4.3.2 Приложение «Заявки - Оператор»

4.3.2.1 Главное окно

Главное окно в приложении «Заявки - Оператор» изображено на рисунке 4.10. Дает пользователю информацию по заявкам, поступившим в систему, отображает закрытые (выполненные) заявки. Для открытия заявки и просмотра данных необходимо выполнить двойной клик указателем мышь на заявке.

Рис. 4.10 Главное окно в приложении «Заявки - Оператор»

При сворачивании окна приложение прячется в системный трей (рисунок 4.11).

Рисунок 4.11

При получении новой заявки на экран выводится всплывающее сообщение (рисунок 4.12.), если приложение свернуто, то оно выводится на экран.

Рисунок 4.12

4.3.2.2 Окно «Заявка»

Окно «Заявка» в приложении «Заявки - Оператор» изображено на рисунке 4.13. Отображает информацию для принятия решения о назначении исполнителя или отклонении заявки. Позволяет назначить исполнителя и указать приоритетность заявки.

Рис. 4.13 Окно «Заявка» в приложении «Заявки - Оператор»

4.3.2.3 Окно настроек

Окно «Настройки» в приложении «Заявки - Оператор» изображено на рисунке 4.14. Форма содержит поля для ввода имени сервера БД, имени БД, времени обновления списка заявок.

Рис. 4.14 Окно «Настройки» в приложении «Заявки - Оператор»

4.3.2.4 Окно «Снимок экрана»

Окно «Снимок экрана» в приложении «Заявки - Оператор» изображено на рисунке 4.15.

Рис. 4.15 Окно «Снимок экрана» в приложении «Заявки - Оператор»

4.3.3 Приложение «Заявки - Исполнитель»

4.3.3.1 Главное окно

Главное окно в приложении «Заявки - Исполнитель» изображено на рисунке 4.16. Отображает списки заявок по приоритетности.

Рис. 4.16 Главное окно в приложении «Заявки - Исполнитель»

При сворачивании окна приложение прячется в системный трей (рисунок 4.17.).

Рисунок 4.17

При получении новой заявки на экран выводится всплывающее сообщение (рисунок 4.18.), если приложение свернуто, то оно выводится на экран.

Рисунок 4.18

4.3.3.2 Окно «Настройки»

Окно «Настройки» в приложении «Заявки - Исполнитель» изображено на рисунке 4.19. Форма содержит поля для ввода имени сервера БД, имени БД, времени обновления списка заявок.

Рис. 4.19 Окно «Настройки» в приложении «Заявки - Исполнитель»

4.3.3.3. Окно «Заявка»

Окно «Заявка» в приложении «Заявки - Исполнитель» изображено на рисунке 4.20.

Рис. 4.20 Окно «Заявка» в приложении «Заявки - Исполнитель»

4.3.3.4 Окно «Снимок экрана»

Окно «Снимок экрана» в приложении «Заявки - Исполнитель» изображено на рисунке 4.21.

Рис. 4.21 Окно «Снимок экрана» в приложении «Заявки - Исполнитель»

4.3.4 Приложение «Заявки - Настройка»

4.3.4.1 Главное окно

Главное окно в приложении «Заявки - Настройка» изображено на рисунке 4.22.

Рисунок 4.22 Главное окно в приложении «Заявки - Настройка»

4.3.4.2 Окно «Инциденты»

Окно «Инциденты» в приложении «Заявки - Настройка» изображено на рисунке 4.23. Форма отображает информацию о типах инцидентов в системе и позволяет добавить новые типы инцидентов.

Рисунок 4.23 Окно «Инциденты» в приложении «Заявки - Настройка»

4.3.4.3 Окно «Исполнители»

Окно «Исполнители» в приложении «Заявки - Настройка» изображено на рисунке 4.24. Форма отображает информацию об исполнителях и позволяет добавить в систему новых исполнителей.

Рисунок 4.24 Окно «Исполнители» в приложении «Заявки - Настройка»

4.3.4.4 Окно «Настройка БД»

Окно «Настройка БД» в приложении «Заявки - Настройка» изображено на рисунке 4.25. Форма содержит поля для ввода имени сервера БД, имени БД.

Рисунок 4.25 Окно «Настройка БД» в приложении «Заявки - Настройка»

При начальной настройке системы для создания пустой базы данных необходимо в окне «Настройка БД» нажать кнопку «Создать базу данных». При успешном создании БД на экран выведется соответствующее сообщение.

4.3.4.5 Окно «Очистка БД за период»

Окно «Очистка БД за период» в приложении «Заявки - Настройка» изображено на рисунке 4.26. Дает возможность удалить заявки из базы данных или установить статус «Удалена» за определенный период.

Рисунок 4.26 Окно «Очистка БД за период» в приложении «Заявки - Настройка»

4.3.4.6 Окно «Очистка всей БД»

Окно «Очистка всей БД» в приложении «Заявки - Настройка» изображено на рисунке 4.27. Дает возможность удалить все заявки из базы данных или установить статус «Удалена».

Рисунок 4.27 Окно «Очистка всей БД» в приложении «Заявки - Настройка»

4.3.4.7 Окно «Отчеты»

Окно «Отчеты» в приложении «Заявки - Настройка» изображено на рисунке 4.28. Дает возможность формировать отчеты по заявкам в системе, включая заявки со статусом «Удалена». Отчеты формируются в документы Microsoft Word. Примеры отчетов находятся в Приложении 2.

Рисунок 4.28. Окно «Отчеты» в приложении «Заявки - Настройка»

5. Результаты испытаний

Тестирование производилось под управлением операционной системы Microsoft Windows XP Professional Service Pack 3, Microsoft Windows 7 Professional Service Pack 1. В качестве СУБД выступал Microsoft SQL Server 2008 R2 Standard Edition. В качестве пакета приложений Microsoft Office, необходимого для формирования отчетов выступал Microsoft Office 2007. В ходе тестирования были проверены все функции системы. Ошибок выявлено не было.

Заключение

В ходе выполнения работы:

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

* Разработаны соответствующие приложения для визуализации работы с базой данных.

Поставленная задача выполнена полностью.

Список источников

1. http://www.itsmonline.ru/software/for.php - Независимый ITSM-портал, зарубежные ITSM-системы.

2. http://www.itsmonline.ru/software/native.php - Независимый ITSM-портал, отечественные ITSM-системы.

3. «ITIL Поддержка услуг», Ай-Теко, ISBN 0-11-330948-1.

4. http://www.community.terrasoft.ru/bc/practice/5072 - ИТ-менеджмент начинается с Service Desk, Александр Злотко,Руководитель направления Terrasoft Service Desk.

5. http://www.interface.ru/home.asp?artId=2373 - ИТ-отдел: как бороться с ленью, Илья Штефан.

6. http://admina.net.kg/article/100-helpdesk.html - Help Desk

7. http://www.itsmonline.ru/phparticles/show_news_one.php?n_id=231 -Управление изменениями с помощью регламентации, Сергей Рубцов, 2005

8. http://www.iteam.ru/publications/it/section_51/article_1977 - Опыт использования стандарта IDEF0, Сергей Рубцов

Приложение 1

Диаграмма «Деятельность отдела ИТ по принятию и обработке заявок»

Рисунок П 1.1 Контекстная диаграмма «Деятельность отдела ИТ по принятию и обработке заявок»

Рисунок П 1.2 Диаграмма верхнего уровня «Деятельность отдела ИТ по принятию и обработке заявок»

Рисунок П 1.3 Диаграмма декомпозиции «Принять заявку»

Рисунок П1.4. Диаграмма декомпозиции «Рассмотрение заявки»

Рисунок П 1.5 Диаграмма декомпозиции «Управление»

Приложение 2

Отчет о невыполненных заявках - 14.06.2012 4:04:24

Номер

Пользователь

Инцидент

Текст заявки

1

1831-00-325

Отсутствуют сетевые диски

Нет диска G

3

1831-00-478

Проблема с принтером

Печатает с полосой

5

1831-00-784

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

Новое место

6

1831-00-045

Проблема с принтером

Не печатает

7

1831-00-657

Не открывается файл

G:\obmen\вася.txt

8

1831-00-465

Проблема с электронной почтой

Много спама

9

1831-00-479

Телефония

Не работает телефон

11

1831-00-478

Проблема с компьютером

Не загружается windows

13

1831-00-657

Перемещение техники

Переключить принтер

14

1831-00-479

Другое

Не могу подписать файл

15

1831-00-112

Проблема с электронной почтой

Проблемная почта

Всего заявок - 12

Всего типов инцидентов - 9

Всего пользователей - 9

Отчет о выполненных заявках - 14.06.2012 4:08:00 за период - с 07.06.2012 20:06:47 по 14.06.2012 0:00:00

Номер

Пользователь

Инцидент

2

1831-00-112

Проблема с компьютером

4

1831-00-953

Проблема с интернетом

10

user

Отсутствуют сетевые диски

12

user

Проблема с сетью

16

1831-00-045

Отсутствуют сетевые диски

Всего заявок - 5

Всего типов инцидентов - 4

Всего пользователей - 4

Отчет о заявках по исполнителям - 14.06.2012 4:10:57 за период - с 07.06.2012 20:06:47 по 14.06.2012 0:00:00

Кычанов В.П.

31831-00-478 Проблема с принтером

61831-00-045 Проблема с принтером

91831-00-479 Телефония

111831-00-478 Проблема с компьютером

131831-00-657 Перемещение техники

Миронов В.В.

11831-00-325 Отсутствуют сетевые диски

51831-00-784 Создание нового рабочего места

71831-00-657 Не открывается файл

141831-00-479 Другое

Тестовый

21831-00-112 Проблема с компьютером

41831-00-953 Проблема с интернетом

81831-00-465 Проблема с электронной почтой

10user Отсутствуют сетевые диски

12user Проблема с сетью

151831-00-112 Проблема с электронной почтой

161831-00-045 Отсутствуют сетевые диски

Отчет об отклоненных заявках - 14.06.2012 4:12:15 за период - с 07.06.2012 20:06:47 по 14.06.2012 0:00:00

Номер

Пользователь

Инцидент

Текст заявки

17

Не назначен

Проблема с компьютером

Не включается

Всего заявок - 1

Всего типов инцидентов - 1

Всего пользователей - 1

Приложение 3. Коды программ

«Заявки - Пользователь»

Public Class Form1

Dim server As String

Dim StartDate As String = "19811121 00:00:00"

Dim time As String = "00:00:00"

Dim PC As String = My.Computer.Name

Dim USR As String = Split(My.User.Name, "\")(1)

Dim img_path As String =

My.Computer.FileSystem.SpecialDirectories.Temp

Public srv As String = Split(GetSettings(), "%")(0)

Public it_db As String = Split(GetSettings(), "%")(1)

Public refr_time As String = Split(GetSettings(), "%")(2)

Public ticket_count As String = Split(GetSettings(), "%")(3)

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles MyBase.Load

Me.MaximizeBox = False

Timer1.Interval = CInt(refr_time) * 1000

tbox_user.Text = USR

tbox_pc.Text = PC

If srv <> "1" And it_db <> "1" Then

If TestConnect(srv, "master") Then

If TestConnect(srv, it_db) Then

FillForm()

Else

MsgBox("Не найдена база данных. Обратитесь к администратору за

именем базы данных", MsgBoxStyle.Information, "Информация")

Dim result As MsgBoxResult = MsgBox("Изменить базу данных?",

MsgBoxStyle.OkCancel, "Информация")

If result = MsgBoxResult.Ok Then

Form2.Visible = True

Me.Enabled = False

End If

End If

Else

MsgBox("Не правильные настройки. SQL Server не найден",

MsgBoxStyle.Information, "Информация")

Dim result As MsgBoxResult = MsgBox("Выполнить настройку?",

MsgBoxStyle.OkCancel, "Сообщение")

If result = MsgBoxResult.Ok Then

Form2.Visible = True

Me.Enabled = False

End If

End If

Else

Dim result As MsgBoxResult = MsgBox("Программа не настроена.

Настроить?", MsgBoxStyle.OkCancel, "Сообщение")

If result = MsgBoxResult.Ok Then

Form2.Visible = True

Me.Enabled = False

End If

End If

End Sub

Private Sub picbox_screen_Click(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles picbox_screen.Click

GetPrintSceen()

End Sub

Private Sub button_create_Click(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles button_create.Click

If srv <> "1" And it_db <> "1" Then

If TestConnect(srv, it_db) Then

Dim con_string As String = "Data Source=" & srv & ";Initial Catalog=" &

it_db & ";Integrated Security=True"

Dim SqlAdapter1 As New SqlClient.SqlDataAdapter

Dim DataSet1 As New DataSet

Dim SqlConnection1 As New SqlClient.SqlConnection

SqlConnection1.ConnectionString = con_string

Dim SqlCommand1 As New SqlClient.SqlCommand

If tbox_room.Text = "" Then

tbox_room.BackColor = Color.Red

End If

If tbox_phone.Text = "" Then

tbox_phone.BackColor = Color.Red

End If

If (cbox_priority.SelectedIndex = -1) Or (cbox_priority.Text = "") Or _

(cbox_priority.SelectedItem <> cbox_priority.Text) Then

cbox_priority.BackColor = Color.Red

End If

If (cbox_type.SelectedIndex = -1) Or (cbox_type.Text = "") Or _

(cbox_type.SelectedItem <> cbox_type.Text) Then

cbox_type.BackColor = Color.Red

End If

If tbox_ticket.Text = "" Then

tbox_ticket.BackColor = Color.Red

End If

If (tbox_room.Text <> "") And (tbox_phone.Text <> "") And

(tbox_ticket.Text <> "") And _

(cbox_priority.SelectedIndex > -1) And (cbox_priority.SelectedItem =

cbox_priority.Text) And _

(cbox_type.SelectedIndex > -1) And (cbox_type.SelectedItem =

cbox_type.Text) Then

Dim dn As String = GetDateNowString()

Dim cmd As String = _

"INSERT INTO [ticket] " & _

"([fio],[phone],[id_incident],[id_priority]," & _

"[id_status],[id_users],[open_ticket],[close_ticket]," & _

"[work_time],[tabel],[pc_inv],[room],[deleted],[otklon]) " & _

"VALUES ('" & _

tbox_user.Text & "','" & _

tbox_phone.Text & "'," & _

CStr(cbox_type.SelectedIndex + 1) & "," & _

CStr(cbox_priority.SelectedIndex + 1) & "," & _

"1" & "," & _

"-1" & "," & _

"CONVERT(datetime,'" & dn & "',12)" & "," & _

"CONVERT(datetime,'" & StartDate & "',12)" & "," & _

"CONVERT(time,'" & time & "',12)" & "," & _

"1" & ",'" & tbox_pc.Text & "','" & tbox_room.Text & "','0','0')"

SqlCommand1.CommandText = cmd

SqlAdapter1.InsertCommand = SqlCommand1

SqlAdapter1.InsertCommand.Connection = SqlConnection1

SqlAdapter1.InsertCommand.Connection.Open()

SqlAdapter1.InsertCommand.ExecuteNonQuery()

SqlAdapter1.InsertCommand.Connection.Close()

Dim l_id As Integer = GetLastID()

FillComment(l_id, "----Пользователь----" & vbCrLf &

tbox_ticket.Text.ToString, dn)

Dim attach As String = img_path & "\img_zayavka_" & CStr(l_id) & ".jpg"

Try

picbox_screen.Image.Save(attach,

System.Drawing.Imaging.ImageFormat.Jpeg)

Catch ex As Exception

picbox_screen.ErrorImage.Save(attach,

System.Drawing.Imaging.ImageFormat.Jpeg)

End Try

FillAttach(l_id, attach)

My.Computer.FileSystem.DeleteFile(attach)

clearText()

MsgBox("Заявка создана", MsgBoxStyle.Information, "Сообщение")

If Not CheckBox1.Checked Then

FillDataGridView(srv, it_db)

End If

End If

End If

Try

picbox_screen.Image = picbox_screen.ErrorImage

picbox_screen.Refresh()

Catch ex As Exception

End Try

Else

Dim result As MsgBoxResult = MsgBox("Программа не настроена.

Настроить?", MsgBoxStyle.OkCancel, "Сообщение")

If result = MsgBoxResult.Ok Then

Form2.Visible = True

Me.Enabled = False

End If

End If

End Sub

Private Sub tbox_room_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles tbox_room.Click

tbox_room.BackColor = Color.White

End Sub

Private Sub cbox_priority_Click(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles cbox_priority.Click

cbox_priority.BackColor = Color.White

End Sub

Private Sub tbox_phone_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles tbox_phone.Click

tbox_phone.BackColor = Color.White

End Sub

Private Sub cbox_type_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles cbox_type.Click

cbox_type.BackColor = Color.White

End Sub

Private Sub tbox_ticket_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles tbox_ticket.Click

tbox_ticket.BackColor = Color.White

End Sub

Private Function GetDateNowString() As String

Dim sd, sm, sy, sh, sn, ss As String

Dim dn As Date = DateAndTime.Now

If DateAndTime.Hour(dn) < 10 Then

sh = "0" + DateAndTime.Hour(dn).ToString

Else

sh = DateAndTime.Hour(dn).ToString

End If

If DateAndTime.Minute(dn) < 10 Then

sn = "0" + DateAndTime.Minute(dn).ToString

Else

sn = DateAndTime.Minute(dn).ToString

End If

If DateAndTime.Second(dn) < 10 Then

ss = "0" + DateAndTime.Second(dn).ToString

Else

ss = DateAndTime.Second(dn).ToString

End If

sy = DateAndTime.Year(dn).ToString

If DateAndTime.Month(dn) < 10 Then

sm = "0" + DateAndTime.Month(dn).ToString

Else

sm = DateAndTime.Month(dn).ToString

End If

If DateAndTime.Day(dn) < 10 Then

sd = "0" + DateAndTime.Day(dn).ToString

Else

sd = DateAndTime.Day(dn).ToString

End If

GetDateNowString = sy & sm & sd & " " & sh & ":" & sn & ":" & ss

End Function

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Timer1.Tick

If srv <> "1" And it_db <> "1" Then

If TestConnect(srv, it_db) Then

FillDataGridView(srv, it_db)

End If

End If

End Sub

Private Sub FillDataGridView(ByVal server As String, ByVal DBN As

String)

Dim SqlAdapter2 As New SqlClient.SqlDataAdapter

Dim DataSet2 As New DataSet

Dim con_string As String = "Data Source=" & server & ";Initial Catalog="

& DBN & ";Integrated Security=True"

Dim SqlConnection2 As New SqlClient.SqlConnection

Dim c_row, c_col As Integer

Dim cmd As String = "SELECT TOP " & ticket_count & " [id_ticket]" & _

",[id_status]" & _

",[id_users]" & _

",[open_ticket]" & _

",[close_ticket]" & _

",[id_incident]" & _

"FROM [ticket] where fio like '" & USR & "' and PC_inv like '" & _

PC & "' and deleted = 0 and otklon = 0 ORDER BY [ID_ticket] DESC"

SqlConnection2.ConnectionString = con_string

Dim SqlCommand2 As New SqlClient.SqlCommand

SqlCommand2.CommandText = cmd

SqlAdapter2.SelectCommand = SqlCommand2

SqlAdapter2.SelectCommand.Connection = SqlConnection2

Try

SqlAdapter2.SelectCommand.Connection.Open()

SqlAdapter2.Fill(DataSet2)

c_row = DataSet2.Tables.Item(0).Rows.Count

c_col = DataSet2.Tables.Item(0).Columns.Count

If c_row > 0 Then

DataGridView1.RowCount = c_row

DataGridView1.ColumnCount = c_col

DataGridView1.Columns.Item(0).HeaderText = "Номер заявки"

DataGridView1.Columns.Item(1).HeaderText = "Статус заявки"

DataGridView1.Columns.Item(2).HeaderText = "Исполнитель"

DataGridView1.Columns.Item(3).HeaderText = "Открыта"

DataGridView1.Columns.Item(4).HeaderText = "Закрыта"

DataGridView1.Columns.Item(5).HeaderText = "Тип инцидента"

For i = 1 To c_row

For j = 1 To c_col

If j = 2 Then

DataGridView1.Item(j - 1, i - 1).Value =

GetStatus(DataSet2.Tables.Item(0).Rows.Item(i - 1).Item(j - 1))

Else

If j = 3 Then

DataGridView1.Item(j - 1, i - 1).Value =

GetAdmin(DataSet2.Tables.Item(0).Rows.Item(i - 1).Item(j - 1))

Else

If j = 5 Then

If DataSet2.Tables.Item(0).Rows.Item(i - 1).Item(j - 1).ToString =

"21.11.1981 0:00:00" Then

DataGridView1.Item(j - 1, i - 1).Value = "Не закрыта"

Else

DataGridView1.Item(j - 1, i - 1).Value =

DataSet2.Tables.Item(0).Rows.Item(i - 1).Item(j - 1).ToString

End If

Else

If j = 6 Then

DataGridView1.Item(j - 1, i - 1).Value =

GetIncident(DataSet2.Tables.Item(0).Rows.Item(i - 1).Item(j - 1))

Else

DataGridView1.Item(j - 1, i - 1).Value =

DataSet2.Tables.Item(0).Rows.Item(i - 1).Item(j - 1).ToString

End If

End If

End If

End If

Next

Next

End If

SqlAdapter2.SelectCommand.Connection.Close()

Catch ex As Exception

End Try

End Sub

Private Sub clearText()

tbox_room.Text = ""

tbox_pc.Text = PC

tbox_pc.ReadOnly = True

tbox_user.Text = USR

tbox_user.ReadOnly = True

CheckBox1.Checked = False

tbox_phone.Text = ""

tbox_ticket.Text = ""

cbox_priority.Text = ""

cbox_type.Text = ""

End Sub

Private Function GetStatus(ByVal id As Integer) As String

Dim con_string As String = "Data Source=" & srv & ";Initial Catalog=" &

it_db & ";Integrated Security=True"

Dim SqlAdapter2 As New SqlClient.SqlDataAdapter

Dim DataSet2 As New DataSet

Dim SqlConnection2 As New SqlClient.SqlConnection

Dim cmd As String = "SELECT [name_status]" & _

"FROM [status] where id_status = " & CStr(id)

SqlConnection2.ConnectionString = con_string

Dim SqlCommand2 As New SqlClient.SqlCommand

SqlCommand2.CommandText = cmd

SqlAdapter2.SelectCommand = SqlCommand2

SqlAdapter2.SelectCommand.Connection = SqlConnection2

SqlAdapter2.SelectCommand.Connection.Open()

SqlAdapter2.Fill(DataSet2)

GetStatus = DataSet2.Tables.Item(0).Rows.Item(0).Item(0)

SqlAdapter2.SelectCommand.Connection.Close()

End Function

Private Function GetAdmin(ByVal id As Integer) As String

Dim con_string As String = "Data Source=" & srv & ";Initial Catalog=" &

it_db & ";Integrated Security=True"

Dim SqlAdapter2 As New SqlClient.SqlDataAdapter

Dim DataSet2 As New DataSet

Dim SqlConnection2 As New SqlClient.SqlConnection

Dim cmd As String = "SELECT [admin]" & _

"FROM [admins] where id_users = " & CStr(id)

SqlConnection2.ConnectionString = con_string

Dim SqlCommand2 As New SqlClient.SqlCommand

SqlCommand2.CommandText = cmd

SqlAdapter2.SelectCommand = SqlCommand2

SqlAdapter2.SelectCommand.Connection = SqlConnection2

SqlAdapter2.SelectCommand.Connection.Open()

SqlAdapter2.Fill(DataSet2)

GetAdmin = DataSet2.Tables.Item(0).Rows.Item(0).Item(0)

SqlAdapter2.SelectCommand.Connection.Close()

End Function

Private Function GetIncident(ByVal id As Integer) As String

Dim con_string As String = "Data Source=" & srv & ";Initial Catalog=" &

it_db & ";Integrated Security=True"

Dim SqlAdapter2 As New SqlClient.SqlDataAdapter

Dim DataSet2 As New DataSet

Dim SqlConnection2 As New SqlClient.SqlConnection

Dim cmd As String = "SELECT [name_incident]" & _

"FROM [incident] where id_incident = " & CStr(id)

SqlConnection2.ConnectionString = con_string

Dim SqlCommand2 As New SqlClient.SqlCommand

SqlCommand2.CommandText = cmd

SqlAdapter2.SelectCommand = SqlCommand2

SqlAdapter2.SelectCommand.Connection = SqlConnection2

SqlAdapter2.SelectCommand.Connection.Open()

SqlAdapter2.Fill(DataSet2)

GetIncident = DataSet2.Tables.Item(0).Rows.Item(0).Item(0)

SqlAdapter2.SelectCommand.Connection.Close()

End Function

Private Function GetComment(ByVal id As Integer) As String

Dim con_string As String = "Data Source=" & srv & ";Initial Catalog=" &

it_db & ";Integrated Security=True"

Dim SqlAdapter2 As New SqlClient.SqlDataAdapter

Dim DataSet2 As New DataSet

Dim SqlConnection2 As New SqlClient.SqlConnection

Dim cmd As String = "SELECT [comments]" & _

"FROM [comments] where id_ticket = " & CStr(id)

SqlConnection2.ConnectionString = con_string

Dim SqlCommand2 As New SqlClient.SqlCommand

SqlCommand2.CommandText = cmd

SqlAdapter2.SelectCommand = SqlCommand2

SqlAdapter2.SelectCommand.Connection = SqlConnection2

SqlAdapter2.SelectCommand.Connection.Open()

SqlAdapter2.Fill(DataSet2)

GetComment = DataSet2.Tables.Item(0).Rows.Item(0).Item(0)

SqlAdapter2.SelectCommand.Connection.Close()

End Function

Private Function GetLastID() As Integer

Dim con_string As String = "Data Source=" & srv & ";Initial Catalog=" &

it_db & ";Integrated Security=True"

Dim SqlAdapter2 As New SqlClient.SqlDataAdapter

Dim DataSet2 As New DataSet

Dim SqlConnection2 As New SqlClient.SqlConnection

Dim cmd As String = "select MAX(id_ticket) as id_ticket from ticket " & _

"where fio like '" & tbox_user.Text & "' and " & _

"pc_inv like '" & tbox_pc.Text & "'"

SqlConnection2.ConnectionString = con_string

Dim SqlCommand2 As New SqlClient.SqlCommand

SqlCommand2.CommandText = cmd

SqlAdapter2.SelectCommand = SqlCommand2

SqlAdapter2.SelectCommand.Connection = SqlConnection2

SqlAdapter2.SelectCommand.Connection.Open()

SqlAdapter2.Fill(DataSet2)

GetLastID = DataSet2.Tables.Item(0).Rows.Item(0).Item(0)

SqlAdapter2.SelectCommand.Connection.Close()

End Function

Private Sub FillComment(ByVal id As Integer, ByVal comment As String,

ByVal dn As String)

Dim con_string As String = "Data Source=" & srv & ";Initial Catalog=" &

it_db & ";Integrated Security=True"

Dim SqlAdapter1 As New SqlClient.SqlDataAdapter

Dim DataSet1 As New DataSet

Dim SqlConnection1 As New SqlClient.SqlConnection

SqlConnection1.ConnectionString = con_string

Dim SqlCommand1 As New SqlClient.SqlCommand

Dim cmd As String = _

"INSERT INTO [comments]" & _

"([id_ticket]" & _

",[dt_comments]" & _

",[comments])" & _

"VALUES" & _

"(" & CStr(id) & ",CONVERT(datetime,'" & dn & "'),'" & comment & "')"

tbox_ticket.Text = cmd

SqlCommand1.CommandText = cmd

SqlAdapter1.InsertCommand = SqlCommand1

SqlAdapter1.InsertCommand.Connection = SqlConnection1

SqlAdapter1.InsertCommand.Connection.Open()

SqlAdapter1.InsertCommand.ExecuteNonQuery()

SqlAdapter1.InsertCommand.Connection.Close()

End Sub

Private Sub FillAttach(ByVal id As Integer, ByVal attach As String)

Dim con_string As String = "Data Source=" & srv & ";Initial Catalog=" &

it_db & ";Integrated Security=True"

Dim SqlAdapter1 As New SqlClient.SqlDataAdapter

Dim DataSet1 As New DataSet

Dim SqlConnection1 As New SqlClient.SqlConnection

SqlConnection1.ConnectionString = con_string

Dim SqlCommand1 As New SqlClient.SqlCommand

Dim cmd As String = _

"INSERT INTO [attach] (" & _

"[id_ticket],[image]) " & _

"VALUES (" & id & ",0x0)"

SqlCommand1.CommandText = cmd

SqlAdapter1.InsertCommand = SqlCommand1

SqlAdapter1.InsertCommand.Connection = SqlConnection1

SqlAdapter1.InsertCommand.Connection.Open()

SqlAdapter1.InsertCommand.ExecuteNonQuery()

SqlAdapter1.InsertCommand.Connection.Close()

File2SqlBlob(attach, id)

End Sub

Private Sub File2SqlBlob(ByVal SourceFilePath As String, ByVal id As

Integer)

Dim con_string As String = "Data Source=" & srv & ";Initial Catalog=" &

it_db & ";Integrated Security=True"

Dim cn As New SqlClient.SqlConnection(con_string)

Dim cmd As New SqlClient.SqlCommand("UPDATE attach SET

Image=@Image WHERE id_ticket=" & CStr(id), cn)

Dim fs As New System.IO.FileStream(SourceFilePath, IO.FileMode.Open,

IO.FileAccess.Read)

Dim b(fs.Length() - 1) As Byte

fs.Read(b, 0, b.Length)

fs.Close()

Dim P As New SqlClient.SqlParameter("@Image", SqlDbType.Image,

b.Length, ParameterDirection.Input, False, 0, 0, Nothing,

DataRowVersion.Current, b)

cmd.Parameters.Add(P)

cn.Open()

cmd.ExecuteNonQuery()

cn.Close()

End Sub

Private Sub SqlBlob2File(ByVal DestFilePath As String, ByVal id As

Integer)

Dim con_string As String = "Data Source=" & srv & ";Initial Catalog=" &

it_db & ";Integrated Security=True"

Dim PictureCol As Integer = 0

Dim cn As New SqlClient.SqlConnection(con_string)

Dim cmd As New SqlClient.SqlCommand("SELECT image FROM attach

WHERE id_ticket=" & CStr(id), cn)

cn.Open()

Dim dr As SqlClient.SqlDataReader = cmd.ExecuteReader()

dr.Read()

Dim b(dr.GetBytes(PictureCol, 0, Nothing, 0, Integer.MaxValue) - 1) As

Byte

dr.GetBytes(PictureCol, 0, b, 0, b.Length)

dr.Close()

cn.Close()

Dim fs As New System.IO.FileStream(DestFilePath, IO.FileMode.Create,

IO.FileAccess.Write)

fs.Write(b, 0, b.Length)

fs.Close()

End Sub

Private Sub GetPrintSceen()

Me.Hide()

Threading.Thread.Sleep(1000)

Dim bmpScreenShot As Bitmap

Dim gfxScreenshot As Graphics

bmpScreenShot = New Bitmap(Screen.PrimaryScreen.Bounds.Width,

Screen.PrimaryScreen.Bounds.Height,

Imaging.PixelFormat.Format32bppArgb)

gfxScreenshot = Graphics.FromImage(bmpScreenShot)

gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X,

Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size,

CopyPixelOperation.SourceCopy)

picbox_screen.Image = bmpScreenShot

Me.Show()

End Sub

Private Sub LinkLabel1_LinkClicked(ByVal sender As System.Object,

ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs)

Handles LinkLabel1.LinkClicked

Form2.Visible = True

Form2.Activate()

End Sub

Function TestConnect(ByVal server As String, ByVal DBN As String) As

Boolean

Dim con_string As String = "Data Source=" & server & ";Initial Catalog="

& DBN & ";Integrated Security=True"

Dim result As String = ""

Try

Dim cn As New SqlClient.SqlConnection(con_string)

cn.Open()

cn.Close()

Catch ex As Exception

result = ex.Message

End Try

If result = "" Then

TestConnect = True

Else

TestConnect = False

End If

End Function

Sub FillForm()

Dim con_string As String = "Data Source=" & srv & ";Initial Catalog=" &

it_db & ";Integrated Security=True"

FillDataGridView(srv, it_db)

Dim SqlAdapter1 As New SqlClient.SqlDataAdapter

Dim DataSet1 As New DataSet

Dim SqlConnection1 As New SqlClient.SqlConnection

SqlConnection1.ConnectionString = con_string

Dim SqlCommand1 As New SqlClient.SqlCommand

SqlCommand1.CommandText = "select * from incident"

SqlAdapter1.SelectCommand = SqlCommand1

SqlAdapter1.SelectCommand.Connection = SqlConnection1

Dim c_row As Integer

Try

SqlAdapter1.SelectCommand.Connection.Open()

SqlAdapter1.Fill(DataSet1)

c_row = DataSet1.Tables.Item(0).Rows.Count

cbox_type.Items.Clear()

For i = 1 To c_row

cbox_type.Items.Add(DataSet1.Tables.Item(0).Rows.Item(i - 1).Item(1))

Next

SqlAdapter1.SelectCommand.Connection.Close()

Catch ex As Exception

End Try

Dim SqlAdapter2 As New SqlClient.SqlDataAdapter

Dim DataSet2 As New DataSet

Dim SqlConnection2 As New SqlClient.SqlConnection

SqlConnection2.ConnectionString = con_string

Dim SqlCommand2 As New SqlClient.SqlCommand

SqlCommand2.CommandText = "select * from priority"

SqlAdapter2.SelectCommand = SqlCommand2

SqlAdapter2.SelectCommand.Connection = SqlConnection2

Try

SqlAdapter2.SelectCommand.Connection.Open()

SqlAdapter2.Fill(DataSet2)

c_row = DataSet2.Tables.Item(0).Rows.Count

cbox_priority.Items.Clear()

For i = 1 To c_row

cbox_priority.Items.Add(DataSet2.Tables.Item(0).Rows.Item(i - 1).Item(1))

Next

SqlAdapter2.SelectCommand.Connection.Close()

Catch ex As Exception

End Try

'GetPrintSceen()

End Sub

Function GetSettings() As String

Dim s As String = "1%1%30%10"

Dim r As Object

If My.Computer.FileSystem.FileExists(My.Application.Info.DirectoryPath

& "\settings.ini") Then

r =

My.Computer.FileSystem.OpenTextFileReader(My.Application.Info.Direct

oryPath & "\settings.ini")

s = r.ReadLine

r.Close()

If s = "" Then s = "1%1%30%10"

End If

GetSettings = s

End Function

Private Sub Form1_FormClosed(ByVal sender As System.Object, ByVal e

As System.Windows.Forms.FormClosedEventArgs) Handles

MyBase.FormClosed

Dim wr As Object

If My.Computer.FileSystem.FileExists(My.Application.Info.DirectoryPath

& "\settings.ini") Then

My.Computer.FileSystem.DeleteFile(My.Application.Info.DirectoryPath &

"\settings.ini")

End If

wr =

My.Computer.FileSystem.OpenTextFileWriter(My.Application.Info.Directo

ryPath & "\settings.ini", False)

wr.WriteLine(srv & "%" & it_db & "%" & refr_time & "%" & ticket_count)

wr.Close()

End Sub

Private Sub DataGridView1_CellDoubleClick(ByVal sender As

System.Object, ByVal e As

System.Windows.Forms.DataGridViewCellEventArgs) Handles

DataGridView1.CellDoubleClick

Dim cur_row As Integer = DataGridView1.CurrentRow.Index

Dim cur_id_value As Integer = DataGridView1.Item(0, cur_row).Value

Dim cur_inc_value As String = DataGridView1.Item(5, cur_row).Value

OpenTicket(cur_id_value, cur_inc_value)

End Sub

Sub OpenTicket(ByVal id As Integer, ByVal id_inc As String)

Form3.Visible = True

Form3.Activate()

Form3.l_id.Text = "Заявка №" & CStr(id)

Form3.l_incident.Text = "Тип инцидента - " & id_inc

Form3.tbox_ticket.Text = GetComment(id)

End Sub

Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged

If CheckBox1.Checked Then

tbox_pc.Text = ""

tbox_pc.ReadOnly = False

tbox_user.ReadOnly = False

Else

tbox_pc.Text = PC

tbox_user.Text = USR

tbox_pc.ReadOnly = True

tbox_user.ReadOnly = True

End If

End Sub

End Class

Public Class Form2

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button2.Click

If (tbox_server.Text = "") Then

tbox_server.BackColor = Color.Red

If tbox_DB.Text = "" Then tbox_DB.BackColor = Color.Red

Else

If tbox_DB.Text = "" Then

tbox_DB.BackColor = Color.Red

Else

If Form1.TestConnect(tbox_server.Text, tbox_DB.Text) Then

If tbox_refresh_t.Text = "" Then tbox_refresh_t.Text = "30"

SaveSettings(tbox_server.Text, tbox_DB.Text, tbox_refresh_t.Text,

tbox_count_tick.Text)

Me.Close()

Form1.FillForm()

Else

Dim result As MsgBoxResult = MsgBox("Не правильные настройки!

Повторить?", MsgBoxStyle.OkCancel, "Информация")

If result = MsgBoxResult.Ok Then

tbox_server.BackColor = Color.Red

tbox_DB.BackColor = Color.Red

End If

End If

End If

End If

End Sub

Private Sub Form2_FormClosed(ByVal sender As System.Object, ByVal e

As System.Windows.Forms.FormClosedEventArgs) Handles

MyBase.FormClosed

Form1.Enabled = True

End Sub

Private Sub SaveSettings(ByVal server As String, ByVal DBN As String,

ByVal refr_tm As String, ByVal c_tick As String)

Form1.srv = server

Form1.it_db = DBN

Form1.refr_time = refr_tm

Form1.ticket_count = c_tick

End Sub

Private Sub tbox_server_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles tbox_server.Click

tbox_server.BackColor = Color.White

End Sub

Private Sub tbox_DB_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles tbox_DB.Click

tbox_DB.BackColor = Color.White

End Sub

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles MyBase.Load

tbox_server.Text = Form1.srv

tbox_DB.Text = Form1.it_db

tbox_refresh_t.Text = Form1.refr_time

tbox_count_tick.Text = Form1.ticket_count

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button1.Click

If Form1.TestConnect(tbox_server.Text, tbox_DB.Text) Then

MsgBox("Соединение успешно установлено", MsgBoxStyle.Information,

"Сообщение")

Else

MsgBox("Неправильные настройки", MsgBoxStyle.Information,

"Сообщение")

End If

End Sub

End Class

Public Class Form3

Private Sub Form3_FormClosed(ByVal sender As System.Object, ByVal e

As System.Windows.Forms.FormClosedEventArgs) Handles

MyBase.FormClosed

Form1.Enabled = True

End Sub

End Class

«Заявки - Оператор»

Public Class Form1

Dim server As String

Dim StartDate As String = "19811121 00:00:00"

Dim PC As String = My.Computer.Name

Dim USR As String = Split(My.User.Name, "\")(1)

Dim img_path As String =

My.Computer.FileSystem.SpecialDirectories.Temp

Public tmp1 As String

Public srv As String = Split(GetSettings(), "%")(0)

Public it_db As String = Split(GetSettings(), "%")(1)

Public refr_time As String = Split(GetSettings(), "%")(2)

Public ticket_count As String = Split(GetSettings(), "%")(3)

Dim c1, c2 As Integer

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles MyBase.Load

Label1.ForeColor = Me.BackColor

Me.MaximizeBox = False

Timer1.Interval = CInt(refr_time) * 1000

If srv <> "1" And it_db <> "1" Then

If TestConnect(srv, "master") Then

If TestConnect(srv, it_db) Then

FillForm()

c1 = DataGridView1.RowCount

c2 = DataGridView2.RowCount

Else

MsgBox("Не найдена база данных. Обратитесь к администратору за

именем базы данных", MsgBoxStyle.Information, "Информация")

Dim result As MsgBoxResult = MsgBox("Изменить базу данных?",

MsgBoxStyle.OkCancel, "Информация")

If result = MsgBoxResult.Ok Then

Form2.Visible = True

Me.Enabled = False

End If

End If

Else

MsgBox("Не правильные настройки. SQL Server не найден",

MsgBoxStyle.Information, "Информация")

Dim result As MsgBoxResult = MsgBox("Выполнить настройку?",

MsgBoxStyle.OkCancel, "Сообщение")

If result = MsgBoxResult.Ok Then

Form2.Visible = True

Me.Enabled = False

End If

End If

Else

Dim result As MsgBoxResult = MsgBox("Программа не настроена.

Настроить?", MsgBoxStyle.OkCancel, "Сообщение")

If result = MsgBoxResult.Ok Then

Form2.Visible = True

Form2.Activate()

Me.Enabled = False

End If

End If

End Sub

Sub FillForm()

FillDataGridView(srv, it_db, DataGridView1, "1")

TabControl1.TabPages.Item(0).Text = "Поступившие (" &

CStr(DataGridView1.RowCount) & ")"

FillDataGridView(srv, it_db, DataGridView2, "5")

TabControl1.TabPages.Item(1).Text = "Закрытые (" &

CStr(DataGridView2.RowCount) & ")"

End Sub

Function GetSettings() As String

Dim s As String = "1%1%30%10"

Dim r As Object

If My.Computer.FileSystem.FileExists(My.Application.Info.DirectoryPath

& "\settings.ini") Then

r =

My.Computer.FileSystem.OpenTextFileReader(My.Application.Info.Direct

oryPath & "\settings.ini")

s = r.ReadLine

r.Close()

If s = "" Then s = "1%1%30%10"

End If

GetSettings = s

End Function

Function TestConnect(ByVal server As String, ByVal DBN As String) As

Boolean

Dim con_string As String = "Data Source=" & server & ";Initial Catalog="

& DBN & ";Integrated Security=True"

Dim result As String = ""

Try

Dim cn As New SqlClient.SqlConnection(con_string)

cn.Open()

cn.Close()

Catch ex As Exception

result = ex.Message

End Try

If result = "" Then

TestConnect = True

Else

TestConnect = False

End If

End Function

Private Sub SqlBlob2File(ByVal DestFilePath As String, ByVal id As

Integer)

Dim con_string As String = "Data Source=" & srv & ";Initial Catalog=" &

it_db & ";Integrated Security=True"

Dim PictureCol As Integer = 0

Dim cn As New SqlClient.SqlConnection(con_string)

Dim cmd As New SqlClient.SqlCommand("SELECT image FROM attach

WHERE id_ticket=" & CStr(id), cn)

cn.Open()

Dim dr As SqlClient.SqlDataReader = cmd.ExecuteReader()

dr.Read()

Dim b(dr.GetBytes(PictureCol, 0, Nothing, 0, Integer.MaxValue) - 1) As

Byte

dr.GetBytes(PictureCol, 0, b, 0, b.Length)

dr.Close()

cn.Close()

Dim fs As New System.IO.FileStream(DestFilePath, IO.FileMode.Create,

IO.FileAccess.Write)

fs.Write(b, 0, b.Length)

fs.Close()

End Sub

Private Function GetComment(ByVal id As Integer) As String

Dim con_string As String = "Data Source=" & srv & ";Initial Catalog=" &

it_db & ";Integrated Security=True"

Dim SqlAdapter2 As New SqlClient.SqlDataAdapter

Dim DataSet2 As New DataSet

Dim SqlConnection2 As New SqlClient.SqlConnection

Dim cmd As String = "SELECT [comments]" & _

"FROM [comments] where id_ticket = " & CStr(id)

SqlConnection2.ConnectionString = con_string

Dim SqlCommand2 As New SqlClient.SqlCommand

SqlCommand2.CommandText = cmd

SqlAdapter2.SelectCommand = SqlCommand2

SqlAdapter2.SelectCommand.Connection = SqlConnection2

SqlAdapter2.SelectCommand.Connection.Open()

SqlAdapter2.Fill(DataSet2)

GetComment = DataSet2.Tables.Item(0).Rows.Item(0).Item(0)

SqlAdapter2.SelectCommand.Connection.Close()

End Function

Private Function GetIncident(ByVal id As Integer) As String

Dim con_string As String = "Data Source=" & srv & ";Initial Catalog=" &

it_db & ";Integrated Security=True"

Dim SqlAdapter2 As New SqlClient.SqlDataAdapter

Dim DataSet2 As New DataSet

Dim SqlConnection2 As New SqlClient.SqlConnection

Dim cmd As String = "SELECT [name_incident]" & _

"FROM [incident] where id_incident = " & CStr(id)

SqlConnection2.ConnectionString = con_string

Dim SqlCommand2 As New SqlClient.SqlCommand

SqlCommand2.CommandText = cmd


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

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

    курсовая работа [2,1 M], добавлен 14.02.2011

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

    курсовая работа [1,6 M], добавлен 22.12.2014

  • Автоматизированные системы учета и обработки заявок от пользователей. Функциональное проектирование и моделирование системы учета. Проектирование базы данных, алгоритм работы системы и ее программная реализация. Технико-экономическое обоснование проекта.

    дипломная работа [1,6 M], добавлен 05.04.2014

  • Даталогическая и инфологическая модели системы управления базой данных футбольного клуба. Обоснование выбора даталогической модели данных. Разработка структуры и системы управления базой данных. Выбор системы программирования, создание форм ввода.

    курсовая работа [406,0 K], добавлен 24.12.2014

  • Построение инфологической (концептуальной) модели предметной области. Проектирование логической и физической структуры базы данных. Реализация проекта в среде конкретной СУБД. Организация корректировки и ввода данных в БД. Разработка интерфейса.

    курсовая работа [1,4 M], добавлен 14.01.2018

  • Разработка автоматизированной системы учета заявок и предоставление туров при помощи MS Access. Построение реляционной схемы базы данных. Создание таблиц и схем данных БД, запросов и отчетов. Использование интернет-маркетинга туристической фирме.

    курсовая работа [5,2 M], добавлен 05.12.2014

  • Разработка базы данных учета и хранения заявок пользователя. Создание программного средства на основе клиент/серверной технологии. Описание возможностей платформы Tandem Framework. Апробация программы автоматизации процессов подачи и обработки заявок.

    дипломная работа [3,6 M], добавлен 08.03.2013

  • Разработка базы данных с помощью Borland С++ Builder6, которая отражает в удобной форме учет автотранспортных средств. Проектирование инфологической, даталогической и физической моделей данных. Функции и процедуры (операции) системы, листинг программы.

    курсовая работа [133,1 K], добавлен 10.11.2011

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

    курсовая работа [1,7 M], добавлен 10.02.2013

  • Разработка информационной и инфологической модели базы данных на тему "Командировка". Выбор модели данных и составление ее концептуальной схемы. Получение доступа к БД средствами Delphi, разработка пользовательского интерфейса. Реализация SQL-запросов.

    реферат [1,2 M], добавлен 16.06.2009

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