Сутність
|
Тип звязку
|
Зміст звязку
|
Район Вулиця
|
1:М
|
В одному районі
знаходиться багато вулиць, вулиця входить до одного району.
|
Вулиця Хронологія
|
1:М
|
Вулиця має багато
історичних відомостей, історичні відомості притаманні окремій, одній вулиці.
|
Вулиця Геометрія
|
1:М
|
Вулиця представляє
собою складну геометричну фігуру з унікальними координатами, які відповідають
тільки одній вулиці.
|
Вулиця Об’єкт
|
1:М
|
На вулиці
розташовано багато об’єктів, об’єкт розташований на відповідній вулиці.
|
.
Функціональні залежності
Інформаційні об’єкти:
Район (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_St ® Name_St, Type_St, Type_Short,
Count_St,
ID_Part_Obj ® Name_Obj, Type_Obj, X_Obj, Y_Obj, ID_St
Num_H ® Name_New, Date_Create, ID_St_St, Y_St ® ID_St
. Опис реалізації проекту бази даних
Oпис реалізації клієнтських застосувань
Створено два застосування з різними правами доступу у
програмному середовищі Delphi.
Перше - для адміністратора , з можливістю редагування всіх
таблиць БД;
Друге - для користувача “GUEST”, якому встановлено роль “USER1”, права
тільки на читання даних з усіх таблиць БД.
Перше застосування призначено для додавання, редагування та
видалення даних з усіх таблиць. Друге
для перегляду списків таблиць БД.
Опис інтерфейсу розробленої системи, функціональне призначення
основних опцій меню
Застосування для адміністратора
1) Головна форма:
Рисунок 3 - Головна форма застосування
) Запис нових вулиць та редагування:
Рисунок 4 - Додавання нового запису
) Перегляд історії перейменувань вулиць :
Рисунок 5 - Перегляд хронології перейменувань вулиць
Застосування для користувача з правами тільки на читання
1) Головна форма:
Рисунок 6 - Головна форма клієнтського застосування
a. Використані компоненти для зв’язку з сервером InterBase
Рисунок 7 - Компоненти для зв’язку read_committed з сервером rec_version
Для зв’язування з сервером використані компоненти вкладки InterBase:
Головний компонент TIBDataBase - TIBDB1 має параметри:
user_name=SYSDBA=masterkey_ctype=WIN1251
Для функціонування застосування використано компонент IBTransaction.
IBTR1 має параметри: read
інформаційний вулиця дані інтерфейс
Висновок
На основі отриманих навичок і знань під час виконання
лабораторних і практичних робіт, в курсовій роботі, я розробив застосування,
яке дозволяє виконувати такі основні дії з наборами даних, як:
· перегляд записів;
· внесення записів;
· редагування записів.
Використана література
1. Горев А., Акаян Р., Макашаринов С. Эффективная
работа с СУБД - СГб.: Питер, 1997. - 704 с.
. Гайна Г.А. Методичні вказівки до виконання курсової
роботи з дисципліни «Організація баз даних та знань». - КНУБА, 1999. - 34 с.
. Конспект лекцій з баз даних. - 96 с.
Додаток1
Метадані бази даних KIEV_STRET.GDB
SET SQL DIALECT 1;
/* CREATE DATABASE
'C:\Kiev_Street\KIEV_STREET.gdb' PAGE_SIZE 4096CHARACTER SET WIN1251 */
/* Table: GEOMETRY, Owner:
SYSDBA */TABLE GEOMETRY
(_STFLOAT,_STFLOAT,_STDOM_FK
);
/* Table: HISTORY, Owner:
SYSDBA */TABLE HISTORY
(_HDOM_PK,_NEWDOM_20,_CREATETIMESTAMP,_STDOM_FK,PK_H
PRIMARY KEY (NUM_H)
);
/* Table: OBJECT, Owner:
SYSDBA */TABLE OBJECT
(_OBJDOM_PK,_OBJDOM_20,_OBJDOM_20,_OBJVARCHAR(10)
CHARACTER SET WIN1251,_OBJFLOAT,_OBJFLOAT,_STDOM_FK,PK_OBJ PRIMARY KEY
(NUM_OBJ)
);
/* Table: PART, Owner:
SYSDBA */TABLE PART
(_PARTDOM_PK,_PARTDOM_20,PK_PART
PRIMARY KEY (ID_PART)
);
/* Table: STREET, Owner:
SYSDBA */TABLE STREET
(_STDOM_PK,_STDOM_20,_STDOM_TYPE,_SHORTDOM_STYPE,_STINTEGER,_PARTDOM_FK,PK_ST
PRIMARY KEY (ID_ST)
);
FROM STREET:SNAME, :STYPE,
:SCOUNT;
^PROCEDURE PROC2
(INTEGER
)COUNT(NUM_OBJ)OBJECT:SCOUNT;
^PROCEDURE PROC3
(VARCHAR(20) CHARACTER SET
WIN1251,TIMESTAMP,TIMESTAMP
)
(INTEGER
)=0;COUNT(H.NUM_H)HISTORY
H INNER JOIN STREET S ON H.ID_ST=S.ID_STNAME_ST=:SNAME AND DATE_CREATE BETWEEN
:SFROM AND :STO:SCOUNT;
^PROCEDURE PROC4
(VARCHAR(20) CHARACTER SET
WIN1251
)
(FLOAT,FLOAT
)G.X_ST, G.Y_STGEOMETRY G
INNER JOIN STREET S ON G.ID_ST=S.ID_STNAME_ST=:SNAME:SX, :SY;
^
SET TERM ;
^WORK;.ID_ST)(:I, NEW.NAME_ST, :D, NEW.ID_ST);
^TRIGGER TRHISTORY_UPD FOR
STREET AFTER UPDATE POSITION 0VARIABLE D DATE;VARIABLE I INTEGER;=GEN_ID(GEN_H,0);='NOW';(NEW.NAME_ST<>OLD.NAME_ST)
THENINTO HISTORY(HISTORY.NUM_H, HISTORY.NAME_NEW, HISTORY.DATE_CREATE,
HISTORY.ID_ST)(:I, NEW.NAME_ST, :D, NEW.ID_ST);
^WORK ^TERM ;^
/* Grant Roles for this
database */
/* Role: ADMINISTRATOR,
Owner: SYSDBA */ROLE ADMINISTRATOR;ROLE USER1;
/* Grant permissions for
this database */DELETE, INSERT, SELECT, UPDATE, REFERENCES ON GEOMETRY TO
ADMINISTRATOR;SELECT ON GEOMETRY TO USER1;DELETE, INSERT, SELECT, UPDATE,
REFERENCES ON HISTORY TO ADMINISTRATOR;SELECT ON HISTORY TO USER1;DELETE,
INSERT, SELECT, UPDATE, REFERENCES ON OBJECT TO ADMINISTRATOR;SELECT ON OBJECT
TO USER1;DELETE, INSERT, SELECT, UPDATE, REFERENCES ON PART TO
ADMINISTRATOR;SELECT ON PART TO USER1;DELETE, INSERT, SELECT, UPDATE,
REFERENCES ON STREET TO ADMINISTRATOR;SELECT ON STREET TO USER1;DELETE, INSERT,
SELECT, UPDATE, REFERENCES ON V_HISTORY TO ADMINISTRATOR;SELECT ON V_HISTORY TO
USER1;DELETE, INSERT, SELECT, UPDATE, REFERENCES ON V_OBJ TO
ADMINISTRATOR;SELECT ON V_OBJ TO USER1;DELETE, INSERT, SELECT, UPDATE,
REFERENCES ON V_PART TO ADMINISTRATOR;SELECT ON V_PART TO USER1;DELETE, INSERT,
SELECT, UPDATE, REFERENCES ON V_PCOUNT TO ADMINISTRATOR;SELECT ON V_PCOUNT TO
USER1;DELETE, INSERT, SELECT, UPDATE, REFERENCES ON V_ST TO
ADMINISTRATOR;SELECT ON V_ST TO USER1;ADMINISTRATOR TO DENNIS;USER1 TO
GUEST;EXECUTE ON PROCEDURE PROC1 TO ADMINISTRATOR;EXECUTE ON PROCEDURE PROC1 TO
USER1;EXECUTE ON PROCEDURE PROC2 TO ADMINISTRATOR;EXECUTE ON PROCEDURE PROC2 TO
USER1;EXECUTE ON PROCEDURE PROC3 TO ADMINISTRATOR;
/* View: V_HISTORY, Owner:
SYSDBA */VIEW V_HISTORY (_H, _NEW, _CREATE, _ST
) ASH.NUM_H, H.NAME_NEW,
H.DATE_CREATE, S.NAME_STHISTORY H, STREET SS.ID_ST=H.ID_ST
;WORK;AUTODDL OFF;TERM ^ ;
/* Stored procedures
*/PROCEDURE PROC1
(VARCHAR(20) CHARACTER SET
WIN1251,VARCHAR(20) CHARACTER SET WIN1251,INTEGER
)EXIT; END ^PROCEDURE
PROC2
(INTEGER
)EXIT; END ^PROCEDURE
PROC3
(VARCHAR(20) CHARACTER SET
WIN1251,TIMESTAMP,TIMESTAMP
)
(INTEGER
)EXIT; END ^PROCEDURE
PROC4
(VARCHAR(20) CHARACTER SET
WIN1251
)
(FLOAT,FLOAT
)EXIT; END ^
ALTER PROCEDURE PROC1
(VARCHAR(20) CHARACTER SET
WIN1251,VARCHAR(20) CHARACTER SET WIN1251,INTEGER
)
ASNAME_ST, TYPE_ST,
COUNT_ST
SET AUTODDL ON;TERM ^;
/* Triggers only will work
for SQL triggers */TRIGGER ON_GENH FOR HISTORY BEFORE INSERT POSITION 0.NUM_H =
GEN_ID(GEN_H,1);
^TRIGGER ON_GENOBJ FOR
OBJECT BEFORE INSERT POSITION 0.NUM_OBJ = GEN_ID(GEN_OBJ,1);
^TRIGGER TRCOUNT FOR
OBJECT AFTER INSERT POSITION 0STREETSTREET.COUNT_ST = (SELECT
COUNT(OBJECT.NUM_OBJ) FROM OBJECT WHERE STREET.ID_ST=OBJECT.ID_ST);
^TRIGGER TRCOUNT_U FOR
OBJECT AFTER UPDATE POSITION 0STREETSTREET.COUNT_ST = (SELECT
COUNT(OBJECT.NUM_OBJ) FROM OBJECT WHERE STREET.ID_ST=OBJECT.ID_ST);
^TRIGGER TRCOUNT_D FOR
OBJECT AFTER DELETE POSITION 0STREETSTREET.COUNT_ST = (SELECT
COUNT(OBJECT.NUM_OBJ) FROM OBJECT WHERE STREET.ID_ST=OBJECT.ID_ST);
^TRIGGER ON_GENPART FOR
PART BEFORE INSERT POSITION 0.ID_PART = GEN_ID(GEN_PART,1);
^TRIGGER ON_GENST FOR
STREET BEFORE INSERT POSITION 0.ID_ST = GEN_ID(GEN_ST,1);
^TRIGGER TRHISTORY_INS FOR
STREET AFTER INSERT POSITION 0VARIABLE D DATE;VARIABLE I
INTEGER;=GEN_ID(GEN_H,0);='NOW';INTO HISTORY(HISTORY.NUM_H, HISTORY.NAME_NEW,
HISTORY.DATE_CREATE,
GRANT EXECUTE ON PROCEDURE
PROC3 TO USER1;EXECUTE ON PROCEDURE PROC4 TO ADMINISTRATOR;
GRANT EXECUTE
ON PROCEDURE PROC4 TO USER1;
Додаток 2
Програмні
модулі Delphi
Застосування для адміністратора
…..…: TForm1;: integer;DataModule1,
BD2;
{$R *.dfm}TForm1.N2Click(Sender:
TObject);;;TForm1.FormCreate(Sender:
TObject);.ActivePage:=TabSheet1;:=0;;TForm1.BitBtn4Click(Sender: TObject);not
DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.PART.Insert;.Visible:=true;.Visible:=true;.Top:=230;;TForm1.BitBtn17Click(Sender:
TObject);DM1.IBTR1.InTransaction then.IBTR1.Commit;
//DM1.PART.Open;;.PART.Active:=false;.PART.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn19Click(Sender:
TObject);(DBEdit3.Text <> '') AND (DBEdit4.Text <> '') AND
(DBEdit4.Text <> '')(Combobox1.Text <> '') AND
(DBLookupComboBox1.Text <> '')
then.STREET.FieldByName('TYPE_ST').AsString:=combobox1.Text;
if
combobox1.ItemIndex=0 then DM1.STREET.Fields[3].Value:='âóë'if combobox1.ItemIndex=1 then
if
(MessageDlg('Ïîìèëêà!
³äìîâèòèñü
â³ä çì³í?', mtConfirmation, [mbYes,
mbNo], 0) = mrYes)DM1.IBTR1.RollbackDM1.IBTR1.Commit;;
else
showmessage('Çàïîâí³òü
âñ³ ïîëÿ');
DM1.GEOMETRY.Active:=false;.GEOMETRY.Active:=true;.Refresh;;TForm1.BitBtn22Click(Sender:
TObject);DM1.IBTR1.InTransaction then
DM1.IBTR1.Commit;.GEOMETRY.Active:=false;.GEOMETRY.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn25Click(Sender:
TObject);(DBEdit14.Text <> '') AND (DBEdit15.Text <> '') AND
(DBEdit16.Text <> '')(DBLookupComboBox4.Text <> '')
then.HISTORY.Post;
if
(MessageDlg('Ïîìèëêà!
³äìîâèòèñü
â³ä çì³í?', mtConfirmation, [mbYes, mbNo], 0) =
mrYes)DM1.IBTR1.RollbackDM1.IBTR1.Commit;;
else
showmessage('Çàïîâí³òü
âñ³ ïîëÿ');
DM1.HISTORY.Active:=false;.HISTORY.Active:=true;.Refresh;;TForm1.BitBtn24Click(Sender:
TObject);DM1.IBTR1.InTransaction then
DM1.IBTR1.Commit;.HISTORY.Active:=false;.HISTORY.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn1Click(Sender:
TObject);not DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.STREET.Insert;.Visible:=true;.Visible:=true;.Top:=366;;TForm1.BitBtn5Click(Sender:
TObject);not DM1.IBTR1.InTransaction then
DM1.IBTR1.StartTransaction;.PART.Edit;.PART.Cancel;.Visible:=true;.Visible:=true;.Top:=230;;TForm1.BitBtn7Click(Sender:
TObject);not DM1.IBTR1.InTransaction then
DM1.IBTR1.StartTransaction;.OBGECT.Insert;.Visible:=true;.Visible:=true;.Top:=446;.Visible:=true;.Top:=260;;TForm1.N9Click(Sender:
TObject);.ActivePage:=TabSheet5;.Visible:=true;.Visible:=true;.Top:=310;;TForm1.N10Click(Sender:
TObject);:=1;.ShowModal;;TForm1.N11Click(Sender:
TObject);:=2;.ShowModal;;TForm1.N12Click(Sender:
TObject);:=3;.ShowModal;;TForm1.TabSheet: integer;:=n;;TForm1.N13Click(Sender:
TObject);:=4;.ShowModal;;TForm1.N14Click(Sender: TObject);:=5;.ShowModal;;TForm1.BitBtn6Click(Sender:
TObject);.PART.Cancel;
if
(MessageDlg('Òî÷íî
âèäàëèòè
çàïèñ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes)beginnot
DM1.IBTR1.InTransaction then
DM1.IBTR1.StartTransaction;.PART.Delete;.PART.Active:=false;.PART.Active:=true;.Refresh;.Visible:=true;.Visible:=false;.Top:=40;;;TForm1.BitBtn2Click(Sender:
TObject);DM1.IBTR1.InTransaction then.IBTR1.Commit;Exception do
if
(MessageDlg('Ïîìèëêà!
³äìîâèòèñü
â³ä çì³í?', mtConfirmation, [mbYes,
mbNo], 0) = mrYes)DM1.IBTR1.RollbackDM1.IBTR1.Commit;;.PART.Active:=false;.PART.Active:=true;TForm1.TabSheet4Show(Sender:
TObject);DM1.IBTR1.InTransaction then
DM1.IBTR1.Commit;.IBTR1.StartTransaction;.GEOMETRY.Active:=false;.GEOMETRY.Active:=true;.Refresh;.Visible:=false;;TForm1.TabSheet5Show(Sender:
TObject);DM1.IBTR1.InTransaction then
DM1.IBTR1.Commit;.IBTR1.StartTransaction;.HISTORY.Active:=false;.HISTORY.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn36Click(Sender:
TObject);not DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.STREET.Edit;.STREET.Cancel;.Visible:=true;.Visible:=true;.Top:=366;;TForm1.BitBtn28Click(Sender:
TObject);DM1.IBTR1.InTransaction then
DM1.IBTR1.Commit;.STREET.Active:=false;.STREET.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn27Click(Sender:
TObject);DM1.IBTR1.InTransaction then
DM1.IBTR1.Rollback;.STREET.Active:=false;.STREET.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn9Click(Sender:
TObject);.OBGECT.Cancel;
if
(MessageDlg('Òî÷íî
âèäàëèòè
çàïèñ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes)
then beginnot DM1.IBTR1.InTransaction
then
DM1.IBTR1.StartTransaction;.OBGECT.Delete;.OBGECT.Active:=false;.OBGECT.Active:=true;.Refresh;.Visible:=true;.Visible:=false;.Top:=40;;;TForm1.BitBtn34Click(Sender:
TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Commit;.OBGECT.Active:=false;.OBGECT.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn33Click(Sender:
TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Rollback;.close;;.BD2;,
Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ComCtrls,
DBCtrls, Grids, DBGrids, ExtCtrls, StdCtrls;
…………: TForm2;: integer;BD,
DataModule1;
{$R *.dfm}TForm2.FormActivate(Sender:
TObject);(Form1.TabSheet=1) then.ActivePage:=TabSheet6;if (Form1.TabSheet=2)
then PageControl1.ActivePage:=TabSheet7if (Form1.TabSheet=3) then
PageControl1.ActivePage:=TabSheet8if (Form1.TabSheet=4) then
PageControl1.ActivePage:=TabSheet1PageControl1.ActivePage:=TabSheet2;;TForm2.TabSheet7Show(Sender:
TObject);.IBQ5.SQL.Clear;.IBQ5.SQL.Add('select * FROM proc1');.IBQ5.Open;.IBQ5.Active:=false;.IBQ5.Active:=true;.Refresh;.IBQ3.Active:=false;.IBQ3.Active:=true;.Refresh;1.Columns[0].Title.Caption:='Âóëèöÿ';.Columns[1].Title.Caption:='Òèï';.Columns[2].Title.Caption:='ʳëüê³ñòü
áóä³âåëü';
end;TForm2.TabSheet8Show(Sender:
TObject);.IBProc1.Prepare;.IBProc1.ExecProc;.Panels[1].Text:='Âñüîãî
áóä³âåëü: ' +
DM1.IBProc1.Parambyname('SCOUNT').AsString;
DM1.IBProc1.Cancel;.IBQ4.Active:=false;.IBQ4.Active:=true;.Refresh;;TForm2.Button1Click(Sender:
TObject);(edit3.text <> '') and (edit2.text <> '') and (edit1.text
<> '')
then.IBProc2.ParamByName('SNAME').Value:=edit3.Text;.IBQ7.Open;.IBQ7.Active:=false;.IBQ7.Active:=true;.Refresh;;TForm2.TabSheet6Show(Sender:
TObject);.IBQ1.Active:=false;.IBQ1.Active:=true;.IBQ2.Active:=false;.IBQ2.Active:=true;.Refresh;.Refresh;;TForm2.TabSheet2Show(Sender:
TObject);.IBQ6.Active:=false;.IBQ6.Active:=true;.Refresh;.Columns[0].Title.Caption:='X';.Columns[1].Title.Caption:='Y';
DBGRID4.Columns[2].Title.Caption:='Âóëèöÿ';
end;.DataModule1;, Classes,
IBDatabase, DB, IBCustomDataSet, IBTable, IBQuery,;= class(TDataModule):
TIBDatabase;: TIBTable;: TIBTable;: TDataSource;: TDataSource;:
TIBTransaction;: TIBTable;: TIBTable;: TIBTable;: TDataSource;: TDataSource;:
TDataSource;: TIBQuery;: TIBQuery;: TIBQuery;: TDataSource;_H:
TIntegerField;_NEW: TIBStringField;_CREATE: TDateTimeField;_ST:
TIntegerField;_ST: TIntegerField;_ST: TIBStringField;_ST:
TIBStringField;_SHORT: TIBStringField;_ST: TIntegerField;: TStringField;_PART:
TIntegerField;_OBJ: TIntegerField;_OBJ: TIBStringField;_OBJ:
TIBStringField;_OBJ: TIBStringField;_OBJ: TFloatField;_OBJ: TFloatField;_ST:
TIntegerField;: TStringField;_ST: TFloatField;_ST: TFloatField; DM1.STREET.Fields[3].Value:='ïðîñ'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:='ïðîâ';.STREET.Post;.HISTORY.Active:=false;.HISTORY.Active:=true;
if
(MessageDlg('Ïîìèëêà!
³äìîâèòèñü
â³ä çì³í?', mtConfirmation, [mbYes,
mbNo], 0) = mrYes)DM1.IBTR1.RollbackDM1.IBTR1.Commit;;
else
showmessage('Çàïîâí³òü
âñ³ ïîëÿ');
DM1.STREET.Active:=false;.STREET.Active:=true;.Refresh;;TForm1.BitBtn18Click(Sender:
TObject);DM1.IBTR1.InTransaction then
DM1.IBTR1.Commit;.STREET.Active:=false;.STREET.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn21Click(Sender:
TObject);(DBEdit5.Text <> '') AND (DBEdit6.Text <> '') AND
(DBEdit8.Text <> '')(DBEdit9.Text <> '') AND (DBEdit10.Text
<> '') AND (DBEdit11.Text <> '')(DBLookupComboBox2.Text <>
'') then.OBGECT.Post;.STREET.Active:=false;.STREET.Active:=true;
if
(MessageDlg('Ïîìèëêà!
³äìîâèòèñü
â³ä çì³í?', mtConfirmation, [mbYes,
mbNo], 0) = mrYes)DM1.IBTR1.RollbackDM1.IBTR1.Commit;;
else
showmessage('Çàïîâí³òü
âñ³ ïîëÿ');.OBGECT.Active:=false;.OBGECT.Active:=true;.Refresh;;TForm1.BitBtn20Click(Sender:
TObject);DM1.IBTR1.InTransaction then
DM1.IBTR1.Commit;.OBGECT.Active:=false;.OBGECT.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn23Click(Sender:
TObject);(DBEdit12.Text <> '') AND (DBEdit13.Text <>
'')(DBLookupComboBox3.Text <> '')
then.GEOMETRY.Post;;TForm1.BitBtn8Click(Sender: TObject);not
DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.OBGECT.Edit;.OBGECT.Cancel;.Visible:=true;.Visible:=true;.Top:=446;;TForm1.BitBtn10Click(Sender:
TObject);not DM1.IBTR1.InTransaction then
DM1.IBTR1.StartTransaction;.GEOMETRY.Insert;.Visible:=true;.Visible:=true;.Top:=260;;TForm1.BitBtn11Click(Sender:
TObject);not DM1.IBTR1.InTransaction then
DM1.IBTR1.StartTransaction;.GEOMETRY.Edit;.GEOMETRY.Cancel;.Visible:=true;.Visible:=true;.Top:=260;;TForm1.BitBtn13Click(Sender:
TObject);not DM1.IBTR1.InTransaction then
DM1.IBTR1.StartTransaction;.HISTORY.Insert;.Visible:=true;.Visible:=true;.Top:=310;;TForm1.BitBtn14Click(Sender:
TObject);not DM1.IBTR1.InTransaction then
DM1.IBTR1.StartTransaction;.HISTORY.Edit;.HISTORY.Cancel;.Visible:=true;.Visible:=true;.Top:=310;;TForm1.N5Click(Sender:
TObject);.ActivePage:=TabSheet1;.Visible:=true;.Visible:=true;.Top:=230;;TForm1.N6Click(Sender:
TObject);.ActivePage:=TabSheet2;.Visible:=true;.Visible:=true;.Top:=366;;TForm1.N7Click(Sender:
TObject);.ActivePage:=TabSheet3;.Visible:=true;.Visible:=true;.Top:=446;;TForm1.N8Click(Sender:
TObject);.ActivePage:=TabSheet4;.Visible:=true;.Refresh;.Visible:=false;;TForm1.BitBtn26Click(Sender:
TObject);DM1.IBTR1.InTransaction then
DM1.IBTR1.Rollback;.PART.Active:=false;.PART.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn16Click(Sender:
TObject);(DBEdit1.Text <> '') AND (DBEdit2.Text <> '')
then.PART.Post;
on
Exception do
showmessage('Íåêîðêòíî
çàïîâíåí³
ïîëÿ!');;
else
showmessage('Çàïîâí³òü
âñ³ ïîëÿ');
DM1.PART.Active:=false;.PART.Active:=true;.Refresh;;TForm1.BitBtn3Click(Sender:
TObject);.STREET.Cancel;
if
(MessageDlg('Òî÷íî
âèäàëèòè
çàïèñ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes)beginnot
DM1.IBTR1.InTransaction then
DM1.IBTR1.StartTransaction;.STREET.Delete;.STREET.Active:=false;.STREET.Active:=true;.Refresh;.Visible:=true;.Visible:=false;.Top:=40;;;TForm1.TabSheet1Show(Sender:
TObject);DM1.IBTR1.InTransaction then
DM1.IBTR1.Commit;.IBTR1.StartTransaction;.PART.Active:=false;.PART.Active:=true;.Refresh;.Visible:=false;.Visible:=true;.Top:=230;;TForm1.TabSheet2Show(Sender:
TObject);DM1.IBTR1.InTransaction then
DM1.IBTR1.Commit;.IBTR1.StartTransaction;.STREET.Active:=false;.STREET.Active:=true;.Refresh;.Visible:=false;;TForm1.TabSheet3Show(Sender:
TObject);DM1.IBTR1.InTransaction then
DM1.IBTR1.Commit;.IBTR1.StartTransaction;.OBGECT.Active:=false;.OBGECT.Active:=true;.Refresh;.Visible:=false;;.OBGECT.Active:=false;.OBGECT.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn12Click(Sender:
TObject);.GEOMETRY.Cancel;
if
(MessageDlg('Òî÷íî
âèäàëèòè
çàïèñ?', mtConfirmation, [mbYes, mbNo], 0) =
mrYes)
then beginnot DM1.IBTR1.InTransaction
then
DM1.IBTR1.StartTransaction;.GEOMETRY.Delete;.GEOMETRY.Active:=false;.GEOMETRY.Active:=true;.Refresh;.Visible:=true;.Visible:=false;.Top:=40;;;TForm1.BitBtn30Click(Sender:
TObject);DM1.IBTR1.InTransaction then
DM1.IBTR1.Commit;.GEOMETRY.Active:=false;.GEOMETRY.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn29Click(Sender:
TObject);DM1.IBTR1.InTransaction then
DM1.IBTR1.Rollback;.GEOMETRY.Active:=false;.GEOMETRY.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn15Click(Sender:
TObject);.HISTORY.Cancel;
if
(MessageDlg('Òî÷íî
âèäàëèòè
çàïèñ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes)beginnot
DM1.IBTR1.InTransaction then
DM1.IBTR1.StartTransaction;.HISTORY.Delete;.HISTORY.Active:=false;.HISTORY.Active:=true;.Refresh;.Visible:=true;.Visible:=false;.Top:=40;;;TForm1.BitBtn32Click(Sender:
TObject);DM1.IBTR1.InTransaction then
DM1.IBTR1.Commit;.HISTORY.Active:=false;.HISTORY.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn31Click(Sender:
TObject);DM1.IBTR1.InTransaction then
DM1.IBTR1.Rollback;.HISTORY.Active:=false;.HISTORY.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn35Click(Sender:
TObject);.IBProc2.ParamByName('SFROM').Value:=edit2.Text;.IBProc2.ParamByName('STO').Value:=edit1.Text;.IBProc2.Prepare;.IBProc2.ExecProc;
except
ShowMessage('Íå
êîðåêòíî
ââåäàíà
³íôîðìàö³ÿ')end;
StatusBar2.Panels[1].Text:='Çíàéäåíî:
' + DM1.IBProc2.Parambyname('SCOUNT').AsString;.IBProc2.Cancel;.IBQ7.SQL.Clear;.IBQ7.SQL.Text:=('select
* from V_HISTORY where NAME_ST=:NEW');not DM1.IBQ7.prepared then
DM1.IBQ7.prepare;.IBQ7.ParamByName('NEW').AsString:=edit3.Text;.IBQ7.Open;
except
ShowMessage('Íå
êîðåêòíî
ââåäàíà
³íôîðìàö³ÿ')end;.IBQ7.Active:=false;.IBQ7.Active:=true;.Refresh;.Clear;.Clear;.Clear;
else
showmessage('Çàïîâí³òü
âñ³ ïîëÿ');
end;TForm2.TabSheet1Show(Sender:
TObject);.IBQ7.SQL.Clear;.IBQ7.SQL.Text:=('select * from
V_HISTORY');.IBQ7.Open;.IBQ7.Active:=false;.IBQ7.Active:=true;.Refresh;
DBGRID2.Columns[0].Title.Caption:='Íîìåð
çàïèñó';.Columns[1].Title.Caption:='Íîâà
íàçâà';.Columns[2].Title.Caption:='Äàòà
ñòâîðåííÿ';
DBGRID2.Columns[3].Title.Caption:='Ïîòî÷íà
íàçâà';
end;TForm2.Button3Click(Sender:
TObject);(edit9.text <> '') then.IBQ6.SQL.Clear;.IBQ6.SQL.Text:=('select
* from PROC4(:NEW)');.IBQ6.ParamByName('NEW').AsString:=edit9.Text;.IBQ6.Open;
except
ShowMessage('Íå
êîðåêòíî
ââåäàíà
³íôîðìàö³ÿ');.IBQ6.Active:=false;.IBQ6.Active:=true;.Refresh;.Clear;
else
showmessage('Ââåä³òü
äàí³');
end;TForm2.Button2Click(Sender:
TObject);.IBQ6.SQL.Clear;.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');.IBQ6.Open;.IBQ6.Active:=false;.IBQ6.Active:=true;.Refresh;;TForm2.Button4Click(Sender:
TObject);.Panels[1].Text:='';.IBQ7.SQL.Clear;.IBQ7.SQL.Text:=('select * from
V_HISTORY');_ST: TIntegerField;: TStringField;: TStringField;_PART:
TIntegerField;_PART: TIBStringField;: TDataSource;: TDataSource;:
TIBStoredProc;: TIBStoredProc;: TIBQuery;: TIBQuery;: TIBQuery;: TDataSource;:
TDataSource;: TDataSource;: TDataSource;: TIBQuery;IBDB1AfterConnect(Sender:
TObject);
{ Private declarations }
{ Public declarations };: TDM1;
{$R *.dfm}.
Застосування для користувача з правами тільки на читання
даних
unit BD;, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,, ComCtrls, Grids, DBGrids, Menus,
ExtCtrls, StdCtrls, Buttons,, Mask;
……………: TForm1;: integer;DataModule1,
BD2;
{$R *.dfm}TForm1.N2Click(Sender:
TObject);;;TForm1.FormCreate(Sender:
TObject);.ActivePage:=TabSheet1;:=0;.Align:=AlRight;;TForm1.N10Click(Sender:
TObject);:=1;.ShowModal;;TForm1.N11Click(Sender:
TObject);:=2;.ShowModal;;TForm1.N12Click(Sender:
TObject);:=3;.ShowModal;;TForm1.TabSheet: integer;:=n;;TForm1.N13Click(Sender:
TObject);:=4;.ShowModal;;TForm1.N14Click(Sender: TObject);:=5;.ShowModal;;TForm1.BitBtn35Click(Sender:
TObject);.close;;..IBProc2.ExecProc;ShowMessage('Íå
êîðåêòíî
ââåäàíà
³íôîðìàö³ÿ')end;
StatusBar2.Panels[1].Text:='Çíàéäåíî:
' + DM1.IBProc2.Parambyname('SCOUNT').AsString;.IBProc2.Cancel;.IBQ7.SQL.Clear;.IBQ7.SQL.Text:=('select
* from V_HISTORY where NAME_ST=:NEW');not DM1.IBQ7.prepared then
DM1.IBQ7.prepare;.IBQ7.ParamByName('NEW').AsString:=edit3.Text;.IBQ7.Open;
except
ShowMessage('Íå
êîðåêòíî
ââåäàíà
³íôîðìàö³ÿ')end;.IBQ7.Active:=false;.IBQ7.Active:=true;.Refresh;.Clear;.Clear;.Clear;
else
showmessage('Çàïîâí³òü
âñ³ ïîëÿ');
end;TForm2.TabSheet1Show(Sender:
TObject);.IBQ7.SQL.Clear;.IBQ7.SQL.Text:=('select * from
V_HISTORY');.IBQ7.Open;.IBQ7.Active:=false;.IBQ7.Active:=true;.Refresh;D2.Columns[0].Title.Caption:='Íîìåð
çàïèñó';.Columns[1].Title.Caption:='Íîâà
íàçâà';.Columns[2].Title.Caption:='Äàòà
ñòâîðåííÿ';.Columns[3].Title.Caption:='Ïîòî÷íà
íàçâà';
end;TForm2.Button3Click(Sender:
TObject);(edit9.text <> '') then.IBQ6.SQL.Clear;.IBQ6.SQL.Text:=('select
* from PROC4(:NEW)');.IBQ6.ParamByName('NEW').AsString:=edit9.Text;.IBQ6.Open;
except
ShowMessage('Íå
êîðåêòíî
ââåäàíà
³íôîðìàö³ÿ');.IBQ6.Active:=false;.IBQ6.Active:=true;.Refresh;.Clear;
else
showmessage('Ââåä³òü
äàí³');
end;TForm2.Button2Click(Sender:
TObject);.IBQ6.SQL.Clear;.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');.IBQ6.Open;.IBQ6.Active:=false;.IBQ6.Active:=true;.Refresh;;BD2;,
Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ComCtrls,
DBCtrls, Grids, DBGrids, ExtCtrls, StdCtrls;
…………..: TForm2;: integer;BD,
DataModule1;
{$R *.dfm}TForm2.FormActivate(Sender:
TObject);(Form1.TabSheet=1) then.ActivePage:=TabSheet6;if (Form1.TabSheet=2)
then PageControl1.ActivePage:=TabSheet7if (Form1.TabSheet=3) then PageControl1.ActivePage:=TabSheet8if
(Form1.TabSheet=4) then
PageControl1.ActivePage:=TabSheet1PageControl1.ActivePage:=TabSheet2;;TForm2.TabSheet7Show(Sender:
TObject);.IBQ5.SQL.Clear;.IBQ5.SQL.Add('select * FROM
proc1');.IBQ5.Open;.IBQ5.Active:=false;.IBQ5.Active:=true;.Refresh;.IBQ3.Active:=false;.IBQ3.Active:=true;.Refresh;.Columns[0].Title.Caption:='Âóëèöÿ';.Columns[1].Title.Caption:='Òèï';.Columns[2].Title.Caption:='ʳëüê³ñòü
áóä³âåëü';
end;TForm2.TabSheet8Show(Sender:
TObject);.IBProc1.Prepare;.IBProc1.ExecProc;
StatusBar9.Panels[1].Text:='Âñüîãî
áóä³âåëü: ' +
DM1.IBProc1.Parambyname('SCOUNT').AsString;
DM1.IBProc1.Cancel;.IBQ4.Active:=false;.IBQ4.Active:=true;.Refresh;;TForm2.Button1Click(Sender:
TObject);(edit3.text <> '') and (edit2.text <> '') and (edit1.text
<> '')
then.IBProc2.ParamByName('SNAME').Value:=edit3.Text;.IBProc2.ParamByName('SFROM').Value:=edit2.Text;.IBProc2.ParamByName('STO').Value:=edit1.Text;.IBProc2.Prepare;TForm2.Button4Click(Sender:
TObject);.Panels[1].Text:='';.IBQ7.SQL.Clear;.IBQ7.SQL.Text:=('select * from
V_HISTORY');.IBQ7.Open;.IBQ7.Active:=false;.IBQ7.Active:=true;.Refresh;;TForm2.TabSheet6Show(Sender:
TObject);.IBQ1.Active:=false;.IBQ1.Active:=true;.IBQ2.Active:=false;.IBQ2.Active:=true;.Refresh;.Refresh;;TForm2.TabSheet2Show(Sender:
TObject);.IBQ6.Active:=false;.IBQ6.Active:=true;.Refresh;.Columns[0].Title.Caption:='X';.Columns[1].Title.Caption:='Y';
DBGRID4.Columns[2].Title.Caption:='Âóëèöÿ';
end;
end