Базы данных — это совокупность структур, предназначенных для хранения больших объемов информации и программных модулей, осуществляющих управление данными, их выборку, сортировку и другие подобные действия. Информация базы данных хранится в одной либо нескольких таблицах. Любая таблица с данными состоит из набора однотипных записей, расположенных друг за другом. Они представляют собой строки таблицы, которые можно добавлять, удалять или изменять. Каждая запись является набором именованных полей, или ячеек, которые могут хранить самую разнообразную информацию, начиная от даты рождения и заканчивая подробным описанием домашнего адреса. Однотипные поля разных записей образуют столбец таблицы.
В БелГУТе существует автоматизированная система управления вузом, которая решает ряд определенных задач. Однако все задачи разобщены, но с другой стороны они взаимосвязаны. Так вновь прибывшие сотрудники, в том числе и преподаватели, проходят через отдел кадров, у которого своя система учета и фиксирования рабочих мест и кадров. При смене места работы или должности затрагиваются различные подразделения БелГУТа, которые связаны друг с другом некоторой общей информацией (Бухгалтерия).
Таким образом, появляется необходимость централизации базы данных, дополнения ее информацией.
Для решения поставленной задачи были написаны различные триггеры, фиксирующие любые внесенные изменения, процедуры, выполняющие определенные действия, представления, для удобной визуализации разобщенной информации и клиентское приложение.
1. Проектирование базы данных
1.1 Описание предметной области и требуемых функций
Предметной областью данного курсового проекта является автоматизация и визуализация рабочего места методиста факультета, работающего с личными делами студентов.
При зачислении на каждого студента заполняется личная карточка, в которой указывается информация о факультете, специальности, специализации, фамилии, имени, отчестве поле, дате рождения, о мести проживания, гражданстве, выполняемой общественной работе, образовании, семейном положении, а так же сведенья о родителях. Кроме того к личной карточке студента прилагается фотография. Так же в карточке указывается номер зачетки и номер студенческого билета студента.
Кроме этого необходимо закрепить указанного студента за подгруппой. Так же необходимо внести информацию в случаи изменением данным студентом своей фамилии с указанием причины, по которой эта фамилия сменилась, а так же дату приказа и номер приказа.
Проектирование Базы Данных для коммерческого предприятия
... информации. Первые базы данных в основном применялись в таких фундаментальных науках как, ядерная физика, химия, космонавтика, и других науках требующих систематического подхода к работе с данными. ... примеров приложений нового поколения, которые определяют потребности в новых средствах разработки баз данных и возможностях применения их. Мы рассмотрим кратко пять таких приложений. 1.База ...
Так же методисту факультета необходимо вести учет студентов участвующих в творческой деятельности с указанием вида искусства, а так же результатов, которых студент добился в своей области.
Кроме этого методисту необходимо вести учет студентов, которые выполняют общественную работу на факультете.
Так же методисту факультета необходимо формировать списки студентов по факультету и группе, и учитывать в них статус студента.
При необходимости методисту может произвести поиск студента по заданным критериям, а так же внести в справочники необходимую информацию при изменении каких-либо обстоятельств обучения(например добавлении нового иностранного языка).
1.2 Создание базы данных и ограничений
1 Приводятся структуры таблиц с описанием типа, размера и информации, хранящейся в каждом поле. В этом же разделе выполняется разработка скриптов для создания таблиц и ограничений базы данных.
Структура администрируемых таблиц и справочников приведена в таблицах 1 — 11.
Таблица 1-Student(Студенты БелГУТа).
Столбцы |
Атрибут |
Тип |
Размер |
Ограничение |
|
ID |
Идентификатор |
Длинное целое |
Первичный ключ |
||
Abitur_ID |
Абитуриент |
Длинное целое |
Внешняя ссылка на Abitur (ID) |
||
Last_Name |
Фамилия |
Текстовый |
30 |
||
First_Name |
Имя |
Текстовый |
20 |
||
Middle_Name |
Отчество |
Текстовый |
20 |
||
Initials |
Инициалы |
Текстовый |
10 |
||
Speciality_ID |
Специальность |
Числовой |
Внешняя ссылка на Kind_Speciality (ID) |
||
Personal_File_Number |
Номер личного дела |
Текстовой |
10 |
||
Sex |
Пол |
Текстовый |
3 |
(муж / жен) |
|
Birth_Date |
Дата рождения |
Дата |
Дата |
||
Affiliated_Societies_ID |
УКП (длязаочников) |
Длинное целое |
Внешняя ссылка на Kind _Affiliated_Societies (ID) |
||
Foreign_ID |
Иностранный язык |
Длинное целое |
Внешняя ссылка на Kind_Foreign (ID) |
||
Competition_ID |
Вид конкурса |
Длинное целое |
Внешняя ссылка на Kind_Competition (ID) |
||
Category_Entrant_ID |
Категория поступающего (льготы) |
Длинное целое |
Внешняя ссылка на Kind_Entrant (ID) |
||
Maintenance_ID |
Вид гос. обеспечения |
Длинное целое |
Внешняя ссылка на Kind_Maintenance (ID) |
||
Study_Byelorussian |
Изучал белорусский язык |
Текстовый |
3 |
ограничение (да / нет) |
|
Citizenship_ID |
Гражданство |
Длинное целое |
Внешняя ссылка на Kind_Citizenship (ID) |
||
Marital_Status_ID |
Семейное положение |
Длинное целое |
Внешняя ссылка на Kind_Marital_Status (ID) |
||
City_ID |
Населенный пункт |
Длинное целое |
Внешняя ссылка на Kind_City (ID) |
||
Home_Adress |
Домашний адрес |
Текстовый |
255 |
Улица, дом, квартира |
|
Home_Phone |
Дом. телефон |
Текстовый |
30 |
||
Passport_Series |
Серия паспорта |
Текстовый |
4 |
||
Passport_Number |
Номер паспорта |
Текстовый |
10 |
||
Passport_Department |
Кемвыдан |
Текстовый |
150 |
||
Passport_Date |
Дата выдачи |
Дата |
|||
Militarian_ID |
Отношение к воинской службе |
Длинное целое |
Внешняя ссылка на Kind_Militarian (ID) |
||
Department_Militarian_ID |
Военкомат |
Длинное целое |
Внешняя ссылка на Kind _Department_Militarian (ID) |
||
Made |
Судимость |
Текстовый |
4 |
(есть / нет) |
|
Work_Place |
Место работы |
Текстовый |
255 |
(для заочников) |
|
Work_Post |
Должность |
Текстовый |
255 |
(для заочников) |
|
Work_Phone |
Раб. телефон |
Текстовый |
30 |
(для заочников) |
|
Address_Enterprise |
Адрес предприятия |
Текстовый |
255 |
(для заочников) |
|
General_Experience_ Monthrs |
Стаж месяцев(общий) |
Длинное целое |
|||
Special_Experience_ Monthrs |
Стаж месяцев (спец.) |
Длинное целое |
|||
Record_Book_Number |
Номер зачетки |
Текстовый |
10 |
||
Photo |
Ссылка на файл с Фотографией |
Текстовый |
50 |
||
Gruppa_ID |
Учебная группа |
Длинное целое |
Внешняя ссылка на Kind_Grupp (ID) |
||
Education_Type_ID |
Вид обучения |
Длинное целое |
ВнешняяссылканаKind_Education_Type (ID) |
||
Sub_Gruppa |
Учебная подгруппа |
Целое |
|||
Requires_Hostel |
Нуждается в общежитии |
Текстовый |
3 |
||
Student_Status_ID |
Статус студента |
Длинное целое |
ВнешняяссылканаKind_Student_Status (ID) |
||
Таблица 2- Student_Family(семья студента).
Столбцы |
Атрибут |
Тип |
Размер |
Ограничение |
|
ID |
Идентификатор |
Длинное целое |
Первичный ключ |
||
Student_ID |
Студент |
Длинное целое |
Внешняя ссылка на Student (ID) |
||
Relation_Degree_ID |
Степень родства |
Длинное целое |
Внешняя ссылка на Kind_Relation_Degree (ID) |
||
Middle_Student_ID |
Является ли родственник студентом БелГУТа |
Длинное целое |
Внешняя ссылка на Student (ID) (допускает пустое значение) |
||
Last_Name |
Фамилия |
Текстовый |
30 |
||
First_Name |
Имя |
Текстовый |
20 |
||
Middle_Name |
Отчество |
Текстовый |
20 |
||
Birth_Date |
Дата рождения |
Дата |
|||
Invalid_ID |
Инвалидность родственника |
Длинное целое |
Внешняя ссылка на Kind_Invalid (ID) |
||
Home_Adress |
Дом.адрес |
Текстовый |
255 |
||
Home_Phone |
Дом.телефон |
Текстовый |
30 |
||
Place_Work |
Место работы |
Текстовый |
255 |
||
Post |
Должность |
Текстовый |
255 |
||
Work_Phone |
Раб.телефон |
Текстовый |
30 |
||
Address_Enterprise |
Адрес предприятия |
Текстовый |
255 |
||
Таблица 3 — Student_Last_Name_Modify(данные о смене фамилии студентами).
Столбцы |
Атрибут |
Тип |
Размер |
Ограничение |
|
ID |
Идентификатор |
Длинное целое |
Первичный ключ |
||
Student_ID |
Студент |
Длинное целое |
Внешняя ссылка на Student (ID) |
||
Order_Date |
Дата приказа |
Дата |
|||
Order_Number |
Номер приказа |
Текстовый |
10 |
||
Last_Name_ Modify_ID |
Причина смены фамилии |
Длинное целое |
Внешняя ссылка на Kind_Last_Name_Modify (ID) |
||
Last_Name_Old |
Прежняя фамилия |
Текстовый |
30 |
||
Таблица 4 — Student_Actor(участие в художественной самодеятельности).
Столбцы |
Атрибут |
Тип |
Размер |
Ограничение |
|
ID |
Идентификатор |
Длинное целое |
Первичный ключ |
||
Student_ID |
Студент |
Длинное целое |
Внешняя ссылка на Student (ID) |
||
Art_ID |
Вид художественной самодеятельности |
Длинное целое |
Внешняя ссылка на Kind_Art (ID) |
||
Actor |
В качестве кого |
Текстовый |
50 |
||
Result |
Достижения |
Текстовый |
255 |
||
Таблица 5 — Student_Work_Public(общественная работа).
Столбцы |
Атрибут |
Тип |
Размер |
Ограничение |
|
ID |
Идентификатор |
Длинное целое |
Первичный ключ |
||
Student_ID |
Студент |
Длинное целое |
Внешняя ссылка на Student (ID) |
||
Work_Public_ID |
Вид общественной работы |
Длинноецелое |
Внешняя ссылка на Kind_Work_public (ID) |
||
Таблица 6 — Kind_Last_Name_Modify(справочник причин смены фамилии).
Столбцы |
Атрибут |
Тип |
Размер |
Ограничение |
|
ID |
Идентификатор |
Длинное целое |
Первичный ключ |
||
Last_Name_Modify |
Причина смены фамилии |
Текстовый |
40 |
||
Таблица 7 — Kind_Art (справочник видов художественной самодеятельности).
Столбцы |
Атрибут |
Тип |
Размер |
Ограничение |
|
ID |
Идентификатор |
Длинное целое |
Первичный ключ |
||
Art |
Вид художественной самодеятельности |
Текстовый |
50 |
||
Таблица 8 — Kind_Work_Public (справочник видов общественных работ)
Столбцы |
Атрибут |
Тип |
Размер |
Ограничение |
|
ID |
Идентификатор |
Длинное целое |
Первичный ключ |
||
Public_Work |
Вид общественной работы |
Текстовый |
255 |
||
Таблица 9 — Kind_Foreign (справочник иностранных языков).
Столбцы |
Атрибут |
Тип |
Размер |
Ограничение |
|
ID |
Идентификатор |
Длинное целое |
Первичный ключ |
||
Foreign_Name |
Изучаемый иностранный язык |
Текстовый |
15 |
||
Foreign_Cod |
Код иностранного языка |
Текстовый |
1 |
||
Таблица 10- Kind_Relation_Degree (справочник степеней родства).
Столбцы |
Атрибут |
Тип |
Размер |
Ограничение |
|
ID |
Идентификатор |
Длинное целое |
Первичный ключ |
||
Relation_Degree |
Степень родства |
Текстовый |
10 |
||
Таблица 11 — Kind_Marital_Status (справочник видов семейного положения).
Столбцы |
Атрибут |
Тип |
Размер |
Ограничение |
|
ID |
Идентификатор |
Длинное целое |
Первичный ключ |
||
Marital_Status |
Вид семейного положения |
Текстовый |
12 |
||
Sex |
Пол |
Текстовый |
3 |
(муж / жен) |
|
Для создания поля, которое заполняется автоматически при добавлении записи в таблицу, используется генератор, а для его вызова — триггер. Разработанные триггеры для протоколирования работы и таблицами и для реализации автоинкрементных полей (ID) всех таблиц приведены в приложении Б. Триггеры для протоколирования работы и таблицами вносят в таблицу Protocol следующие значения:
- имя таблицы
- операция (удаление, вставка, редактирование)
- имя пользователя
- ID редактируемой записи
- старое значение редактируемого поля
- новое значение редактируемого поля
- дата внесения изменений
- время внесения изменений.
Триггер по заданию работает следующим образом: Если родственник является студентом БелГУТа, то поля, начиная с фамилии (Last_Name), заполняются с помощью триггера автоматически при добавлении записи или изменении поля «Является ли родственник сотрудником БелГУТа» (Middle_Student_ID).
При пустом значении поля Middle_Student_IDэти поля должны заполняться вручную.
Второй триггер по заданию работает следующим образом:При добавлении записи в таблицу Student_Last_Name_Modify триггер заносит значение новой фамилии из поля new.Last_Name_Old в поле Last_Name таблицы Student, а значение поля Student(Last_Name) заносит в new. Last_Name_Old, т.е. меняет их местами. Таким образом, в таблицу при добавлении записи вставляется новая фамилия, а реально триггер поменяет ее местами со старой.
Для решения определенных задач используются специальные хранимые процедуры:
1. Locality_Address. По ID населенного пункта формирует его полный адрес (от государства и далее до населенного пункта) по таблицам Kind_Administrative_District и Kind_City. Возвращает строку с адресом.
2 .District_Locality_All. По ID административной единицы возвращает ID всех входящих в нее населенных пунктов.
3.District_District_Down.По ID административной единицы возвращает ID всех входящих в нее административных единиц более низкого уровня (одно вложение)
4. Locality_State.По ID населенного пункта возвращает ID государства, в которое он входит.
5.Locality_District.Входные параметры: ID населенного пункта и ID административной единицы.Определяет, входит ли данный населенный пункт в эту административную единицу. Учитывается любая вложенность ссылок. Возвращает 1 (true) или 0 (false).
6.Locality_Region.По ID населенного пункта возвращает ID района, в который он входит.
7.Locality_State.По ID населенного пункта возвращает ID области, в которую он входит.
Скрипт для процедур приведен в приложении Б.
2. Разработка руководства пользователя
2.1 Описание интерфейса пользователя и порядка работы с программным обеспечением
В приложении разработан парольный вход (рисунок 1), который позволяет ограничить доступ к приложению. Таким образом, выполняется необходимые условия для безопасного функционирования программы.
Рисунок 1 — Форма парольного входа в приложение.
Данная форма разделена на три части:
ь Идентификация
ь Вход
В части «Идентификация» находятся поля Логин и Пароль для парольного входа в приложение. При успешном подключении к базе данных становится активным главное окно программы (рисунок 2).
Данная форма показывает главное меню:
Для дальнейшей работы необходимо выбрать интересующий раздел:
ь Работа со справочниками.
ь Работа таблицами.
ь Поиск информации по различным параметрам.
ь Форма для формирования списков студентов
ь Вызвать «Помощь».
Рисунок 2 -Форма главного меню.
Порядок работы с формами справочников (и с большой частью таблиц) аналогичен, поэтому подробное описание приведем для одной формы.
Справочник видов искусств.
Форма «Справочник видов искусств» содержит (рисунок 3):
- идентификатор вида искусства
- названия вида искусства
Форма «Справочник видов искусств» решает следующие задачи:
- Добавление новой записи
- Редактирование уже существующей записи
- Удаление уже существующей записи
Рисунок 3 — Форма для работы со справочником видов искусств.
Для реализации функции «редактирование» нужно выбрать в окне отображения данных необходимую строку (рисунок 3).
Нажать кнопку «Изменить» и корректировать нужную информацию, затем подтвердить изменения, нажав кнопку «Подтвердить» (рисунок 4).
Рисунок 4 — Форма для работы со справочником видов искусств.
Также в таблицах было реализовано окно для инкрементного поиска. Для начала работы нужно параметр, который необходимо найти (рисунок 5).
Для удаления ненужной информации необходимо выбрать нужную строку и нажать кнопку «Удалить». Появится соответствующее сообщение «О подтверждении». Нужно подтвердить или отменить действие, нажав кнопку «ДА» или «НЕТ» (рисунок 6).
Справочник видов общественных работ.
Форма «Справочник видов общественных работ» содержит(рисунок 7):
- идентификатор справочника видов общественных работ.
- Название вида общественных работ
Рисунок 5 — Пример работы автоинкрементного поиска.
Рисунок 6 — Окно о подтверждении удаления.
Форма «Справочник видов общественных работ» решает следующие задачи (рисунок 7):
- Добавление новой записи
- Редактирование уже существующей записи
- Удаление уже существующей записи
Справочник причин изменения фамилии.
Форма «Справочник причин изменения фамилии» содержит (рис. 8):
- идентификатор причин изменения фамилии
- причину изменения фамилии
Форма «Справочник причин изменения фамилии» предоставляет возможности (рисунок 8):
Рисунок 7 — Форма для работы со справочником видов общественных работ.
Рисунок 8 — Форма для работы со справочником причин изменения фамилии.
- Добавление новой записи
- Редактирование уже существующей записи
- Удаление уже существующей записи
Справочник иностранных языков.
Форма «Справочник иностранных языков» содержит (рисунок 9):
- идентификатор иностранного языка
- код языка
- название языка
Форма «Справочник иностранных языков» предоставляет возможности (рисунок 9):
- Добавление новой записи
- Редактирование уже существующей записи
- Удаление уже существующей записи
Рисунок 9 — Форма для работы с иностранными языками.
Справочник родственных отношений.
Форма «Справочник родственных отношений» содержит (рисунок 10):
- идентификатор вида родственных отношений
- степень родственных отношений
Форма «Справочник родственных отношений» предоставляет возможности (рисунок 10):
- Добавление новой записи
- Редактирование уже существующей записи
- Удаление уже существующей записи
Рисунок 10 — Форма для работы с видами родственных отношений.
Справочник семейного статуса.
Форма «Справочник семейного статуса» содержит (рисунок 11):
- идентификатор вида семейного статуса
- пол
- семейный статус
Форма «Справочник семейного статуса» предоставляет возможности (рисунок 11):
- Добавление новой записи
- Редактирование уже существующей записи
- Удаление уже существующей записи
Рисунок 11 — Форма для работы с видами семейного статуса.
Таблица студентов изменивших фамилию.
Форма «Таблица студентов изменивших фамилию» содержит (рис. 12):
- идентификатор записи
- фамилию, имя, отчество студента
- группа
- причина изменения фамилии
- старая фамилия
- номер приказа
- дата приказа
Форма «Таблица студентов изменивших фамилию» предоставляет возможности (рисунок 12):
- Добавление новой записи
- Редактирование уже существующей записи
- Удаление уже существующей записи
Рисунок 12 — Форма для работы со студентами, изменившими фамилию.
Таблица студентов участвующих в творческой самодеятельности.
Форма «Таблица студентов участвующих в творческой самодеятельности» содержит (рисунок 13):
- идентификатор записи
- фамилию, инициалы студента
- группа
- вид искусства
- вид деятельности
- результат
Форма «Таблица студентов участвующих в творческой самодеятельности» предоставляет возможности (рисунок 13):
- Добавление новой записи
- Редактирование уже существующей записи
- Удаление уже существующей записи
Рисунок 13 — Форма для работы со студентами, участвующими в творческой деятельности.
Таблица студентов исполняющих общественные работы.
Форма «Таблица студентов исполняющих общественные работы» содержит (рисунок 14):
- идентификатор записи
- фамилию, инициалы студента
- группа
- вид общественной работы
Форма «Таблица студентов исполняющих общественные работы» предоставляет возможности (рисунок 14):
- Добавление новой записи
- Редактирование уже существующей записи
- Удаление уже существующей записи
Рисунок 14 — Форма для работы со студентами, участвующими в творческой деятельности.
Поиск
Форма поиска позволяет осуществить поиск студента по различным параметрам (рисунок 15).
Осуществлен поиск студента, по таким параметрам как:
§ Фамилия
§ Имя
§ Отчество
§ Пол(муж/жен)
§ Дата рождения
§ Специализации
§ Иностранный язык
§ Вид конкурса
§ Льготы
§ Вид гос. обеспечения
§ Гражданство
§ Место проживания
§ Домашний адрес
§ Отношение к воинской службе
§ Военкомат
§ Место работы
§ Группа
§ Вид обучения
§ Подгруппа
§ Нуждается в общежитии
§ Статус студента
§ Семейное положение
- Для выполнения поиска необходимо отметить галочками поля для поиска, и нажать кнопку «Поиск». Информация будет отображена на формы.
Рисунок 15 — Общий вид формы расширенного поиска по различным параметрам.
Работа с формой личной карточки студента.
Фильтрация нужной информации по специализации, группе и фамилии, имени, отчества студентов представлена в верхней левой части формы (рисунок 16).
Рисунок 16 — Фильтры по специализации, группе, и ФИО студента.
Для добавления, редактирования и удаления доступны следующая информация. (рисунок 17):
- Факультет
- Номер зачетной книжке
- Номер студенческого билета
- Фотография (Загрузка оп нажатию на кнопку “Загрузка фотографии”)
- Имя
- Отчество
- Фамилия
- Специальность
- Специализация
- Дата рождения
- Пол
- Место проживания
- Гражданство
- Выполняемая общественная работа
- Образование (Учебное заведение и год окончания)
- Выполняемая работа до поступления в БелГУТ (Где и кем)
- Семейное положение
- Сведения о родителях (ФИО, дата рождения, должность, рабочий телефон, адрес и домашний телефон отца и матери)
- Домашний адрес
Рисунок 17 — Пример работы формы для личной карточки студента.
Работа с формой закрепления студента за подгруппой.
Фильтрация нужной информации по специализации, группе и фамилии, имени, отчества студентов представлена в верхней левой части формы (рисунок 18).
Рисунок 18 — Фильтры по специализации, группе, и ФИО студента.
В данной форме мы можем изменять подгруппу студента. Пример приведен на рисунке 19
Рисунок 19 — Форма изменения подгруппы студента.
Формирование списков студентов.
Списки студентов можно разделить на списки с основной информацией, а так же на списки с дополнительной информацией. К основной информации относят фамилию, имя, отчество студента, а так же группа и статус студента. Сначала идет формирования списка студентов, которые учатся на факультете, потом находящихся в академическом отпуске, затем те, кто на повторном курсе обучения.
К дополнительной информации относят
- Вид обучения
- Адрес
- Семейное положение
- Дату рождения
- Пол
Для формирования списка мы должны выбрать факультет или группу для которой необходимо сформировать список, а затем выбрать какой вариант списка нас интересует (с основной или дополнительной информацией) . Пример показан на рисунке 20.
Рисунок 20 — Пример формирования списка для группы ЭМ-22.
Результат выполненных действий:
Таблица 12 Список студентов с основной информацией
Балина |
Евгения |
Владимировна |
ЭМ-22 |
уч. |
|
Барсуков |
Артём |
Геннадьевич |
ЭМ-22 |
уч. |
|
Борисова |
Марина |
Александровна |
ЭМ-22 |
уч. |
|
Бороденок |
Сергей |
Константинович |
ЭМ-22 |
уч. |
|
Головин+ |
Павел+ |
Николаевич+ |
ЭМ-22 |
уч. |
|
Гриньков |
Сергей |
Петрович |
ЭМ-22 |
уч. |
|
Зюзина |
Алёна |
Владимировна |
ЭМ-22 |
уч. |
|
Качанович |
Максим |
Валерьевич |
ЭМ-22 |
уч. |
|
Клименок |
Ольга |
Владимировна |
ЭМ-22 |
уч. |
|
Кожемякин |
Сергей |
Валентинович |
ЭМ-22 |
уч. |
|
Кравцов |
Валерий |
Александрович |
ЭМ-22 |
уч. |
|
Криднер |
Максим |
Олегович |
ЭМ-22 |
уч. |
|
Крупенич |
Александр |
Геннадьевич |
ЭМ-22 |
уч. |
|
Кузьменко |
Руслан |
Александрович |
ЭМ-22 |
уч. |
|
Кулагина |
Анна |
Валерьевна |
ЭМ-22 |
уч. |
|
Курага |
Инна |
Александравна |
ЭМ-22 |
уч. |
|
Мищук |
Евгений |
Юрьевич |
ЭМ-22 |
уч. |
|
Надточей |
Кристина |
Николаевна |
ЭМ-22 |
уч. |
|
Новомлинец |
Алексей |
Васильевич |
ЭМ-22 |
уч. |
|
Окручинский |
Дмитрий |
Александрович |
ЭМ-22 |
уч. |
|
Олейник |
Александр |
Игоревич |
ЭМ-22 |
уч. |
|
Савенок |
Дмитрий |
Сергеевич |
ЭМ-22 |
уч. |
|
Симончик |
Георгий |
Константинович |
ЭМ-22 |
уч. |
|
Ткач |
Александр |
Михайлович |
ЭМ-22 |
уч. |
|
Ф |
Ы |
В |
ЭМ-22 |
уч. |
|
Харлап |
Денис |
Сергеевич |
ЭМ-22 |
уч. |
|
Цыганок |
Данил |
Иванович |
ЭМ-22 |
уч. |
|
Шведова |
Мария |
Сергеевна |
ЭМ-22 |
уч. |
|
Шереметьев |
Роман |
Владимирович |
ЭМ-22 |
уч. |
|
Якубчик |
Дмитрий |
Юрьевич |
ЭМ-22 |
уч. |
|
2.2 Разработка справки и контекстной помощи
Важным элементом приложения является интегрированная справочная система. И хотя многое очевидно для опытного пользователя, все равно всегда остаётся что-то, что нужно уточнить; кроме того, неопытные пользователи не могут свободно ориентироваться и правильно трактовать информацию, выводимую компьютером, т.е. понимать значение элементов меню, окон, диалогов или даже просто сообщений.
В курсовом проекте для создания справки используется программа Dr.Explain.
Простая и надёжная программа, для создания справочной документации в форматах HTML, CHM, RTF, PDF. Идеальный вариант для тех, кто хочет сделать качественную справку, не имея специальных знаний в данной области. Преимущества: простой и интуитивный интерфейс; встроенный модуль захвата экрана, который самостоятельно делит изображение на области; удобная панель инструментов; полезный редактор изображений, в котором можно расставить стрелки и подписи для объектов; мгновенный просмотр CHM и HTML; модуль проверки правописания. Недостатки: отсутствие многопользовательского редактирования; поддержка только основных форматов справки
Рисунок 21 — Вид окна контекстной помощи.
В данном разделе показаны примеры и описания работы со всеми таблицами и справочниками, поисковыми системами, формирования отчетности.
автоматизация интерфейс программный справка
Заключение
Разработано программное обеспечение для методиста факультета. ПО решает следующие задачи:
- ввод и редактирование справочников и таблиц;
- ввод и редактирование личных карточек студентов БелГУТа;
- закрепление студентов БелГУТа за подгруппами;
- проверку корректности вводимых данных;
- поиск информации по различным критериям, в том числе по составным критериям (согласовывается с преподавателем).
Дополнительно реализованы такие задачи как:
- Система контекстной помощи.
- Удобный пользовательский интерфейс.
- Защита информации от несанкционированного доступа (права доступа).
Данная информационно-поисковая система полностью интегрирована в общую информационно-поисковую систему БелГУТа, что позволяет сделать вывод практической важности и целесообразности данной работы.
Список использованных источников
[Электронный ресурс]//URL: https://inzhpro.ru/kursovoy/razrabotka-informatsionno-poiskovoy-sistemyi-2/
1. Архангельский А.Я. Программирование в C++Builder 6. — М.: Бином, 2003.
2. Архангельский А.Я.C++Builder 6. Справочное пособие. Книга 2. Классы и компоненты. — М.: Бином, 2002.
Приложение А
Виды списков
Реализованы следующие виды списков:
1. с основной информацией
Список студентов с основной информацией
Балина |
Евгения |
Владимировна |
ЭМ-22 |
уч. |
|
Барсуков |
Артём |
Геннадьевич |
ЭМ-22 |
уч. |
|
Борисова |
Марина |
Александровна |
ЭМ-22 |
уч. |
|
Бороденок |
Сергей |
Константинович |
ЭМ-22 |
уч. |
|
Головин+ |
Павел+ |
Николаевич+ |
ЭМ-22 |
уч. |
|
Гриньков |
Сергей |
Петрович |
ЭМ-22 |
уч. |
|
Зюзина |
Алёна |
Владимировна |
ЭМ-22 |
уч. |
|
Качанович |
Максим |
Валерьевич |
ЭМ-22 |
уч. |
|
Клименок |
Ольга |
Владимировна |
ЭМ-22 |
уч. |
|
Кожемякин |
Сергей |
Валентинович |
ЭМ-22 |
уч. |
|
Кравцов |
Валерий |
Александрович |
ЭМ-22 |
уч. |
|
Криднер |
Максим |
Олегович |
ЭМ-22 |
уч. |
|
Крупенич |
Александр |
Геннадьевич |
ЭМ-22 |
уч. |
|
Кузьменко |
Руслан |
Александрович |
ЭМ-22 |
уч. |
|
Кулагина |
Анна |
Валерьевна |
ЭМ-22 |
уч. |
|
Курага |
Инна |
Александравна |
ЭМ-22 |
уч. |
|
Мищук |
Евгений |
Юрьевич |
ЭМ-22 |
уч. |
|
Надточей |
Кристина |
Николаевна |
ЭМ-22 |
уч. |
|
Новомлинец |
Алексей |
Васильевич |
ЭМ-22 |
уч. |
|
Окручинский |
Дмитрий |
Александрович |
ЭМ-22 |
уч. |
|
Олейник |
Александр |
Игоревич |
ЭМ-22 |
уч. |
|
Савенок |
Дмитрий |
Сергеевич |
ЭМ-22 |
уч. |
|
Симончик |
Георгий |
Константинович |
ЭМ-22 |
уч. |
|
Ткач |
Александр |
Михайлович |
ЭМ-22 |
уч. |
|
Ф |
Ы |
В |
ЭМ-22 |
уч. |
|
Харлап |
Денис |
Сергеевич |
ЭМ-22 |
уч. |
|
Цыганок |
Данил |
Иванович |
ЭМ-22 |
уч. |
|
Шведова |
Мария |
Сергеевна |
ЭМ-22 |
уч. |
|
Шереметьев |
Роман |
Владимирович |
ЭМ-22 |
уч. |
|
Якубчик |
Дмитрий |
Юрьевич |
ЭМ-22 |
уч. |
|
2. с дополнительной информацией
Список студентов с дополнительной информацией
Головин+ |
Павел+ |
Николаевич+ |
ЭМ-22 |
уч. |
внебюдж. |
ул. Советская д.140/24 |
холост |
31.05.1993 |
муж |
|
Приложение Б
Хранимые процедуры и триггеры:
Код хранимой процедуры Locality_Address
Locality_Address
SET TERM ^ ;
CREATE PROCEDURE «LOCALITY_ADDRESS»
(«ID_DEP» INTEGER)
RETURNS
(«FULL_ADRESS» VARCHAR(100) CHARACTER SET WIN1251)
AS
BEGIN EXIT; END ^
ALTER PROCEDURE «LOCALITY_ADDRESS»
(«ID_DEP» INTEGER)
RETURNS
(«FULL_ADRESS» VARCHAR(100) CHARACTER SET WIN1251)
AS
DECLARE VARIABLE ID_DISTRICT_UP integer;
- DECLARE VARIABLE count_id integer;
- DECLARE VARIABLE BUFFER_NAME varchar(100);
- DECLARE VARIABLE CITY_NAME varchar(100);
BEGIN
full_adress=»;
- ID_DISTRICT_UP=null;
- BUFFER_NAME=»;
- CITY_NAME=»;
- count_id=1;
- SELECT LOCALITY_NAME,ADMINISTRATIVE_DISTRICT_ID from kind_CITY where id=:ID_DEP INTO :CITY_NAME,:ID_DISTRICT_UP;
- full_adress=full_adress ||’ ‘|| CITY_NAME;
- while (count_id>0) DO
begin
SELECT ADMINISTRATIVE_DISTRICT_ID,ADMINISTRATIVE_FULL_NAME from Kind_ADMINISTRATIVE_DISTRICT
where ID=:ID_DISTRICT_UP INTO :ID_DISTRICT_UP,:BUFFER_NAME;
- full_adress=full_adress ||’ ‘|| BUFFER_NAME;
if(ID_DISTRICT_UP is null) then
count_id=0;
END
SUSPEND;
end
^
SET TERM ; ^
Код хранимой процедуры District_Locality_All
District_Locality_All
SET TERM ^ ;
/* Stored procedures */
CREATE PROCEDURE «DISTRICT_LOCALITY_ALL»
(«ID_UP» INTEGER)
RETURNS
(«ID_DOWN» INTEGER)
AS
BEGIN EXIT; END ^
ALTER PROCEDURE «DISTRICT_LOCALITY_ALL»
(«ID_UP» INTEGER)
RETURNS
(«ID_DOWN» INTEGER)
AS
DECLARE VARIABLE ID_DISTRICT integer;
BEGIN
ID_DISTRICT=null;
FOR SELECT ID FROM Kind_City WHERE Administrative_District_ID=: ID_UP INTO:ID_DOWN
DO
SUSPEND;
for SELECT ID FROM KIND_ADMINISTRATIVE_DISTRICT where ADMINISTRATIVE_DISTRICT_ID=:ID_UP INTO :ID_DISTRICT
DO
for SELECT *FROM DISTRICT_LOCALITY_ALL(:ID_DISTRICT) INTO :ID_DOWN
DO SUSPEND;
END
^
SET TERM ; ^
КодхранимойпроцедурыDistrict_District_Down
District_District_Down
SET TERM ^ ;
/* Stored procedures */
CREATE PROCEDURE «DISTRICT_DISTRICT_DOWN»
(«ID_UP» INTEGER)
RETURNS
(«ID_DOWN» INTEGER)
AS
BEGIN EXIT; END ^
ALTER PROCEDURE «DISTRICT_DISTRICT_DOWN»
(«ID_UP» INTEGER)
RETURNS
(«ID_DOWN» INTEGER)
AS
BEGIN
FOR SELECT ID FROM KIND_ADMINISTRATIVE_DISTRICT WHERE ADMINISTRATIVE_DISTRICT_ID=:ID_UP INTO:ID_DOWN
DO
SUSPEND;
END
^
SET TERM ; ^
Код хранимой процедуры Locality_State
Locality_State
SET TERM ^ ;
/* Stored procedures */
CREATE PROCEDURE «LOCALITY_STATE»
«ID_UP» INTEGER
RETURNS
«ID_DOWN» INTEGER
AS
BEGIN EXIT; END ^
ALTER PROCEDURE «LOCALITY_STATE»
(«ID_UP» INTEGER)
RETURNS
(«ID_DOWN» INTEGER)
AS
DECLARE VARIABLE ID_DISTRICT_UP integer;
- DECLARE VARIABLE count_id integer;
- DECLARE VARIABLE ADMIN_LEVEL integer;
BEGIN
ID_DISTRICT_UP=null;
- count_id=1;
- ADMIN_LEVEL=null;
- SELECT ADMINISTRATIVE_DISTRICT_ID from KIND_CITY where id=:ID_UP INTO: ID_DISTRICT_UP;
- while (count_id>0) DO
begin
SELECT ADMINISTRATIVE_LEVEL_ID FROM KIND_ADMINISTRATIVE_DISTRICT where id=:ID_DISTRICT_UP INTO: ADMIN_LEVEL;
if(ADMIN_LEVEL=2) then
BEGIN
count_id=0;
- SELECT ID FROM KIND_ADMINISTRATIVE_DISTRICT where id=:ID_DISTRICT_UP INTO: ID_DOWN;
END
ELSE
BEGIN
SELECT ADMINISTRATIVE_DISTRICT_ID FROM KIND_ADMINISTRATIVE_DISTRICT where id=:ID_DISTRICT_UP INTO: ID_DISTRICT_UP;
END
END
SUSPEND;
END
^
SET TERM ; ^
Код хранимой процедуры Locality_Region
Locality_Region
SET TERM ^ ;
/* Stored procedures */
CREATE PROCEDURE «LOCALITY_REGION»
(«ID_CITY» INTEGER)
RETURNS
(«ID_REGION» INTEGER)
AS
BEGIN EXIT; END ^
ALTER PROCEDURE «LOCALITY_REGION»
(«ID_CITY» INTEGER)
RETURNS
(«ID_REGION» INTEGER)
AS
DECLARE VARIABLE ID_DISTRICT_UP integer;
- DECLARE VARIABLE count_id integer;
- DECLARE VARIABLE ADMIN_LEVEL integer;
BEGIN
ID_DISTRICT_UP=null;
- count_id=5;
- ADMIN_LEVEL=null;
- SELECT ADMINISTRATIVE_DISTRICT_ID from KIND_CITY where id=:ID_CITY INTO: ID_DISTRICT_UP;
- while (count_id>0) DO
begin
SELECT ADMINISTRATIVE_LEVEL_ID FROM KIND_ADMINISTRATIVE_DISTRICT where id=:ID_DISTRICT_UP INTO: ADMIN_LEVEL;
if(ADMIN_LEVEL=5) then
BEGIN
count_id=0;
- SELECT ID FROM KIND_ADMINISTRATIVE_DISTRICT where id=:ID_DISTRICT_UP INTO: ID_REGION;
END
ELSE
BEGIN
SELECT ADMINISTRATIVE_DISTRICT_ID FROM KIND_ADMINISTRATIVE_DISTRICT where id=:ID_DISTRICT_UP INTO: ID_DISTRICT_UP;
- count_id= count_id-1;
END
end
SUSPEND;
END
^
SET TERM ; ^
Код хранимой процедуры LOCALITY_STATE_AREAL
LOCALITY_STATE_AREAL
SET TERM ^ ;
/* Stored procedures */
CREATE PROCEDURE «LOCALITY_STATE_AREAL»
(«ID_CITY» INTEGER)
RETURNS
(«ID_REGION» INTEGER)
AS
BEGIN EXIT; END ^
ALTER PROCEDURE «LOCALITY_STATE_AREAL»
(«ID_CITY» INTEGER)
RETURNS
(«ID_REGION» INTEGER)
AS
DECLARE VARIABLE ID_DISTRICT_UP integer;
- DECLARE VARIABLE count_id integer;
- DECLARE VARIABLE ADMIN_LEVEL integer;
BEGIN
ID_DISTRICT_UP=null;
- count_id=5;
- ADMIN_LEVEL=null;
- SELECT ADMINISTRATIVE_DISTRICT_ID from KIND_CITY where id=:ID_CITY INTO: ID_DISTRICT_UP;
- while (count_id>0) DO
begin
SELECT ADMINISTRATIVE_LEVEL_ID FROM KIND_ADMINISTRATIVE_DISTRICT where id=:ID_DISTRICT_UP INTO: ADMIN_LEVEL;
if(ADMIN_LEVEL=3) then
BEGIN
count_id=0;
- SELECT ID FROM KIND_ADMINISTRATIVE_DISTRICT where id=:ID_DISTRICT_UP INTO: ID_REGION;
END
ELSE
BEGIN
SELECT ADMINISTRATIVE_DISTRICT_ID FROM KIND_ADMINISTRATIVE_DISTRICT where id=:ID_DISTRICT_UP INTO: ID_DISTRICT_UP;
- count_id= count_id-1;
END
end
SUSPEND;
END
^
SETTERM ; ^
Так как триггеры выполняют аналогичные задачи, то рассмотрим триггер на примере таблицы «STUDENT_LAST_NAME_MODIFY»:
1)Созданиегенератора.
CREATE GENERATOR GEN_STUDENT_LAST_NAME_MODIFY_ID;
2) Триггер для идентификатора.
SETTERM~;
CREATE TRIGGER “STUDENT_Last_NAME_MODIFY_ID FOR STUDENT_LAST_NAME_MODIFY”
BEFORE INSERT
AS BEGIN
new.ID=GEN_ID(GEN_STUDENT_LAST_NAME_MODIFY_ID, 1);
END~
3) Триггервставки:
- SET TERM ~;
CREATE TRIGGER «TR_STUDENT_LNM_INSERT» FOR «STUDENT_LAST_NAME_MODIFY»
ACTIVE AFTER INSERT POSITION 2
AS
BEGIN
INSERT INTO Protocol(Tablename, Typename, username, recordid, fieldname, oldvalue, newvalue, changedate, changetime) VALUES(‘STUDENT_LAST_NAME_MODIFY’, ‘insert’, user, NEW.ID, NULL,
NULL, NULL,
‘NOW’, ‘NOW’);
END~
SET TERM ; ~
4)Триггерудаления:
- SET TERM ~;
CREATE TRIGGER «TR_STUDENT_LNM_DELETE» FOR «STUDENT_LAST_NAME_MODIFY»
ACTIVE AFTER DELETE POSITION 1
AS
BEGIN
INSERT INTO Protocol(Tablename, Typename, username, recordid, fieldname, oldvalue, newvalue, changedate, changetime) VALUES(‘STUDENT_LAST_NAME_MODIFY’, ‘delete’, user, OLD.ID, NULL,
NULL, NULL,
‘NOW’, ‘NOW’);
END~
SET TERM ; ~
5)Триггерредактирования:
- SET TERM ~;
CREATE TRIGGER «TR_STUDENT_LNM_UPDATE» FOR «STUDENT_LAST_NAME_MODIFY»
ACTIVE AFTER UPDATE POSITION 3
AS
BEGIN
IF (OLD.ID <> NEW.ID) THEN
BEGIN
INSERT INTO Protocol(Tablename, Typename, username, recordid, fieldname, oldvalue, newvalue, changedate, changetime) VALUES(‘STUDENT_LAST_NAME_MODIFY’, ‘edit’, user, OLD.ID,
‘ID’, OLD.ID, NEW.ID, ‘NOW’, ‘NOW’);
END
IF (OLD.Student_ID<>NEW.Student_ID) THEN
BEGIN
INSERT INTO Protocol(Tablename, Typename, username, recordid, fieldname, oldvalue, newvalue, changedate, changetime) VALUES(‘STUDENT_LAST_NAME_MODIFY’, ‘edit’, user, OLD.ID,
‘Student_ID’, OLD.Student_ID, NEW.Student_ID, ‘NOW’, ‘NOW’);
END
IF (OLD.Order_Date<>NEW.Order_Date) THEN
BEGIN
INSERT INTO Protocol(Tablename, Typename, username, recordid, fieldname, oldvalue, newvalue, changedate, changetime) VALUES(‘STUDENT_LAST_NAME_MODIFY’, ‘edit’, user, OLD.ID,
‘Order_Date’, OLD.Order_Date, NEW.Order_Date, ‘NOW’, ‘NOW’);
END
IF (OLD.Order_Number<>NEW.Order_Number) THEN
BEGIN
INSERT INTO Protocol(Tablename, Typename, username, recordid, fieldname, oldvalue, newvalue, changedate, changetime) VALUES(‘STUDENT_LAST_NAME_MODIFY’, ‘edit’, user, OLD.ID,
‘Order_Number’, OLD.Order_Number, NEW.Order_Number, ‘NOW’, ‘NOW’);
END
IF (OLD.Last_Name_Modify_ID<>NEW.Last_Name_Modify_ID) THEN
BEGIN
INSERT INTO Protocol(Tablename, Typename, username, recordid, fieldname, oldvalue, newvalue, changedate, changetime) VALUES(‘STUDENT_LAST_NAME_MODIFY’, ‘edit’, user, OLD.ID,
‘Last_Name_Modify_ID’, OLD.Last_Name_Modify_ID, NEW.Last_Name_Modify_ID, ‘NOW’, ‘NOW’);
END
IF (OLD.Last_Name_Old<>NEW.Last_Name_Old) THEN
BEGIN
INSERT INTO Protocol(Tablename, Typename, username, recordid, fieldname, oldvalue, newvalue, changedate, changetime) VALUES(‘STUDENT_LAST_NAME_MODIFY’, ‘edit’, user, OLD.ID,
‘Last_Name_Old’, OLD.Last_Name_Old, NEW.Last_Name_Old, ‘NOW’, ‘NOW’);
END
END~
SETTERM ; ~END~
6)Триггер по заданию(Если родственник является студентом БелГУТа, то поля, начиная с Last_Name, заполняются с помощью триггера автоматически при добавлении записи или изменении поля Middle_Student_ID. При пустом значении поля Middle_Student_ID эти поля должны заполняться вручную).
SET TERM ~;
CREATE TRIGGER «STUDENT_FAMILY_RELATIVE_INSERT» FOR «STUDENT_FAMILY»
ACTIVE BEFORE INSERT POSITION 0
AS
declare variable a varchar(10);
- declare variable b varchar(30);
- declare variable c varchar(20);
- declare variable e date;
- declare variable f VARCHAR(255);
- declare variable g VARCHAR(30);
- declare variable i integer;
- declare variable h VARCHAR(255);
- declare variable j VARCHAR(255);
- declare variable k VARCHAR(30);
- declare variable l VARCHAR(255);
BEGIN
IF(new.MIDDLE_STUDENT_ID is not NULL) then
begin
select Last_Name,First_Name,Middle_Name,Birth_Date, Home_Adress,Home_Phone,WORK_PLACE,WORK_POST,WORK_PHONE,ADDRESS_ENTERPRISE
from student
where Student.ID=new.MIDDLE_STUDENT_ID
into :a,:b,:c,:e,:f,:g,:h,:j,:k,:l;
- new.LAST_NAME=:a;
- new.FIRST_NAME=:b;
- new.MIDDLE_NAME=:c;
- new.BIRTH_DATE=:e;
- new.INVALID_ID=4;
- new.HOME_ADRESS=:f;
- new.HOME_PHONE=:g;
- new.WORK_PLACE=:h;
- new.WORK_POST=:j;
- new.WORK_PHONE=:k;
- new.ADDRESS_ENTERPRISE=:l;
END
END~
SET TERM ; ~
Специальный триггер 2 делает следующие дейтсвия:1 При добавлении записи в таблицу триггер заносит значение новой фамилии из поля new.Last_Name_Old в поле Last_Name таблицы Student, а значение поля Student(Last_Name) заносит в new.Last_Name_Old, т.е. меняет их местами. Таким образом, в таблицу при добавлении записи вставляется новая фамилия, а реально триггер поменяет ее местами со старой.
SET TERM ~;
CREATE TRIGGER «TR_STUDENT_LNM» FOR «STUDENT_LAST_NAME_MODIFY»
ACTIVE BEFORE INSERT POSITION 0
AS
declare variable famvarchar(30);
- declare variable fam2 varchar(30);
BEGIN
select LAST_NAME from STUDENT where STUDENT.ID=STUDENT_LAST_NAME_MODIFY.STUDENT_ID into fam;
ыуд
update STUDENT set STUDENT.LAST_NAME=new.LAST_NAME_OLD where STUDENT.ID=STUDENT_LAST_NAME_MODIFY.STUDENT_ID;
- new.LAST_NAME_OLD=fam;
END~
SET TERM ; ~
Приложение В
Содержимое HELP-ФАЙЛА
Рисунок21 — Пример HELP-файла для справочника «Виды искусств».
Рисунок 22 — Пример HELP-файла для поиска.
Рисунок 23 — Пример HELP-файла для формирования отчетов.
Приложение Г
Листинг программы.
//—————————————————————————
#include <vcl.h>
#pragma hdrstop
#include «Unit4.h»
//—————————————————————————
#pragma package(smart_init)
#pragma resource «*.dfm»
TKind_Work_Public *Kind_Work_Public;
- int change4=0;
//—————————————————————————
__fastcallTKind_Work_Public::TKind_Work_Public(TComponent* Owner)
: TForm(Owner)
{
}
//—————————————————————————
void __fastcallTKind_Work_Public::Button1Click(TObject *Sender)
{
IBQuery1->First();
}
//—————————————————————————
void __fastcallTKind_Work_Public::Button2Click(TObject *Sender)
{
IBQuery1->Next();
}
//—————————————————————————
void __fastcallTKind_Work_Public::Button3Click(TObject *Sender)
{
IBQuery1->Prior();
}
//—————————————————————————
void __fastcallTKind_Work_Public::Button4Click(TObject *Sender)
{
IBQuery1->Last();
}
//—————————————————————————
void __fastcallTKind_Work_Public::Button5Click(TObject *Sender)
{
change4=1;
- Edit1->Text=»»;
- Edit2->Text=»»;
- Edit1->Enabled=true;
- Edit2->Enabled=true;
- Button5->Enabled=false;
- Button6->Enabled=false;
- Button7->Enabled=false;
- Button8->Enabled=true;
- Button9->Enabled=true;
- Button8->Caption=»Добавитьещё»;
}
//—————————————————————————
void __fastcallTKind_Work_Public::Button6Click(TObject *Sender)
{
change4=2;
- Edit1->Enabled=true;
- Edit2->Enabled=false;
- Button5->Enabled=false;
- Button6->Enabled=false;
- Button7->Enabled=false;
- Button8->Enabled=true;
- Button9->Enabled=true;
}
//—————————————————————————
void __fastcallTKind_Work_Public::Button7Click(TObject *Sender)
{
if(Application->MessageBox(«Вы действительно хотите удалить запись ?»,»Внимание»,MB_YESNO)==6){
IBQuery4->ParamByName(«ID»)->AsInteger=Edit2->Text.ToInt();
- IBQuery4->ExecSQL();
- IBQuery1->Active=false;
- IBQuery1->Active=true;
}
}
//—————————————————————————
void __fastcallTKind_Work_Public::Button8Click(TObject *Sender)
{
if(change4==1){
IBQuery2->ParamByName(«PUBLIC_WORK»)->AsString=Edit1->Text;
- IBQuery2->ParamByName(«ID»)->AsInteger=Edit2->Text.ToInt();
- IBQuery2->ExecSQL();
- IBQuery1->Active=false;
- IBQuery1->Active=true;
- TKind_Work_Public::Button5Click(Sender);
}
if (change4==2){
IBQuery3->ParamByName(«PUBLIC_WORK»)->AsString=Edit1->Text;
- IBQuery3->ParamByName(«ID»)->AsInteger=Edit2->Text.ToInt();
- IBQuery3->ExecSQL();
- IBQuery1->Active=false;
- IBQuery1->Active=true;
- Edit1->Enabled=false;
- Edit2->Enabled=false;
- Button5->Enabled=true;
- Button6->Enabled=true;
- Button7->Enabled=true;
- Button8->Enabled=false;
- Button9->Enabled=false;
- change4=0;
}
}
//—————————————————————————
void __fastcallTKind_Work_Public::Button9Click(TObject *Sender)
{
Edit1->Text=»»;
- Edit2->Text=»»;
- Edit1->Enabled=false;
- Edit2->Enabled=false;
- Button5->Enabled=true;
- Button6->Enabled=true;
- Button7->Enabled=true;
- Button8->Enabled=false;
- Button9->Enabled=false;
- Button8->Caption=»Подтвердить»;
- change4=0;
}
//—————————————————————————
void __fastcallTKind_Work_Public::DataSource1DataChange(TObject *Sender,
TField *Field)
{
Edit1->Text=IBQuery1->FieldByName(«PUBLIC_WORK»)->Value;
- Edit2->Text=IBQuery1->FieldByName(«ID»)->Value;
- Button5->Enabled=true;
- Button6->Enabled=true;
- Button7->Enabled=true;
- Button8->Enabled=false;
- Button9->Enabled=false;
- Edit1->Enabled=false;
- Edit2->Enabled=false;
- Button8->Caption=»Подтвердить»;
}
//—————————————————————————
void __fastcallTKind_Work_Public::FormCreate(TObject *Sender)
{
IBQuery1->Active=true;
}
//—————————————————————————
void __fastcallTKind_Work_Public::Button12Click(TObject *Sender)
{
WinExec(«hh.exe html_help_source.chm::Kind_work_public.html «, SW_SHOWNORMAL);
}
//—————————————————————————