Разработка АИС по принятию и обработке заявок
Проектирование базы данных системы принятия, обработки и учёта заявок в отдел информационных технологий; разработка инфологической и даталогической моделей, реализация физической модели. Создание приложений для визуализации работы с базой данных.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 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