Розробка інформаційної системи відомостей про вулиці м. Києва
Зміст
1. Опис предметного середовища та постановка задачі
. Концептуальна модель бази даних
. Даталогічна модель бази даних
. Словник даних
. Звязки між сутностями
. Функціональні залежності
. Опис реалізації проекту бази даних
Висновки
Список використаної літератури
Документація
Додатки
1.Опис предметного середовища та постановка задачі
Необхідно розробити інформаційну систему, яка дозволяла б виконувати перегляд відомостей про вулиці м. Києва, їх розташування, параметри та історію.
До головних задач, які повинна виконувати система, відносяться:
·Ведення обліку вулиць, тобто інформація про розташування, код, назву, тип, хронологію перейменувань вулиці.
·Ведення обліку обєктів, які розташовані на відповідних вулицях - номер, назва, тип, точні координати розташування.
Перелік вхідної інформації, що повинна зберігатися в БД
·Район: код району (унікальний), назва району.
·Вулиця: код вулиці (унікальний), назва вулиці, тип вулиці, коротка назва типу, кількість обєктів (споруди розташовані на даній вулиці), код району (унікальний).
·Хронологія: номер запису (унікальний), нова назва, дата створення, код вулиці (унікальний).
·Геометрія: координати вулиці (X, Y), код вулиці (унікальний).
·Обєкт: номер (унікальний), назва (якщо є, в іншому випадку взяти назву вулиці), тип обєкта, координати обєкта (Х, Y), код вулиці (унікальний).
2.Концептуальна модель БД
На етапі концептуального проектування визначаються основні типи даних, що підлягають збереженню у базі даних, виділяються обєкти (сутності) предметного середовища, визначаються характеристики (атрибути) обєктів, структурні звязки між обєктами, які дають можливість реалізувати усю множину запитів до БД.
Рисунок 1 - Концептуальна модель
3.Даталогічна модель БД
Фізична модель відображає розміщення даних, методи доступу до даних і техніку індексування, що будуть реалізовані в рамках обраної СУБД.
Нижче наведена структура таблиць та їх взаємозвязок у вигляді діаграми.
Рисунок 2 - Даталогічна модель
.Словник даних
Необхідно виділити основні сутності. Для сутностей визначити атрибути, що потрібно включити до складу інформаційної моделі.
Таблиця 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 ціле ціле ціле ціле
.Звязки між сутностями
Далі необхідно визначити звязки між сутностями, які включені до моделі.
Таблиця 2 - Звязки між сутностями
СутністьТип звязкуЗміст звязкуРайон Вулиця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 */
/* Domain definitions */DOMAIN DOM_20 AS VARCHAR(20) CHARACTER SET WIN1251 COLLATE PXW_CYRL;DOMAIN DOM_FK AS INTEGER;DOMAIN DOM_PK AS INTEGER NOT NULL;DOMAIN DOM_STYPE AS VARCHAR(4) CHARACTER SET WIN1251(VALUE IN ('вул', 'прос', 'бул', 'пл', 'пров', 'узв'));DOMAIN DOM_TYPE AS VARCHAR(12) CHARACTER SET WIN1251(VALUE IN ('вулиця', 'проспект', бульвар', 'площа', 'провулок', 'узвіз'));
/* 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
Застосування для адміністратора
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;;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
Больше работ по теме:
Предмет: Информационное обеспечение, программирование
Тип работы: Курсовая работа (т)
Новости образования
КОНТАКТНЫЙ EMAIL: [email protected]
Скачать реферат © 2017 | Пользовательское соглашение
ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ