Розробка інформаційної системи для виконання перегляду відомостей про вулиці м. Києва, їх розташування, параметри та історію. Концептуальна і даталогічна модель бази даних. Зв’язки між сутностями. Oпис реалізації клієнтських застосувань та інтерфейсу.
При низкой оригинальности работы "Розробка інформаційної системи відомостей про вулиці м. Києва", Вы можете повысить уникальность этой работы до 80-100%
Опис предметного середовища та постановка задачі Даталогічна модель бази даних
Список литературы
Документація
Додатки
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;