Розробка інформаційної системи для виконання перегляду відомостей про вулиці м. Києва, їх розташування, параметри та історію. Концептуальна і даталогічна модель бази даних. Зв’язки між сутностями. Oпис реалізації клієнтських застосувань та інтерфейсу.
Аннотация к работе
Опис предметного середовища та постановка задачі Даталогічна модель бази даних
Список литературы
Документація
Додатки
1.
Опис предметного середовища та постановка задачі
Необхідно розробити інформаційну систему, яка дозволяла б виконувати перегляд відомостей про вулиці м. Києва, їх розташування, параметри та історію.
До головних задач, які повинна виконувати система, відносяться: · Ведення обліку вулиць, тобто інформація про розташування, код, назву, тип, хронологію перейменувань вулиці.
· Ведення обліку обєктів, які розташовані на відповідних вулицях - номер, назва, тип, точні координати розташування.
Перелік вхідної інформації, що повинна зберігатися в БД
· Район: код району (унікальний), назва району.
· Вулиця: код вулиці (унікальний), назва вулиці, тип вулиці, коротка назва типу, кількість обєктів (споруди розташовані на даній вулиці), код району (унікальний).
· Хронологія: номер запису (унікальний), нова назва, дата створення, код вулиці (унікальний).
· Геометрія: координати вулиці (X, Y), код вулиці (унікальний).
· Обєкт: номер (унікальний), назва (якщо є, в іншому випадку взяти назву вулиці), тип обєкта, координати обєкта (Х, Y), код вулиці (унікальний).
2. Концептуальна модель БД
На етапі концептуального проектування визначаються основні типи даних, що підлягають збереженню у базі даних, виділяються обєкти (сутності) предметного середовища, визначаються характеристики (атрибути) обєктів, структурні звязки між обєктами, які дають можливість реалізувати усю множину запитів до БД.
IMG_0e28cb7f-4e01-4ae4-882f-30ad69428705
Рисунок 1 - Концептуальна модель
3. Даталогічна модель БД
Фізична модель відображає розміщення даних, методи доступу до даних і техніку індексування, що будуть реалізовані в рамках обраної СУБД.
Нижче наведена структура таблиць та їх взаємозв‘язок у вигляді діаграми.
IMG_ff9524fd-a606-4a3d-8175-504aa4b26f24
Рисунок 2 - Даталогічна модель
4. Словник даних
Необхідно виділити основні сутності. Для сутностей визначити атрибути, що потрібно включити до складу інформаційної моделі.
Таблиця 1 - Атрибути інформаційної моделі
СутністьАтрибутиІдентифікаторКлючіТип данихРозмір
РайонКод району Назва районуID_Part Name_PartPkЧисловий(і) Текстовий(А)ціле 50
ВулицяКод вулиці Назва вулиці Тип Коротка назва типу Кількість обєктів Код районуID_St Name_St Type_St Type_Short Count_St ID_PartPk FkЧисловий(і) Текстовий(А) Текстовий(А) Текстовий(А) Числовий(і) Числовий(і)ціле 20 15 5 ціле ціле
ХронологіяНомер запису Нова назва Дата створення Код вулиціNum_H Name_New Date_Create ID_StPk FkЧисловий(і) Текстовий(А) Дата Числовий(і)ціле 20 Date ціле
ГеометріяX Y Код вулиціX_St Y_St ID_StFkЧисловий(і) Числовий(і) Числовий(і)ціле ціле ціле
ОбєктКод Назва Тип обєкта Номер X Y Код вулиціNum_Obj Name_Obj Type_Obj Nomer_Obj X_Obj Y_Obj ID_StPk FkЧисловий(і) Текстовий(А) Текстовий(А) Числовий(і) Числовий(і) Числовий(і) Числовий(і)ціле 20 10 ціле ціле ціле ціле
5. Звязки між сутностями
Далі необхідно визначити зв‘язки між сутностями, які включені до моделі.
Таблиця 2 - Звязки між сутностями
СутністьТип звязкуЗміст звязку
?aeii Вулиця1:МВ одному районі знаходиться багато вулиць, вулиця входить до одного району.
Вулиця Хронологія1:М Вулиця має багато історичних відомостей, історичні відомості притаманні окремій, одній вулиці.
Вулиця Геометрія1:М Вулиця представляє собою складну геометричну фігуру з унікальними координатами, які відповідають тільки одній вулиці.
Вулиця Обєкт1:МНа вулиці розташовано багато обєктів, обєкт розташований на відповідній вулиці.
6.
Функціональні залежності
Інформаційні обєкти: Район (Part) - (ID_Part , Name_Part);
Створено два застосування з різними правами доступу у програмному середовищі Delphi.
Перше - для адміністратора , з можливістю редагування всіх таблиць БД;
Друге - для користувача “GUEST”, якому встановлено роль “USER1”, права тільки на читання даних з усіх таблиць БД.
Перше застосування призначено для додавання, редагування та видалення даних з усіх таблиць. Друге для перегляду списків таблиць БД.
Опис інтерфейсу розробленої системи, функціональне призначення основних опцій меню
Застосування для адміністратора
1) Головна форма:
IMG_aa97fe0d-bf5c-4f7e-bef7-72d1747a9fb8
Рисунок 3 - Головна форма застосування
2) Запис нових вулиць та редагування:
IMG_f66383bd-c0bd-480c-8747-c1d46e4f1c72
Рисунок 4 - Додавання нового запису
3) Перегляд історії перейменувань вулиць :
IMG_f653639e-0123-449e-879b-dcedf4e5e82d Рисунок 5 - Перегляд хронології перейменувань вулиць
Застосування для користувача з правами тільки на читання
1) Головна форма:
IMG_087bb1f6-ee32-4039-81d4-50197de77af6
Рисунок 6 - Головна форма клієнтського застосування a. Використані компоненти для звязку з сервером INTERBASE
IMG_5fe011b5-36cb-46b2-a0aa-1247a7102fe7
Рисунок 7 - Компоненти для звязку read_committed з сервером rec_version
Для звязування з сервером використані компоненти вкладки INTERBASE: Головний компонент TIBDATABASE - TIBDB1 має параметри: user_name=SYSDBA password=masterkey lc_ctype=WIN1251
Для функціонування застосування використано компонент IBTRANSACTION.
IBTR1 має параметри: read інформаційний вулиця дані інтерфейс
Висновок
На основі отриманих навичок і знань під час виконання лабораторних і практичних робіт, в курсовій роботі, я розробив застосування, яке дозволяє виконувати такі основні дії з наборами даних, як: · перегляд записів;
· внесення записів;
· редагування записів.
Використана література
1. Горев А., Акаян Р., Макашаринов С. Эффективная работа с СУБД - СГБ.: Питер, 1997. - 704 с.
2. Гайна Г.А. Методичні вказівки до виконання курсової роботи з дисципліни «Організація баз даних та знань». - КНУБА, 1999. - 34 с.
if combobox1.ITEMINDEX=0 then DM1.STREET.Fields[3].Value:="вул" else if combobox1.ITEMINDEX=1 then except if (MESSAGEDLG("Помилка! Відмовитись від змін?", MTCONFIRMATION, [MBYES, MBNO], 0) = MRYES) then DM1.IBTR1.Rollback else DM1.IBTR1.Commit;
end;
end else showmessage("Заповніть всі поля");
DM1.GEOMETRY.Active:=false;
DM1.GEOMETRY.Active:=true;
DBGRID3.Refresh;
end;
procedure TFORM1.BITBTN22Click(Sender: TOBJECT);
begin
If DM1.IBTR1.INTRANSACTION then DM1.IBTR1.Commit;
DM1.GEOMETRY.Active:=false;
DM1.GEOMETRY.Active:=true;
DBGRID3.Refresh;
Panel10.Visible:=false;
end;
procedure TFORM1.BITBTN25Click(Sender: TOBJECT);
begin if (DBEDIT14.Text "") AND (DBEDIT15.Text "") AND (DBEDIT16.Text "")
AND (DBLOOKUPCOMBOBOX4.Text "") then begin try
DM1.HISTORY.Post;
except if (MESSAGEDLG("Помилка! Відмовитись від змін?", MTCONFIRMATION, [MBYES, MBNO], 0) = MRYES) then DM1.IBTR1.Rollback else DM1.IBTR1.Commit;
end;
end else showmessage("Заповніть всі поля");
DM1.HISTORY.Active:=false;
DM1.HISTORY.Active:=true;
DBGRID4.Refresh;
end;
procedure TFORM1.BITBTN24Click(Sender: TOBJECT);
begin
If DM1.IBTR1.INTRANSACTION then DM1.IBTR1.Commit;
DM1.HISTORY.Active:=false;
DM1.HISTORY.Active:=true;
DBGRID4.Refresh;
Panel7.Visible:=false;
end;
procedure TFORM1.BITBTN1Click(Sender: TOBJECT);
begin
If not DM1.IBTR1.INTRANSACTION then DM1.IBTR1.STARTTRANSACTION;
DM1.STREET.Insert;
Panel9.Visible:=true;
Panel18.Visible:=true;
GROUPBOX7.Top:=366;
end;
procedure TFORM1.BITBTN5Click(Sender: TOBJECT);
begin
If not DM1.IBTR1.INTRANSACTION then DM1.IBTR1.STARTTRANSACTION;
DM1.PART.Edit;
DM1.PART.Cancel;
Panel6.Visible:=true;
Panel17.Visible:=true;
GROUPBOX6.Top:=230;
end;
procedure TFORM1.BITBTN7Click(Sender: TOBJECT);
begin
If not DM1.IBTR1.INTRANSACTION then DM1.IBTR1.STARTTRANSACTION;
DM1.OBGECT.Insert;
Panel8.Visible:=true;
Panel19.Visible:=true;
GROUPBOX10.Top:=446;
Panel20.Visible:=true;
GROUPBOX8.Top:=260;
end;
procedure TFORM1.N9Click(Sender: TOBJECT);
begin
PC1.ACTIVEPAGE:=TABSHEET5;
Panel7.Visible:=true;
Panel16.Visible:=true;
GROUPBOX9.Top:=310;
end;
procedure TFORM1.N10Click(Sender: TOBJECT);
begin n:=1;
Form2.SHOWMODAL;
end;
procedure TFORM1.N11Click(Sender: TOBJECT);
begin n:=2;
Form2.SHOWMODAL;
end;
procedure TFORM1.N12Click(Sender: TOBJECT);
begin n:=3;
Form2.SHOWMODAL;
end;
function TFORM1.TABSHEET: integer;
begin result:=n;
end;
procedure TFORM1.N13Click(Sender: TOBJECT);
begin n:=4;
Form2.SHOWMODAL;
end;
procedure TFORM1.N14Click(Sender: TOBJECT);
begin n:=5;
Form2.SHOWMODAL;
end;
procedure TFORM1.BITBTN6Click(Sender: TOBJECT);
begin
DM1.PART.Cancel;
if (MESSAGEDLG("Точно видалити запис?", MTCONFIRMATION, [MBYES, MBNO], 0) = MRYES) then begin
If not DM1.IBTR1.INTRANSACTION then DM1.IBTR1.STARTTRANSACTION;
DM1.PART.Delete;
DM1.PART.Active:=false;
DM1.PART.Active:=true;
DBGRID1.Refresh;
Panel6.Visible:=true;
Panel17.Visible:=false;
GROUPBOX6.Top:=40;
end;
end;
procedure TFORM1.BITBTN2Click(Sender: TOBJECT);
begin
If DM1.IBTR1.INTRANSACTION then try
DM1.IBTR1.Commit;
except on Exception do if (MESSAGEDLG("Помилка! Відмовитись від змін?", MTCONFIRMATION, [MBYES, MBNO], 0) = MRYES) then DM1.IBTR1.Rollback else DM1.IBTR1.Commit;
end;
DM1.PART.Active:=false;
DM1.PART.Active:=true;
procedure TFORM1.TABSHEET4Show(Sender: TOBJECT);
begin if DM1.IBTR1.INTRANSACTION then DM1.IBTR1.Commit;
DM1.IBTR1.STARTTRANSACTION;
DM1.GEOMETRY.Active:=false;
DM1.GEOMETRY.Active:=true;
DBGRID3.Refresh;
Panel10.Visible:=false;
end;
procedure TFORM1.TABSHEET5Show(Sender: TOBJECT);
begin if DM1.IBTR1.INTRANSACTION then DM1.IBTR1.Commit;
DM1.IBTR1.STARTTRANSACTION;
DM1.HISTORY.Active:=false;
DM1.HISTORY.Active:=true;
DBGRID4.Refresh;
Panel7.Visible:=false;
end;
procedure TFORM1.BITBTN36Click(Sender: TOBJECT);
begin
If not DM1.IBTR1.INTRANSACTION then DM1.IBTR1.STARTTRANSACTION;
DM1.STREET.Edit;
DM1.STREET.Cancel;
Panel9.Visible:=true;
Panel18.Visible:=true;
GROUPBOX7.Top:=366;
end;
procedure TFORM1.BITBTN28Click(Sender: TOBJECT);
begin
If DM1.IBTR1.INTRANSACTION then DM1.IBTR1.Commit;
DM1.STREET.Active:=false;
DM1.STREET.Active:=true;
DBGRID2.Refresh;
Panel9.Visible:=false;
end;
procedure TFORM1.BITBTN27Click(Sender: TOBJECT);
begin
If DM1.IBTR1.INTRANSACTION then DM1.IBTR1.Rollback;
DM1.STREET.Active:=false;
DM1.STREET.Active:=true;
DBGRID2.Refresh;
Panel9.Visible:=false;
end;
procedure TFORM1.BITBTN9Click(Sender: TOBJECT);
begin
DM1.OBGECT.Cancel;
if (MESSAGEDLG("Точно видалити запис?", MTCONFIRMATION, [MBYES, MBNO], 0) = MRYES) then begin
If not DM1.IBTR1.INTRANSACTION then DM1.IBTR1.STARTTRANSACTION;
DM1.OBGECT.Delete;
DM1.OBGECT.Active:=false;
DM1.OBGECT.Active:=true;
DBGRID6.Refresh;
Panel8.Visible:=true;
Panel19.Visible:=false;
GROUPBOX10.Top:=40;
end;
end;
procedure TFORM1.BITBTN34Click(Sender: TOBJECT);
begin
If DM1.IBTR1.INTRANSACTION then DM1.IBTR1.Commit;
DM1.OBGECT.Active:=false;
DM1.OBGECT.Active:=true;
DBGRID6.Refresh;
Panel8.Visible:=false;
end;
procedure TFORM1.BITBTN33Click(Sender: TOBJECT);
begin
If DM1.IBTR1.INTRANSACTION then DM1.IBTR1.Rollback;
end else if (Form1.TABSHEET=2) then PAGECONTROL1.ACTIVEPAGE:=TABSHEET7 else if (Form1.TABSHEET=3) then PAGECONTROL1.ACTIVEPAGE:=TABSHEET8 else if (Form1.TABSHEET=4) then PAGECONTROL1.ACTIVEPAGE:=TABSHEET1 else PAGECONTROL1.ACTIVEPAGE:=TABSHEET2;
GEOMETRYY_ST: TFLOATFIELD; DM1.STREET.Fields[3].Value:="прос" else if combobox1.ITEMINDEX=2 then DM1.STREET.Fields[3].Value:="пл" else if combobox1.ITEMINDEX=3 then DM1.STREET.Fields[3].Value:="бул" else if combobox1.ITEMINDEX=4 then DM1.STREET.Fields[3].Value:="узв" else if combobox1.ITEMINDEX=5 then DM1.STREET.Fields[3].Value:="пров";
DM1.STREET.Post;
DM1.HISTORY.Active:=false;
DM1.HISTORY.Active:=true;
except if (MESSAGEDLG("Помилка! Відмовитись від змін?", MTCONFIRMATION, [MBYES, MBNO], 0) = MRYES) then DM1.IBTR1.Rollback else DM1.IBTR1.Commit;
end;
end else showmessage("Заповніть всі поля");
DM1.STREET.Active:=false;
DM1.STREET.Active:=true;
DBGRID2.Refresh;
end;
procedure TFORM1.BITBTN18Click(Sender: TOBJECT);
begin
If DM1.IBTR1.INTRANSACTION then DM1.IBTR1.Commit;
DM1.STREET.Active:=false;
DM1.STREET.Active:=true;
DBGRID2.Refresh;
Panel6.Visible:=false;
end;
procedure TFORM1.BITBTN21Click(Sender: TOBJECT);
begin if (DBEDIT5.Text "") AND (DBEDIT6.Text "") AND (DBEDIT8.Text "")
AND (DBEDIT9.Text "") AND (DBEDIT10.Text "") AND (DBEDIT11.Text "")
AND (DBLOOKUPCOMBOBOX2.Text "") then begin try
DM1.OBGECT.Post;
DM1.STREET.Active:=false;
DM1.STREET.Active:=true;
except if (MESSAGEDLG("Помилка! Відмовитись від змін?", MTCONFIRMATION, [MBYES, MBNO], 0) = MRYES) then DM1.IBTR1.Rollback else DM1.IBTR1.Commit;
end;
end else showmessage("Заповніть всі поля");
DM1.OBGECT.Active:=false;
DM1.OBGECT.Active:=true;
DBGRID6.Refresh;
end;
procedure TFORM1.BITBTN20Click(Sender: TOBJECT);
begin
If DM1.IBTR1.INTRANSACTION then DM1.IBTR1.Commit;
DM1.OBGECT.Active:=false;
DM1.OBGECT.Active:=true;
DBGRID6.Refresh;
Panel8.Visible:=false;
end;
procedure TFORM1.BITBTN23Click(Sender: TOBJECT);
begin if (DBEDIT12.Text "") AND (DBEDIT13.Text "")
AND (DBLOOKUPCOMBOBOX3.Text "") then begin try
DM1.GEOMETRY.Post;
end;
procedure TFORM1.BITBTN8Click(Sender: TOBJECT);
begin
If not DM1.IBTR1.INTRANSACTION then DM1.IBTR1.STARTTRANSACTION;
DM1.OBGECT.Edit;
DM1.OBGECT.Cancel;
Panel8.Visible:=true;
Panel19.Visible:=true;
GROUPBOX10.Top:=446;
end;
procedure TFORM1.BITBTN10Click(Sender: TOBJECT);
begin
If not DM1.IBTR1.INTRANSACTION then DM1.IBTR1.STARTTRANSACTION;
DM1.GEOMETRY.Insert;
Panel10.Visible:=true;
Panel20.Visible:=true;
GROUPBOX8.Top:=260;
end;
procedure TFORM1.BITBTN11Click(Sender: TOBJECT);
begin
If not DM1.IBTR1.INTRANSACTION then DM1.IBTR1.STARTTRANSACTION;
DM1.GEOMETRY.Edit;
DM1.GEOMETRY.Cancel;
Panel10.Visible:=true;
Panel20.Visible:=true;
GROUPBOX8.Top:=260;
end;
procedure TFORM1.BITBTN13Click(Sender: TOBJECT);
begin
If not DM1.IBTR1.INTRANSACTION then DM1.IBTR1.STARTTRANSACTION;
DM1.HISTORY.Insert;
Panel7.Visible:=true;
Panel16.Visible:=true;
GROUPBOX9.Top:=310;
end;
procedure TFORM1.BITBTN14Click(Sender: TOBJECT);
begin
If not DM1.IBTR1.INTRANSACTION then DM1.IBTR1.STARTTRANSACTION;
DM1.HISTORY.Edit;
DM1.HISTORY.Cancel;
Panel7.Visible:=true;
Panel16.Visible:=true;
GROUPBOX9.Top:=310;
end;
procedure TFORM1.N5Click(Sender: TOBJECT);
begin
PC1.ACTIVEPAGE:=TABSHEET1;
Panel6.Visible:=true;
Panel17.Visible:=true;
GROUPBOX6.Top:=230;
end;
procedure TFORM1.N6Click(Sender: TOBJECT);
begin
PC1.ACTIVEPAGE:=TABSHEET2;
Panel9.Visible:=true;
Panel18.Visible:=true;
GROUPBOX7.Top:=366;
end;
procedure TFORM1.N7Click(Sender: TOBJECT);
begin
PC1.ACTIVEPAGE:=TABSHEET3;
Panel8.Visible:=true;
Panel19.Visible:=true;
GROUPBOX10.Top:=446;
end;
procedure TFORM1.N8Click(Sender: TOBJECT);
begin
PC1.ACTIVEPAGE:=TABSHEET4;
Panel10.Visible:=true;
DBGRID1.Refresh;
Panel6.Visible:=false;
end;
procedure TFORM1.BITBTN26Click(Sender: TOBJECT);
begin
If DM1.IBTR1.INTRANSACTION then DM1.IBTR1.Rollback;
DM1.PART.Active:=false;
DM1.PART.Active:=true;
DBGRID1.Refresh;
Panel6.Visible:=false;
end;
procedure TFORM1.BITBTN16Click(Sender: TOBJECT);
begin if (DBEDIT1.Text "") AND (DBEDIT2.Text "") then begin try
DM1.PART.Post;
except on Exception do showmessage("Некорктно заповнені поля!");
end;
end else showmessage("Заповніть всі поля");
DM1.PART.Active:=false;
DM1.PART.Active:=true;
DBGRID1.Refresh;
end;
procedure TFORM1.BITBTN3Click(Sender: TOBJECT);
begin
DM1.STREET.Cancel;
if (MESSAGEDLG("Точно видалити запис?", MTCONFIRMATION, [MBYES, MBNO], 0) = MRYES) then begin
If not DM1.IBTR1.INTRANSACTION then DM1.IBTR1.STARTTRANSACTION;
DM1.STREET.Delete;
DM1.STREET.Active:=false;
DM1.STREET.Active:=true;
DBGRID2.Refresh;
Panel9.Visible:=true;
Panel18.Visible:=false;
GROUPBOX7.Top:=40;
end;
end;
procedure TFORM1.TABSHEET1Show(Sender: TOBJECT);
begin if DM1.IBTR1.INTRANSACTION then DM1.IBTR1.Commit;
DM1.IBTR1.STARTTRANSACTION;
DM1.PART.Active:=false;
DM1.PART.Active:=true;
DBGRID1.Refresh;
Panel6.Visible:=false;
Panel17.Visible:=true;
GROUPBOX6.Top:=230;
end;
procedure TFORM1.TABSHEET2Show(Sender: TOBJECT);
begin if DM1.IBTR1.INTRANSACTION then DM1.IBTR1.Commit;
DM1.IBTR1.STARTTRANSACTION;
DM1.STREET.Active:=false;
DM1.STREET.Active:=true;
DBGRID2.Refresh;
Panel9.Visible:=false;
end;
procedure TFORM1.TABSHEET3Show(Sender: TOBJECT);
begin if DM1.IBTR1.INTRANSACTION then DM1.IBTR1.Commit;
DM1.IBTR1.STARTTRANSACTION;
DM1.OBGECT.Active:=false;
DM1.OBGECT.Active:=true;
DBGRID6.Refresh;
Panel8.Visible:=false;
end;
DM1.OBGECT.Active:=false;
DM1.OBGECT.Active:=true;
DBGRID6.Refresh;
Panel8.Visible:=false;
end;
procedure TFORM1.BITBTN12Click(Sender: TOBJECT);
begin
DM1.GEOMETRY.Cancel;
if (MESSAGEDLG("Точно видалити запис?", MTCONFIRMATION, [MBYES, MBNO], 0) = MRYES) then begin
If not DM1.IBTR1.INTRANSACTION then DM1.IBTR1.STARTTRANSACTION;
DM1.GEOMETRY.Delete;
DM1.GEOMETRY.Active:=false;
DM1.GEOMETRY.Active:=true;
DBGRID3.Refresh;
Panel10.Visible:=true;
Panel20.Visible:=false;
GROUPBOX8.Top:=40;
end;
end;
procedure TFORM1.BITBTN30Click(Sender: TOBJECT);
begin
If DM1.IBTR1.INTRANSACTION then DM1.IBTR1.Commit;
DM1.GEOMETRY.Active:=false;
DM1.GEOMETRY.Active:=true;
DBGRID3.Refresh;
Panel10.Visible:=false;
end;
procedure TFORM1.BITBTN29Click(Sender: TOBJECT);
begin
If DM1.IBTR1.INTRANSACTION then DM1.IBTR1.Rollback;
DM1.GEOMETRY.Active:=false;
DM1.GEOMETRY.Active:=true;
DBGRID3.Refresh;
Panel10.Visible:=false;
end;
procedure TFORM1.BITBTN15Click(Sender: TOBJECT);
begin
DM1.HISTORY.Cancel;
if (MESSAGEDLG("Точно видалити запис?", MTCONFIRMATION, [MBYES, MBNO], 0) = MRYES) then begin if not DM1.IBTR1.INTRANSACTION then DM1.IBTR1.STARTTRANSACTION;
DM1.HISTORY.Delete;
DM1.HISTORY.Active:=false;
DM1.HISTORY.Active:=true;
DBGRID4.Refresh;
Panel7.Visible:=true;
Panel16.Visible:=false;
GROUPBOX9.Top:=40;
end;
end;
procedure TFORM1.BITBTN32Click(Sender: TOBJECT);
begin
If DM1.IBTR1.INTRANSACTION then DM1.IBTR1.Commit;
DM1.HISTORY.Active:=false;
DM1.HISTORY.Active:=true;
DBGRID4.Refresh;
Panel7.Visible:=false;
end;
procedure TFORM1.BITBTN31Click(Sender: TOBJECT);
begin
If DM1.IBTR1.INTRANSACTION then DM1.IBTR1.Rollback;
end else if (Form1.TABSHEET=2) then PAGECONTROL1.ACTIVEPAGE:=TABSHEET7 else if (Form1.TABSHEET=3) then PAGECONTROL1.ACTIVEPAGE:=TABSHEET8 else if (Form1.TABSHEET=4) then PAGECONTROL1.ACTIVEPAGE:=TABSHEET1 else PAGECONTROL1.ACTIVEPAGE:=TABSHEET2;