Розробка інформаційної системи відомостей про вулиці м. Києва - Курсовая работа

бесплатно 0
4.5 114
Розробка інформаційної системи для виконання перегляду відомостей про вулиці м. Києва, їх розташування, параметри та історію. Концептуальна і даталогічна модель бази даних. Зв’язки між сутностями. 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);

Вулиця(Street) - (ID_St, Name_St, Type_St, Type_Short, Count_St);

Обєкт(Object) - (Num_Obj, Name_Obj, Type_Obj, X_Obj, Y_Obj);

Хронологія(History) - (Num_H, Name_New, Date_Create);

Геометрія(Geometry) - (X_St, Y_St).

Аналіз даних дозволяє визначити наступі функціональні залежності: ID_Part ® Name_Part

ID_St ® Name_St, Type_St, Type_Short, Count_St, ID_Part

Num_Obj ® Name_Obj, Type_Obj, X_Obj, Y_Obj, ID_St

Num_H ® Name_New, Date_Create, ID_St

X_St, Y_St ® ID_St

7. Опис реалізації проекту бази даних

Опис реалізації клієнтських застосувань

Створено два застосування з різними правами доступу у програмному середовищі 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 с.

3. Конспект лекцій з баз даних. - 96 с.

Додаток1

Метадані бази даних KIEV_STRET.GDB

SET SQL DIALECT 1;

/* CREATE DATABASE "C:\Kiev_Street\KIEV_STREET.gdb" PAGE_SIZE 4096

DEFAULT CHARACTER SET WIN1251 */

/* Domain definitions */

CREATE DOMAIN DOM_20 AS VARCHAR(20) CHARACTER SET WIN1251 COLLATE PXW_CYRL;

CREATE DOMAIN DOM_FK AS INTEGER;

CREATE DOMAIN DOM_PK AS INTEGER NOT NULL;

CREATE DOMAIN DOM_STYPE AS VARCHAR(4) CHARACTER SET WIN1251

CHECK(VALUE IN ("вул", "прос", "бул", "пл", "пров", "узв"));

CREATE DOMAIN DOM_TYPE AS VARCHAR(12) CHARACTER SET WIN1251

CHECK (VALUE IN ("вулиця", "проспект", бульвар", "площа", "провулок", "узвіз"));

/* Table: GEOMETRY, Owner: SYSDBA */

CREATE TABLE GEOMETRY

(

X_STFLOAT, Y_STFLOAT, ID_STDOM_FK

);

/* Table: HISTORY, Owner: SYSDBA */

CREATE TABLE HISTORY

(

NUM_HDOM_PK, NAME_NEWDOM_20, DATE_CREATETIMESTAMP, ID_STDOM_FK, CONSTRAINT PK_H PRIMARY KEY (NUM_H)

);

/* Table: OBJECT, Owner: SYSDBA */

CREATE TABLE OBJECT

(

NUM_OBJDOM_PK, NAME_OBJDOM_20, TYPE_OBJDOM_20, NOMER_OBJVARCHAR(10) CHARACTER SET WIN1251, X_OBJFLOAT, Y_OBJFLOAT, ID_STDOM_FK, CONSTRAINT PK_OBJ PRIMARY KEY (NUM_OBJ)

);

/* Table: PART, Owner: SYSDBA */

CREATE TABLE PART

(

ID_PARTDOM_PK, NAME_PARTDOM_20, CONSTRAINT PK_PART PRIMARY KEY (ID_PART)

);

/* Table: STREET, Owner: SYSDBA */

CREATE TABLE STREET

(

ID_STDOM_PK, NAME_STDOM_20, TYPE_STDOM_TYPE, TYPE_SHORTDOM_STYPE, COUNT_STINTEGER, ID_PARTDOM_FK, CONSTRAINT PK_ST PRIMARY KEY (ID_ST)

);

FROM STREET

INTO :SNAME, :STYPE, :SCOUNT

DO

BEGIN

SUSPEND;

END

END

^

ALTER PROCEDURE PROC2

RETURNS

(

SCOUNT INTEGER

)

AS

BEGIN

FOR

SELECT COUNT(NUM_OBJ)

FROM OBJECT

INTO :SCOUNT

DO

BEGIN

SUSPEND;

END

END

^

ALTER PROCEDURE PROC3

(

SNAME VARCHAR(20) CHARACTER SET WIN1251, SFROM TIMESTAMP, STO TIMESTAMP

)

RETURNS

(

SCOUNT INTEGER

)

AS

BEGIN

SCOUNT=0;

FOR

SELECT COUNT(H.NUM_H)

FROM HISTORY H INNER JOIN STREET S ON H.ID_ST=S.ID_ST

WHERE NAME_ST=:SNAME AND DATE_CREATE BETWEEN :SFROM AND :STO

INTO :SCOUNT

DO

BEGIN

SUSPEND;

END

END

^

ALTER PROCEDURE PROC4

(

SNAME VARCHAR(20) CHARACTER SET WIN1251

)

RETURNS

(

SX FLOAT, SY FLOAT

)

AS

BEGIN

FOR

SELECT G.X_ST, G.Y_ST

FROM GEOMETRY G INNER JOIN STREET S ON G.ID_ST=S.ID_ST

WHERE NAME_ST=:SNAME

INTO :SX, :SY

DO

BEGIN

SUSPEND;

END

END

^

SET TERM ; ^

COMMIT WORK;

HISTORY.ID_ST)

VALUES (:I, NEW.NAME_ST, :D, NEW.ID_ST);

END

^

CREATE TRIGGER TRHISTORY_UPD FOR STREET

ACTIVE AFTER UPDATE POSITION 0

AS

DECLARE VARIABLE D DATE;

DECLARE VARIABLE I INTEGER;

BEGIN

I=GEN_ID(GEN_H,0);

D="NOW";

IF (NEW.NAME_STOLD.NAME_ST) THEN

BEGIN

INSERT INTO HISTORY(HISTORY.NUM_H, HISTORY.NAME_NEW, HISTORY.DATE_CREATE, HISTORY.ID_ST)

VALUES (:I, NEW.NAME_ST, :D, NEW.ID_ST);

END

END

^

COMMIT WORK ^

SET TERM ;^

/* Grant Roles for this database */

/* Role: ADMINISTRATOR, Owner: SYSDBA */

CREATE ROLE ADMINISTRATOR;

CREATE ROLE USER1;

/* Grant permissions for this database */

GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON GEOMETRY TO ADMINISTRATOR;

GRANT SELECT ON GEOMETRY TO USER1;

GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON HISTORY TO ADMINISTRATOR;

GRANT SELECT ON HISTORY TO USER1;

GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON OBJECT TO ADMINISTRATOR;

GRANT SELECT ON OBJECT TO USER1;

GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON PART TO ADMINISTRATOR;

GRANT SELECT ON PART TO USER1;

GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON STREET TO ADMINISTRATOR;

GRANT SELECT ON STREET TO USER1;

GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON V_HISTORY TO ADMINISTRATOR;

GRANT SELECT ON V_HISTORY TO USER1;

GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON V_OBJ TO ADMINISTRATOR;

GRANT SELECT ON V_OBJ TO USER1;

GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON V_PART TO ADMINISTRATOR;

GRANT SELECT ON V_PART TO USER1;

GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON V_PCOUNT TO ADMINISTRATOR;

GRANT SELECT ON V_PCOUNT TO USER1;

GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON V_ST TO ADMINISTRATOR;

GRANT SELECT ON V_ST TO USER1;

GRANT ADMINISTRATOR TO DENNIS;

GRANT USER1 TO GUEST;

GRANT EXECUTE ON PROCEDURE PROC1 TO ADMINISTRATOR;

GRANT EXECUTE ON PROCEDURE PROC1 TO USER1;

GRANT EXECUTE ON PROCEDURE PROC2 TO ADMINISTRATOR;

GRANT EXECUTE ON PROCEDURE PROC2 TO USER1;

GRANT EXECUTE ON PROCEDURE PROC3 TO ADMINISTRATOR;

/* View: V_HISTORY, Owner: SYSDBA */

CREATE VIEW V_HISTORY (

NUM_H, NAME_NEW, DATE_CREATE, NAME_ST

) AS select H.NUM_H, H.NAME_NEW, H.DATE_CREATE, S.NAME_ST

FROM HISTORY H, STREET S

WHERE S.ID_ST=H.ID_ST

;

COMMIT WORK;

SET AUTODDL OFF;

SET TERM ^ ;

/* Stored procedures */

CREATE PROCEDURE PROC1

RETURNS

(

SNAME VARCHAR(20) CHARACTER SET WIN1251, STYPE VARCHAR(20) CHARACTER SET WIN1251, SCOUNT INTEGER

)

AS

BEGIN EXIT; END ^

CREATE PROCEDURE PROC2

RETURNS

(

SCOUNT INTEGER

)

AS

BEGIN EXIT; END ^

CREATE PROCEDURE PROC3

(

SNAME VARCHAR(20) CHARACTER SET WIN1251, SFROM TIMESTAMP, STO TIMESTAMP

)

RETURNS

(

SCOUNT INTEGER

)

AS

BEGIN EXIT; END ^

CREATE PROCEDURE PROC4

(

SNAME VARCHAR(20) CHARACTER SET WIN1251

)

RETURNS

(

SX FLOAT, SY FLOAT

)

AS

BEGIN EXIT; END ^

ALTER PROCEDURE PROC1

RETURNS

(

SNAME VARCHAR(20) CHARACTER SET WIN1251, STYPE VARCHAR(20) CHARACTER SET WIN1251, SCOUNT INTEGER

)

AS

BEGIN

FOR

SELECT NAME_ST, TYPE_ST, COUNT_ST

SET AUTODDL ON;

SET TERM ^;

/* Triggers only will work for SQL triggers */

CREATE TRIGGER ON_GENH FOR HISTORY

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

NEW.NUM_H = GEN_ID(GEN_H,1);

END

^

CREATE TRIGGER ON_GENOBJ FOR OBJECT

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

NEW.NUM_OBJ = GEN_ID(GEN_OBJ,1);

END

^

CREATE TRIGGER TRCOUNT FOR OBJECT

ACTIVE AFTER INSERT POSITION 0

AS

BEGIN

UPDATE STREET

SET STREET.COUNT_ST = (SELECT COUNT(OBJECT.NUM_OBJ) FROM OBJECT WHERE STREET.ID_ST=OBJECT.ID_ST);

END

^

CREATE TRIGGER TRCOUNT_U FOR OBJECT

ACTIVE AFTER UPDATE POSITION 0

AS

BEGIN

UPDATE STREET

SET STREET.COUNT_ST = (SELECT COUNT(OBJECT.NUM_OBJ) FROM OBJECT WHERE STREET.ID_ST=OBJECT.ID_ST);

END

^

CREATE TRIGGER TRCOUNT_D FOR OBJECT

ACTIVE AFTER DELETE POSITION 0

AS

BEGIN

UPDATE STREET

SET STREET.COUNT_ST = (SELECT COUNT(OBJECT.NUM_OBJ) FROM OBJECT WHERE STREET.ID_ST=OBJECT.ID_ST);

END

^

CREATE TRIGGER ON_GENPART FOR PART

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

NEW.ID_PART = GEN_ID(GEN_PART,1);

END

^

CREATE TRIGGER ON_GENST FOR STREET

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

NEW.ID_ST = GEN_ID(GEN_ST,1);

END

^

CREATE TRIGGER TRHISTORY_INS FOR STREET

ACTIVE AFTER INSERT POSITION 0

AS

DECLARE VARIABLE D DATE;

DECLARE VARIABLE I INTEGER;

BEGIN

I=GEN_ID(GEN_H,0);

D="NOW";

INSERT INTO HISTORY(HISTORY.NUM_H, HISTORY.NAME_NEW, HISTORY.DATE_CREATE, GRANT EXECUTE ON PROCEDURE PROC3 TO USER1;

GRANT EXECUTE ON PROCEDURE PROC4 TO ADMINISTRATOR;

GRANT EXECUTE ON PROCEDURE PROC4 TO USER1;

Додаток 2

Програмні модулі Delphi

Застосування для адміністратора unit BD;

interface uses

Windows, Messages, SYSUTILS, Variants, Classes, Graphics, Controls, Forms, Dialogs, COMCTRLS, Grids, DBGRIDS, Menus, EXTCTRLS, STDCTRLS, Buttons, DBCTRLS, Mask;

…..… var

Form1: TFORM1;

n: integer;

implementation uses DATAMODULE1, BD2;

{$R *.dfm} procedure TFORM1.N2Click(Sender: TOBJECT);

begin close;

end;

procedure TFORM1.FORMCREATE(Sender: TOBJECT);

begin

PC1.ACTIVEPAGE:=TABSHEET1;

n:=0;

end;

procedure TFORM1.BITBTN4Click(Sender: TOBJECT);

begin

If not DM1.IBTR1.INTRANSACTION then DM1.IBTR1.STARTTRANSACTION;

DM1.PART.Insert;

Panel6.Visible:=true;

Panel17.Visible:=true;

GROUPBOX6.Top:=230;

end;

procedure TFORM1.BITBTN17Click(Sender: TOBJECT);

begin

If DM1.IBTR1.INTRANSACTION then begin

DM1.IBTR1.Commit;

//DM1.PART.Open;

end;

DM1.PART.Active:=false;

DM1.PART.Active:=true;

DBGRID1.Refresh;

Panel6.Visible:=false;

end;

procedure TFORM1.BITBTN19Click(Sender: TOBJECT);

begin if (DBEDIT3.Text "") AND (DBEDIT4.Text "") AND (DBEDIT4.Text "")

AND (Combobox1.Text "") AND (DBLOOKUPCOMBOBOX1.Text "") then begin try

DM1.STREET.FIELDBYNAME("TYPE_ST").ASSTRING:=combobox1.Text;

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;

Form1.close;

end;

end. unit BD2;

interface uses

Windows, Messages, SYSUTILS, Variants, Classes, Graphics, Controls, Forms, Dialogs, COMCTRLS, DBCTRLS, Grids, DBGRIDS, EXTCTRLS, STDCTRLS;

………… var

Form2: TFORM2;

v: integer;

implementation uses BD, DATAMODULE1;

{$R *.dfm} procedure TFORM2.FORMACTIVATE(Sender: TOBJECT);

begin if (Form1.TABSHEET=1) then begin

PAGECONTROL1.ACTIVEPAGE:=TABSHEET6;

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;

end;

procedure TFORM2.TABSHEET7Show(Sender: TOBJECT);

begin

DM1.IBQ5.SQL.Clear;

DM1.IBQ5.SQL.Add("select * FROM proc1");

DM1.IBQ5.Open;

DM1.IBQ5.Active:=false;

DM1.IBQ5.Active:=true;

DBGRID1.Refresh;

DM1.IBQ3.Active:=false;

DM1.IBQ3.Active:=true;

DBGRID8.Refresh;

DBGRID1.Columns[0].Title.Caption:="Вулиця";

DBGRID1.Columns[1].Title.Caption:="Тип";

DBGRID1.Columns[2].Title.Caption:="Кількість будівель";

end;

procedure TFORM2.TABSHEET8Show(Sender: TOBJECT);

begin

DM1.IBPROC1.Prepare;

DM1.IBPROC1.EXECPROC;

STATUSBAR9.Panels[1].Text:="Всього будівель: " DM1.IBPROC1.Parambyname("SCOUNT").ASSTRING;

DM1.IBPROC1.Cancel;

DM1.IBQ4.Active:=false;

DM1.IBQ4.Active:=true;

DBGRID9.Refresh;

end;

procedure TFORM2.Button1Click(Sender: TOBJECT);

begin if (edit3.text "") and (edit2.text "") and (edit1.text "") then begin

DM1.IBPROC2.PARAMBYNAME("SNAME").Value:=edit3.Text;

DM1.IBQ7.Open;

DM1.IBQ7.Active:=false;

DM1.IBQ7.Active:=true;

DBGRID2.Refresh;

end;

procedure TFORM2.TABSHEET6Show(Sender: TOBJECT);

begin

DM1.IBQ1.Active:=false;

DM1.IBQ1.Active:=true;

DM1.IBQ2.Active:=false;

DM1.IBQ2.Active:=true;

DBGRID5.Refresh;

DBGRID7.Refresh;

end;

procedure TFORM2.TABSHEET2Show(Sender: TOBJECT);

begin

DM1.IBQ6.Active:=false;

DM1.IBQ6.Active:=true;

DBGRID4.Refresh;

DBGRID4.Columns[0].Title.Caption:="X";

DBGRID4.Columns[1].Title.Caption:="Y";

DBGRID4.Columns[2].Title.Caption:="Вулиця";

end;

end. unit DATAMODULE1;

interface uses

SYSUTILS, Classes, IBDATABASE, DB, IBCUSTOMDATASET, IBTABLE, IBQUERY, IBSTOREDPROC;

type

TDM1 = class(TDATAMODULE)

IBDB1: TIBDATABASE;

PART: TIBTABLE;

STREET: TIBTABLE;

DS1: TDATASOURCE;

DS2: TDATASOURCE;

IBTR1: TIBTRANSACTION;

OBGECT: TIBTABLE;

HISTORY: TIBTABLE;

GEOMETRY: TIBTABLE;

DS3: TDATASOURCE;

DS4: TDATASOURCE;

DS5: TDATASOURCE;

IBQ1: TIBQUERY;

IBQ2: TIBQUERY;

IBQ3: TIBQUERY;

DATASOURCE1: TDATASOURCE;

HISTORYNUM_H: TINTEGERFIELD;

HISTORYNAME_NEW: TIBSTRINGFIELD;

HISTORYDATE_CREATE: TDATETIMEFIELD;

HISTORYID_ST: TINTEGERFIELD;

STREETID_ST: TINTEGERFIELD;

STREETNAME_ST: TIBSTRINGFIELD;

STREETTYPE_ST: TIBSTRINGFIELD;

STREETTYPE_SHORT: TIBSTRINGFIELD;

STREETCOUNT_ST: TINTEGERFIELD;

STREETFIELD: TSTRINGFIELD;

STREETID_PART: TINTEGERFIELD;

OBGECTNUM_OBJ: TINTEGERFIELD;

OBGECTNAME_OBJ: TIBSTRINGFIELD;

OBGECTTYPE_OBJ: TIBSTRINGFIELD;

OBGECTNOMER_OBJ: TIBSTRINGFIELD;

OBGECTX_OBJ: TFLOATFIELD;

OBGECTY_OBJ: TFLOATFIELD;

OBGECTID_ST: TINTEGERFIELD;

OBGECTFIELD: TSTRINGFIELD;

GEOMETRYX_ST: TFLOATFIELD;

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;

DM1.HISTORY.Active:=false;

DM1.HISTORY.Active:=true;

DBGRID4.Refresh;

Panel7.Visible:=false;

end;

procedure TFORM1.BITBTN35Click(Sender: TOBJECT);

begin

DM1.IBPROC2.PARAMBYNAME("SFROM").Value:=edit2.Text;

DM1.IBPROC2.PARAMBYNAME("STO").Value:=edit1.Text;

DM1.IBPROC2.Prepare;

try

DM1.IBPROC2.EXECPROC;

except SHOWMESSAGE("Не коректно введана інформація")end;

STATUSBAR2.Panels[1].Text:="Знайдено: " DM1.IBPROC2.Parambyname("SCOUNT").ASSTRING;

DM1.IBPROC2.Cancel;

DM1.IBQ7.SQL.Clear;

DM1.IBQ7.SQL.Text:=("select * from V_HISTORY where NAME_ST=:NEW");

if not DM1.IBQ7.prepared then DM1.IBQ7.prepare;

DM1.IBQ7.PARAMBYNAME("NEW").ASSTRING:=edit3.Text;

try

DM1.IBQ7.Open;

except SHOWMESSAGE("Не коректно введана інформація")end;

DM1.IBQ7.Active:=false;

DM1.IBQ7.Active:=true;

DBGRID2.Refresh;

Edit1.Clear;

Edit2.Clear;

Edit3.Clear;

end else showmessage("Заповніть всі поля");

end;

procedure TFORM2.TABSHEET1Show(Sender: TOBJECT);

begin

DM1.IBQ7.SQL.Clear;

DM1.IBQ7.SQL.Text:=("select * from V_HISTORY");

DM1.IBQ7.Open;

DM1.IBQ7.Active:=false;

DM1.IBQ7.Active:=true;

DBGRID2.Refresh;

DBGRID2.Columns[0].Title.Caption:="Номер запису";

DBGRID2.Columns[1].Title.Caption:="Нова назва";

DBGRID2.Columns[2].Title.Caption:="Дата створення";

DBGRID2.Columns[3].Title.Caption:="Поточна назва";

end;

procedure TFORM2.Button3Click(Sender: TOBJECT);

begin if (edit9.text "") then begin

DM1.IBQ6.SQL.Clear;

DM1.IBQ6.SQL.Text:=("select * from PROC4(:NEW)");

DM1.IBQ6.PARAMBYNAME("NEW").ASSTRING:=edit9.Text;

try

DM1.IBQ6.Open;

except SHOWMESSAGE("Не коректно введана інформація") end;

DM1.IBQ6.Active:=false;

DM1.IBQ6.Active:=true;

DBGRID4.Refresh;

Edit9.Clear;

end else showmessage("Введіть дані");

end;

procedure TFORM2.Button2Click(Sender: TOBJECT);

begin

DM1.IBQ6.SQL.Clear;

DM1.IBQ6.SQL.Text:=("select G.X_ST, G.Y_ST, S.NAME_ST from STREET S, GEOMETRY G where S.ID_ST=G.ID_ST");

DM1.IBQ6.Open;

DM1.IBQ6.Active:=false;

DM1.IBQ6.Active:=true;

DBGRID4.Refresh;

end;

procedure TFORM2.Button4Click(Sender: TOBJECT);

begin

STATUSBAR2.Panels[1].Text:="";

DM1.IBQ7.SQL.Clear;

DM1.IBQ7.SQL.Text:=("select * from V_HISTORY");

GEOMETRYID_ST: TINTEGERFIELD;

GEOMETRYFIELD: TSTRINGFIELD;

HISTORYFIELD: TSTRINGFIELD;

PARTID_PART: TINTEGERFIELD;

PARTNAME_PART: TIBSTRINGFIELD;

DATASOURCE2: TDATASOURCE;

DATASOURCE3: TDATASOURCE;

IBPROC1: TIBSTOREDPROC;

IBPROC2: TIBSTOREDPROC;

IBQ4: TIBQUERY;

IBQ5: TIBQUERY;

IBQ6: TIBQUERY;

DATASOURCE4: TDATASOURCE;

DATASOURCE5: TDATASOURCE;

DATASOURCE6: TDATASOURCE;

DATASOURCE7: TDATASOURCE;

IBQ7: TIBQUERY;

procedure IBDB1AFTERCONNECT(Sender: TOBJECT);

private

{ Private declarations } public

{ Public declarations } end;

var

DM1: TDM1;

implementation

{$R *.dfm} end.

Застосування для користувача з правами тільки на читання даних unit BD;

interface uses

Windows, Messages, SYSUTILS, Variants, Classes, Graphics, Controls, Forms, Dialogs, COMCTRLS, Grids, DBGRIDS, Menus, EXTCTRLS, STDCTRLS, Buttons, DBCTRLS, Mask;

…………… var

Form1: TFORM1;

n: integer;

implementation uses DATAMODULE1, BD2;

{$R *.dfm} procedure TFORM1.N2Click(Sender: TOBJECT);

begin close;

end;

procedure TFORM1.FORMCREATE(Sender: TOBJECT);

begin

PC1.ACTIVEPAGE:=TABSHEET1;

n:=0;

BITBTN35.Align:=ALRIGHT;

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.BITBTN35Click(Sender: TOBJECT);

begin

Form1.close;

end;

end. try

DM1.IBPROC2.EXECPROC;

except SHOWMESSAGE("Не коректно введана інформація")end;

STATUSBAR2.Panels[1].Text:="Знайдено: " DM1.IBPROC2.Parambyname("SCOUNT").ASSTRING;

DM1.IBPROC2.Cancel;

DM1.IBQ7.SQL.Clear;

DM1.IBQ7.SQL.Text:=("select * from V_HISTORY where NAME_ST=:NEW");

if not DM1.IBQ7.prepared then DM1.IBQ7.prepare;

DM1.IBQ7.PARAMBYNAME("NEW").ASSTRING:=edit3.Text;

try

DM1.IBQ7.Open;

except SHOWMESSAGE("Не коректно введана інформація")end;

DM1.IBQ7.Active:=false;

DM1.IBQ7.Active:=true;

DBGRID2.Refresh;

Edit1.Clear;

Edit2.Clear;

Edit3.Clear;

end else showmessage("Заповніть всі поля");

end;

procedure TFORM2.TABSHEET1Show(Sender: TOBJECT);

begin

DM1.IBQ7.SQL.Clear;

DM1.IBQ7.SQL.Text:=("select * from V_HISTORY");

DM1.IBQ7.Open;

DM1.IBQ7.Active:=false;

DM1.IBQ7.Active:=true;

DBGRID2.Refresh;

DBGRID2.Columns[0].Title.Caption:="Номер запису";

DBGRID2.Columns[1].Title.Caption:="Нова назва";

DBGRID2.Columns[2].Title.Caption:="Дата створення";

DBGRID2.Columns[3].Title.Caption:="Поточна назва";

end;

procedure TFORM2.Button3Click(Sender: TOBJECT);

begin if (edit9.text "") then begin

DM1.IBQ6.SQL.Clear;

DM1.IBQ6.SQL.Text:=("select * from PROC4(:NEW)");

DM1.IBQ6.PARAMBYNAME("NEW").ASSTRING:=edit9.Text;

try

DM1.IBQ6.Open;

except SHOWMESSAGE("Не коректно введана інформація") end;

DM1.IBQ6.Active:=false;

DM1.IBQ6.Active:=true;

DBGRID4.Refresh;

Edit9.Clear;

end else showmessage("Введіть дані");

end;

procedure TFORM2.Button2Click(Sender: TOBJECT);

begin

DM1.IBQ6.SQL.Clear;

DM1.IBQ6.SQL.Text:=("select G.X_ST, G.Y_ST, S.NAME_ST from STREET S, GEOMETRY G where S.ID_ST=G.ID_ST");

DM1.IBQ6.Open;

DM1.IBQ6.Active:=false;

DM1.IBQ6.Active:=true;

DBGRID4.Refresh;

end;

unit BD2;

interface uses

Windows, Messages, SYSUTILS, Variants, Classes, Graphics, Controls, Forms, Dialogs, COMCTRLS, DBCTRLS, Grids, DBGRIDS, EXTCTRLS, STDCTRLS;

………….. var

Form2: TFORM2;

v: integer;

implementation uses BD, DATAMODULE1;

{$R *.dfm} procedure TFORM2.FORMACTIVATE(Sender: TOBJECT);

begin if (Form1.TABSHEET=1) then begin

PAGECONTROL1.ACTIVEPAGE:=TABSHEET6;

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;

end;

procedure TFORM2.TABSHEET7Show(Sender: TOBJECT);

begin

DM1.IBQ5.SQL.Clear;

DM1.IBQ5.SQL.Add("select * FROM proc1");

DM1.IBQ5.Open;

DM1.IBQ5.Active:=false;

DM1.IBQ5.Active:=true;

DBGRID1.Refresh;

DM1.IBQ3.Active:=false;

DM1.IBQ3.Active:=true;

DBGRID8.Refresh;

DBGRID1.Columns[0].Title.Caption:="Вулиця";

DBGRID1.Columns[1].Title.Caption:="Тип";

DBGRID1.Columns[2].Title.Caption:="Кількість будівель";

end;

procedure TFORM2.TABSHEET8Show(Sender: TOBJECT);

begin

DM1.IBPROC1.Prepare;

DM1.IBPROC1.EXECPROC;

STATUSBAR9.Panels[1].Text:="Всього будівель: " DM1.IBPROC1.Parambyname("SCOUNT").ASSTRING;

DM1.IBPROC1.Cancel;

DM1.IBQ4.Active:=false;

DM1.IBQ4.Active:=true;

DBGRID9.Refresh;

end;

procedure TFORM2.Button1Click(Sender: TOBJECT);

begin if (edit3.text "") and (edit2.text "") and (edit1.text "") then begin

DM1.IBPROC2.PARAMBYNAME("SNAME").Value:=edit3.Text;

DM1.IBPROC2.PARAMBYNAME("SFROM").Value:=edit2.Text;

DM1.IBPROC2.PARAMBYNAME("STO").Value:=edit1.Text;

DM1.IBPROC2.Prepare;

procedure TFORM2.Button4Click(Sender: TOBJECT);

begin

STATUSBAR2.Panels[1].Text:="";

DM1.IBQ7.SQL.Clear;

DM1.IBQ7.SQL.Text:=("select * from V_HISTORY");

DM1.IBQ7.Open;

DM1.IBQ7.Active:=false;

DM1.IBQ7.Active:=true;

DBGRID2.Refresh;

end;

procedure TFORM2.TABSHEET6Show(Sender: TOBJECT);

begin

DM1.IBQ1.Active:=false;

DM1.IBQ1.Active:=true;

DM1.IBQ2.Active:=false;

DM1.IBQ2.Active:=true;

DBGRID5.Refresh;

DBGRID7.Refresh;

end;

procedure TFORM2.TABSHEET2Show(Sender: TOBJECT);

begin

DM1.IBQ6.Active:=false;

DM1.IBQ6.Active:=true;

DBGRID4.Refresh;

DBGRID4.Columns[0].Title.Caption:="X";

DBGRID4.Columns[1].Title.Caption:="Y";

DBGRID4.Columns[2].Title.Caption:="Вулиця";

end;

end

Размещено на .ru

Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность
своей работы


Новые загруженные работы

Дисциплины научных работ





Хотите, перезвоним вам?