Проектування дволанкової розподіленої інформаційної системи для роботи з базами даних із використанням SQL Interbase
Створення і використання індексів та переглядів БД. Створення і використання тригерів, генераторів та збережених процедур на боці SQL-сервера. Отримання практичних навичок обміну даними між прикладенням і БД. Перегляд записів зв’язаних таблиць БД.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | украинский |
Дата добавления | 08.06.2009 |
Размер файла | 1,9 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Проектування дволанкової розподіленої інформаційної системи для роботи з БД із використанням SQL Interbase
Мета:
* створення БД;
* створення і використання індексів та переглядів БД;
* створення і використання тригерів, генераторів та збережених процедур на боці SQL-сервера;
* отримання практичних навичок обміну даними між прикладенням і БД.
Завдання:
Засобами SQL Interbase необхідно створити БД, декілька індексованих таблиць БД (головну і підлеглі) і декілька їх переглядів, а також зв'язати їх між собою.
Засобами С++Builder створити оригінальне(!) прикладення, яке повинне надавати мож-ливість:
* перегляду записів зв'язаних таблиць БД, у тому числі попередніх і наступних записів та із використанням створених переглядів;
* фільтрації записів БД із виведенням на екран записів, обраних у діалозі за вказаними критеріями;
* інкрементального пошуку даних у БД за вказаними критеріями;
* додавання і видалення записи таблиці БД, у тому числі із використанням створених на боці SQL-сервера тригерів, генераторів та збережених процедур;
* корегування полів поточного запису таблиці БД, у тому числі із використанням створе-ної на боці SQL-сервера збереженої процедури.
Вказівки до створення БД:
Для створення БД із використанням SQL Interbase необхідно:
* завантажити на виконання прикладення InterBase Windows ISQL, яке за звичай зберігає-ться за маршрутом "<диск>:\Program Files\InterBase Corp\ InterBase\ Bin\wisql32.exe", наприклад, “E:\Program Files\InterBase Corp\ InterBase\ Bin\wisql32.exe";
* виконати команду File | Create Database … і у віконці, яке з'явилося (мал. 1.1), вказати наведені параметри (параметри можуть бути довільними);
* виконати команду Metadata | Show … і у віконці, яке з'явилося (мал. 1.2), у полі View Information On: обрати з меню альтернативу Database. Якщо БД було успішно створено, то у вікні InterBase Windows ISQL з'явиться відповідне повідомлення (мал. 1.3).
* виконати команду File | Commit Work для збереження результатів роботи на диску;
* далі (вже засобами С++ Builder) командою Database | Explore завантажити на виконання прикладення Database Explore, командою Object | New | INTRBASE створити аліас dbP, обрати його на вкладинці Databases і вказати параметри, які наведено на мал. 1.4; потім виконати команду Object | Apply для збереження зроблених змін;
* у прикладенні InterBase Windows ISQL виконати команду File | Run an ISQL Script … і у вікні, що з'явилося (мал. 1.5), вказати ім'я файлу Createdb.sql, в якому набрано скрипт для створення таблиць БД;
Малюнок 1.1 Малюнок 1.2
Малюнок 1.3
Малюнок 1.4
Малюнок 1.5
Вміст цього файлу наведено нижче:
/* з'єднання з БД */
CONNECT "e:\Lr2\dbP\dbP.gdb" USER "SYSDBA" PASSWORD "masterkey";
/* створення таблиці PERS */
create table pers(
Num smallint Not Null Primary Key,
Dep char(15),
Fam char(20) Not Null,
Nam char(20) Not Null,
Par char(20) Not Null,
Year_b smallint,
Sex char(1),
Charact blob,
Photo blob
);
/* створення таблиці DEP */
create table dep(
Dep char(15) Not Null Primary Key,
Proisv char(15)
);
/* заповнення таблиці PERS */
Insert Into PERS(Num, Dep, Fam, Nam, Par, Year_b, Sex)
Values(1, "Бухгалтерія", "Іванов", "Іван", "Іванович", 1950, "ч");
Insert Into PERS(Num, Dep, Fam, Nam, Par, Year_b, Sex)
Values(2, "Цех 1", "Петров", "Петро", "Петрович", 1960, "ч");
Insert Into PERS(Num, Dep, Fam, Nam, Par, Year_b, Sex)
Values(3, "Цех 2", "Сидоров", "Сидор", "Сидорович", 1955, "ч");
Insert Into PERS(Num, Dep, Fam, Nam, Par, Year_b, Sex)
Values(4, "Цех 1", "Іванова", "Ірина", "Іванівна", 1971, "ж");
Insert Into PERS(Num, Dep, Fam, Nam, Par, Year_b, Sex)
Values(5, "Бухгалтерія", "Миколаєв", "Микола", “Миколайович", 1930, "ч”);
Insert Into PERS(Num, Dep, Fam, Nam, Par, Year_b, Sex)
Values(6, "Цех 2", "Андрієв", "Андрій", "Андрійович", 1930, "ч");
Insert Into PERS(Num, Dep, Fam, Nam, Par, Year_b, Sex)
Values(7, "Цех 1", "Борисов", "Борис", "Борисович", 1937, "ч");
Insert Into PERS(Num, Dep, Fam, Nam, Par, Year_b, Sex)
Values(8, "Цех 1", "Павлов", "Павло", "Павлович", 1975, "ч");
Insert Into PERS(Num, Dep, Fam, Nam, Par, Year_b, Sex)
Values(9, "Бухгалтерія", "Антонова", "Антоніна", "Антонівна", 1965, "ж");
Insert Into PERS(Num, Dep, Fam, Nam, Par, Year_b, Sex)
Values(10, "Цех 2", "Харитонов", "Харитон", "Харитонович", 1962, "ч");
Insert Into PERS(Num, Dep, Fam, Nam, Par, Year_b, Sex)
Values(11, "Цех 2", "Іванников", "Іван", "Іванович", 1975, "ч");
/* заповнення таблиці DEP */
Insert Into DEP( Dep,Proisv) Values("Бухгалтерія", "управління");
Insert Into DEP( Dep,Proisv) Values("Цех 1", "виробництво");
Insert Into DEP( Dep,Proisv) Values("Цех 2", "виробництво");
Commit;
Після натискання кнопки Открыть треба вказати, що результати виконання скрипту необхідно зберігати у файлі Result.txt. Скрипт виконується.
Оглянути схему створеної таблиці (наприклад, таблиці PERS) можна командою Meta-data | Show … (мал. 1.6)
Малюнок 1.6
SHOW TABLE PERS
NUM SMALLINT Not Null
DEP CHAR(15) Nullable
FAM CHAR(20) Not Null
NAM CHAR(20) Not Null
PAR CHAR(20) Not Null
YEAR_B SMALLINT Nullable
SEX CHAR(1) Nullable
CHARACT BLOB segment 80, subtype UNKNOWN Nullable
PHOTO BLOB segment 80, subtype UNKNOWN Nullable
CONSTRAINT INTEG_2:
Primary key (NUM)
Оглянути вміст створеної таблиці (наприклад, таблиці PERS) можна набором запиту Select * from PERS у вікні InterBase Windows ISQL, або ж за допомогою Database Explore (мал. 1.7):
Малюнок 1.7
* створити індекси таблиці PERS, для чого виконати скрипт, що міститься у файлі CreateINDEXESdbP.sql:
/* З'єднання з БД */
CONNECT "e:\Lr3\dbP\dbP.gdb" USER "SYSDBA" PASSWORD "masterkey";
/* Створення індексів */
create index Person On PERS Fam,Nam,Par;
create index DepPerson On PERS Dep,Fam,Nam,Par;
create index Year On PERS Year_b;
* створити перегляди таблиці PERS, для чого виконати скрипт, що міститься у файлі CreateVIEWSdbP.sql:
/* З'єднання з БД */
CONNECT "e:\Lr3\dbP\dbP.gdb" USER "SYSDBA" PASSWORD "masterkey";
/* Створення переглядів таблиці PERS за підрозділами */
Create VIEW dep_1 as
select Dep, Num, Fam, Nam, Par, Year_b, Sex from Pers
where Dep = "Бухгалтерія";
Create VIEW dep_2 as
select Dep, Num, Fam, Nam, Par, Year_b, Sex from Pers
where Dep = "Цех 1";
Create VIEW dep_3 as
select Dep, Num, Fam, Nam, Par, Year_b, Sex from Pers
where Dep = "Цех 2";
* далі засобами С++ Builder командою Database | Explore завантажити на виконання прикладення Database Explore і з його допомогою створити генератор PERSGEN, як показано на мал. 1.8;
Малюнок 1.8
* створити триггер PERSSWITCH таблиці PERS, для чого виконати скрипт, що місти-ться у файлі CreateTRIGGERdbP.sql:
CONNECT "e:\Lr3\dbP\dbP.gdb" USER "SYSDBA" PASSWORD "masterkey";
/* Створення триггера PERSSWITCH для збільшення номера запису під час вставки запису у таблицю */
SET TERM ^;
CREATE TRIGGER PERSSWITCH FOR PERS
BEFORE INSERT AS
BEGIN
NEW.NUM = GEN_ID(PERSGEN, 1);
END;^
SET TERM ;^
COMMIT;
* створити на боці SQL-сервера виконуємі процедури вставки (INSERTdbP), видалення (DELETEdbP) та корегування (UPDATEdbP) таблиці PERS, для чого:
* виконати скрипт, що міститься у файлі CreateProcINSERTdbP.sql:
CONNECT "e:\Lr3\dbP\dbP.gdb" USER "SYSDBA" PASSWORD "masterkey";
/* Виконуєма процедура INSERTdbP. Додає дані про співробітника, вертає номер запису */
SET TERM ^;
CREATE PROCEDURE INSERTdbP
(
pDEP CHAR(15),
pFAM CHAR(20),
pNAM CHAR(20),
pPAR CHAR(20),
pYEAR_B INTEGER,
pSEX CHAR(1)
)
AS
BEGIN
Insert into PERS (DEP, FAM, NAM, PAR, YEAR_B, SEX)
VALUES (:pDEP, :pFAM, :pNAM, :pPAR, :pYEAR_B, :pSEX);
END;^
SET TERM ;^
COMMIT;
* виконати скрипт, що міститься у файлі CreateProcDELETEdbP.sql:
CONNECT "e:\Lr3\dbP\dbP.gdb" USER "SYSDBA" PASSWORD "masterkey";
/* Виконуєма процедура DELETEdbP знищення даних про співробітника */
SET TERM ^;
CREATE PROCEDURE DELETEdbP
(
pNUM INTEGER
)
AS
BEGIN
DELETE FROM PERS WHERE NUM = :pNUM;
END;^
SET TERM ;^
COMMIT;
* виконати скрипт, що міститься у файлі CreateProcUPDATEdbP.sql:
CONNECT "e:\Lr3\dbP\dbP.gdb" USER "SYSDBA" PASSWORD "masterkey";
/* Виконуєма процедура UPDATEdbP.
Змінює дані про співробітника, вертає номер запису чи 0, якщо співробітника нема */
SET TERM ^;
CREATE PROCEDURE UPDATEdbP
(
pDEP CHAR(15),
pFAM CHAR(20),
pNAM CHAR(20),
pPAR CHAR(20),
pYEAR_B INTEGER,
pSEX CHAR(1)
)
RETURNS
(number integer)
AS
BEGIN
number = 0;
Select NUM From PERS
Where (FAM = :pFAM) and (NAM = :pNAM) and (PAR = :pPAR)
Into number;
if (number > 0) then
Update PERS Set DEP = :pDEP, YEAR_B = :pYEAR_B, SEX = :pSEX
Where (FAM = :pFAM) and (NAM = :pNAM) and (PAR = :pPAR);
END;^
SET TERM ;^
COMMIT;
У результаті виконання цих дій буде створено БД зі структурою, що наведено на мал. 1.10.
Малюнок 1.10
Вказівки до створення першого прикладення:
Для маніпулювання таблицями треба створити проект прикладення (мал. 1.11).
Малюнок 1.11
Головну форму main_Form наведено на мал. 1.12 і мал. 1.13.
Малюнок 1.12
Малюнок 1.13
Текстовий опис форми main_Form:
object main_Form: Tmain_Form
Left = 147
Top = 103
Width = 709
Height = 460
Caption = 'Лабораторна робота 2'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'System'
Font.Style = [fsBold]
OldCreateOrder = True
Position = poScreenCenter
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 16
object PageControl: TPageControl
Left = 421
Top = 0
Width = 280
Height = 428
ActivePage = find_TabSheet
Align = alClient
Font.Charset = RUSSIAN_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Times New Roman'
Font.Style = [fsBold, fsItalic]
MultiLine = True
ParentFont = False
TabOrder = 0
OnChange = PageControlChange
object find_TabSheet: TTabSheet
Caption = 'Відбір'
object select_GroupBox: TGroupBox
Left = 1
Top = 5
Width = 268
Height = 212
Caption = 'Відбір за ...'
TabOrder = 7
end
object sex_RadioGroup: TRadioGroup
Left = 8
Top = 120
Width = 257
Height = 53
Caption = ' статтю '
Columns = 2
ItemIndex = 0
Items.Strings = (
'чоловіча'
'жіноча')
TabOrder = 0
OnClick = minage_CSpinEditChange
end
object speedfind_GroupBox: TGroupBox
Left = 0
Top = 224
Width = 257
Height = 169
Caption = ' Швидкий пошук за прізвищем '
TabOrder = 5
object Image1: TImage
Left = 8
Top = 16
Width = 105
Height = 145
Picture.Data = { }
Stretch = True
end
object speedfind_Label: TLabel
Left = 154
Top = 42
Width = 56
Height = 16
Caption = 'Прізвище'
end
object speedfind_Image: TImage
Left = 32
Top = 48
Width = 57
Height = 73
Picture.Data = { }
Stretch = True
end
end
object age_GroupBox: TGroupBox
Left = 8
Top = 32
Width = 257
Height = 81
Caption = ' віком '
Enabled = False
TabOrder = 4
object minage_Label: TLabel
Left = 65
Top = 15
Width = 28
Height = 16
Caption = 'від ...'
end
object maxage_Label: TLabel
Left = 192
Top = 15
Width = 25
Height = 16
Caption = 'до ...'
end
object minage_Image: TImage
Left = 8
Top = 24
Width = 41
Height = 49
Picture.Data = { }
Stretch = True
Transparent = True
end
object maxage_Image: TImage
Left = 136
Top = 24
Width = 41
Height = 49
Picture.Data = { }
Stretch = True
Transparent = True
end
end
object speedfind_Edit: TEdit
Left = 120
Top = 296
Width = 129
Height = 22
Hint = 'Ввод фамилии'
Font.Charset = RUSSIAN_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Times New Roman'
Font.Style = [fsBold, fsItalic]
ParentFont = False
ParentShowHint = False
ShowHint = True
TabOrder = 1
OnChange = speedfind_EditChange
end
object minage_CSpinEdit: TCSpinEdit
Left = 62
Top = 66
Width = 65
Height = 26
TabStop = True
MaxValue = 80
MinValue = 16
ParentColor = False
TabOrder = 2
Value = 16
OnChange = minage_CSpinEditChange
end
object maxage_CSpinEdit: TCSpinEdit
Left = 190
Top = 66
Width = 65
Height = 26
TabStop = True
MaxValue = 80
MinValue = 16
ParentColor = False
TabOrder = 3
Value = 30
OnChange = minage_CSpinEditChange
end
object select_BitBtn: TBitBtn
Left = 8
Top = 184
Width = 257
Height = 25
Cursor = crHandPoint
Caption = 'Поновити відбір'
TabOrder = 6
OnClick = select_BitBtnClick
Kind = bkOK
end
end
object TabEdit: TTabSheet
Caption = 'Корегування'
Font.Charset = RUSSIAN_CHARSET
Font.Color = clBlack
Font.Height = -13
Font.Name = 'Times New Roman'
Font.Style = [fsBold, fsItalic]
ParentFont = False
object ch_GroupBox: TGroupBox
Left = 2
Top = 5
Width = 269
Height = 388
Caption = ' Загальні відомості '
TabOrder = 9
object chdp_Label: TLabel
Left = 12
Top = 38
Width = 50
Height = 16
Caption = 'Відділок'
FocusControl = chdp_ComboBox
end
object chname_Label: TLabel
Left = 12
Top = 138
Width = 25
Height = 16
Caption = 'Ім'#39'я'
FocusControl = chname_Edit
end
object chgrand_Label: TLabel
Left = 12
Top = 188
Width = 73
Height = 16
Caption = 'По батькові'
FocusControl = chgrand_Edit
end
object chyear_Label: TLabel
Left = 12
Top = 232
Width = 95
Height = 16
Caption = 'Рік народження'
end
object chfam_Label: TLabel
Left = 12
Top = 87
Width = 56
Height = 16
Caption = 'Прізвище'
FocusControl = chfam_Edit
end
object oper_Bevel: TBevel
Left = 18
Top = 282
Width = 251
Height = 96
end
object oper_Shape: TShape
Left = 19
Top = 283
Width = 248
Height = 94
Brush.Color = clBlack
end
object Animate1: TAnimate
Left = 24
Top = 291
Width = 60
Height = 80
Active = True
FileName = 'Frage.avi'
StopFrame = 31
Transparent = False
end
end
object sex2_RadioGroup: TRadioGroup
Left = 185
Top = 218
Width = 77
Height = 41
Caption = 'Стать'
Columns = 2
ItemIndex = 0
Items.Strings = (
'ч'
'ж')
TabOrder = 4
end
object chdp_ComboBox: TComboBox
Left = 101
Top = 40
Width = 162
Height = 22
Style = csDropDownList
Font.Charset = RUSSIAN_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'Times New Roman'
Font.Style = [fsBold, fsItalic]
ItemHeight = 0
ParentFont = False
TabOrder = 0
end
object chfam_Edit: TEdit
Left = 101
Top = 90
Width = 162
Height = 22
Font.Charset = RUSSIAN_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'Times New Roman'
Font.Style = [fsBold, fsItalic]
ParentFont = False
TabOrder = 1
Text = 'chfam_Edit'
end
object chname_Edit: TEdit
Left = 101
Top = 140
Width = 162
Height = 22
Font.Charset = RUSSIAN_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'Times New Roman'
Font.Style = [fsBold, fsItalic]
ParentFont = False
TabOrder = 2
Text = 'chname_Edit'
end
object chgrand_Edit: TEdit
Left = 101
Top = 190
Width = 162
Height = 22
Font.Charset = RUSSIAN_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'Times New Roman'
Font.Style = [fsBold, fsItalic]
ParentFont = False
TabOrder = 3
Text = 'chgrand_Edit'
end
object chadd_Button: TButton
Left = 88
Top = 294
Width = 169
Height = 25
Hint = 'Новая запись'
Caption = '&Додати'
ParentShowHint = False
ShowHint = True
TabOrder = 5
OnClick = chadd_ButtonClick
end
object chdelete_Button: TButton
Left = 88
Top = 322
Width = 169
Height = 25
Hint = 'Удаление записи'
Caption = '&Видалити'
ParentShowHint = False
ShowHint = True
TabOrder = 6
OnClick = chdelete_ButtonClick
end
object chpost_Button: TButton
Left = 88
Top = 351
Width = 169
Height = 25
Hint = 'Фиксация изменений'
Caption = '&Поновити'
ParentShowHint = False
ShowHint = True
TabOrder = 7
OnClick = chpost_ButtonClick
end
object chyear_CSpinEdit: TCSpinEdit
Left = 119
Top = 233
Width = 50
Height = 23
TabStop = True
Font.Charset = RUSSIAN_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'Times New Roman'
Font.Style = [fsBold, fsItalic]
MaxValue = 2000
MinValue = 1900
ParentColor = False
ParentFont = False
TabOrder = 8
Value = 1950
end
end
end
object left_Panel: TPanel
Left = 0
Top = 0
Width = 421
Height = 428
Align = alLeft
BevelInner = bvLowered
Caption = 'left_Panel'
TabOrder = 1
object find_TPanel: TPanel
Left = 6
Top = 5
Width = 406
Height = 420
Caption = 'find_TPanel'
TabOrder = 1
object find_Label: TLabel
Left = 110
Top = 20
Width = 265
Height = 24
Alignment = taCenter
Caption = 'ПОШУК СПІВРОБІТНИКІВ'
Font.Charset = RUSSIAN_CHARSET
Font.Color = clRed
Font.Height = -21
Font.Name = 'Arial Cyr'
Font.Style = [fsBold, fsItalic]
ParentFont = False
end
object dp_GroupBox: TGroupBox
Left = 8
Top = 56
Width = 393
Height = 57
Caption = ' Відділок '
Font.Charset = RUSSIAN_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Times New Roman'
Font.Style = [fsBold, fsItalic]
ParentFont = False
TabOrder = 0
object dp_ComboBox: TComboBox
Left = 8
Top = 24
Width = 177
Height = 24
ItemHeight = 16
Items.Strings = (
'Бухгалтерия')
TabOrder = 0
OnChange = dp_ComboBoxChange
end
end
object dp2_GroupBox: TGroupBox
Left = 200
Top = 66
Width = 193
Height = 41
Caption = ' підрозділ '
Font.Charset = RUSSIAN_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Times New Roman'
Font.Style = [fsItalic]
ParentFont = False
TabOrder = 1
object dp2_DBEdit: TDBEdit
Left = 5
Top = 15
Width = 182
Height = 23
Color = clSilver
DataField = 'PROISV'
DataSource = dp_DataSource
Enabled = False
TabOrder = 0
end
end
object pr_GroupBox: TGroupBox
Left = 8
Top = 115
Width = 393
Height = 226
Caption = ' Співробітники '
Font.Charset = RUSSIAN_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Times New Roman'
Font.Style = [fsBold, fsItalic]
ParentFont = False
TabOrder = 2
object Bevel1: TBevel
Left = 10
Top = 197
Width = 41
Height = 24
end
object pr_Label: TLabel
Left = 16
Top = 201
Width = 29
Height = 16
Alignment = taCenter
AutoSize = False
end
end
object find_Animate: TAnimate
Left = 32
Top = 8
Width = 48
Height = 45
Active = True
CommonAVI = aviFindComputer
StopFrame = 8
end
object GroupBox1: TGroupBox
Left = 8
Top = 340
Width = 393
Height = 77
Caption = 'Поточний оператор SQL'
Font.Charset = RUSSIAN_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Times New Roman'
Font.Style = [fsBold, fsItalic]
ParentFont = False
TabOrder = 4
object sql_Label: TLabel
Left = 11
Top = 16
Width = 372
Height = 57
AutoSize = False
Color = clBtnFace
Font.Charset = RUSSIAN_CHARSET
Font.Color = clRed
Font.Height = -13
Font.Name = 'Times New Roman'
Font.Style = [fsBold, fsItalic]
ParentColor = False
ParentFont = False
WordWrap = True
end
end
end
object pr_DBGrid: TDBGrid
Left = 22
Top = 144
Width = 379
Height = 169
DataSource = pr_DataSource
Font.Charset = RUSSIAN_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Times New Roman'
Font.Style = [fsItalic]
Options = [dgTitles, dgIndicator, dgColumnResize, dgColLines, dgRowLines, dgTabs, dgConfirmDelete, dgCancelOnExit]
ParentFont = False
TabOrder = 0
TitleFont.Charset = RUSSIAN_CHARSET
TitleFont.Color = clWindowText
TitleFont.Height = -11
TitleFont.Name = 'Times New Roman'
TitleFont.Style = [fsItalic]
OnCellClick = pr_DBGridCellClick
Columns = <
item
Expanded = False
FieldName = 'FAM'
Title.Caption = 'Прізвище'
Width = 59
Visible = True
end
item
Expanded = False
FieldName = 'NAM'
Title.Caption = 'ім'#39'я'
Width = 57
Visible = True
end
item
Expanded = False
FieldName = 'PAR'
Title.Caption = 'по батькові'
Width = 67
Visible = True
end
item
Alignment = taCenter
Expanded = False
FieldName = 'YEAR_B'
Title.Caption = 'рік народження'
Width = 85
Visible = True
end
item
Alignment = taCenter
Expanded = False
FieldName = 'SEX'
Title.Caption = 'стать'
Visible = True
end
item
Expanded = False
FieldName = 'AGE'
Title.Caption = 'вік'
Width = 38
Visible = True
end
item
Expanded = False
FieldName = 'CHARACT'
Title.Caption = 'характеристика'
Visible = True
end
item
Expanded = False
FieldName = 'PHOTO'
Title.Caption = 'фото'
Visible = True
end>
end
object pr_Button: TButton
Left = 326
Top = 319
Width = 75
Height = 20
Hint = 'Характеристика, фотография'
Caption = '&Більше ...'
Font.Charset = RUSSIAN_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Times New Roman'
Font.Style = [fsBold, fsItalic]
ParentFont = False
ParentShowHint = False
ShowHint = True
TabOrder = 2
OnClick = pr_ButtonClick
end
object pr_DBNavigator: TDBNavigator
Left = 73
Top = 319
Width = 244
Height = 20
DataSource = pr_DataSource
VisibleButtons = [nbFirst, nbPrior, nbNext, nbLast]
TabOrder = 3
end
end
object dp_DataSource: TDataSource
DataSet = dp_Query
Left = 140
Top = 55
end
object pr_DataSource: TDataSource
DataSet = pr_Query
Left = 298
Top = 268
end
object dp_Query: TQuery
DatabaseName = 'dbP'
RequestLive = True
SQL.Strings = (
'Select * from Dep where DEP = :PDEP')
Left = 169
Top = 55
ParamData = <
item
DataType = ftString
Name = 'PDEP'
ParamType = ptUnknown
end>
object dp_QueryDEP: TStringField
FieldName = 'DEP'
Origin = 'DEP.DEP'
Size = 15
end
object dp_QueryPROISV: TStringField
FieldName = 'PROISV'
Origin = 'DEP.PROISV'
Size = 15
end
end
object update_Query: TQuery
DatabaseName = 'dbP'
DataSource = pr_DataSource
RequestLive = True
Left = 356
Top = 268
end
object pr_Query: TQuery
BeforePost = pr_QueryBeforePost
AfterScroll = pr_QueryAfterScroll
OnCalcFields = pr_QueryCalcFields
DatabaseName = 'dbP'
RequestLive = True
SQL.Strings = (
'Select * from Pers where DEP = :DEP order by FAM,NAM,PAR')
Left = 327
Top = 268
ParamData = <
item
DataType = ftString
Name = 'DEP'
ParamType = ptUnknown
end>
object pr_QueryNUM: TSmallintField
FieldName = 'NUM'
Origin = 'PERS.NUM'
end
object pr_QueryDEP: TStringField
FieldName = 'DEP'
Origin = 'PERS.DEP'
Size = 15
end
object pr_QueryFAM: TStringField
FieldName = 'FAM'
Origin = 'PERS.FAM'
end
object pr_QueryNAM: TStringField
FieldName = 'NAM'
Origin = 'PERS.NAM'
end
object pr_QueryPAR: TStringField
FieldName = 'PAR'
Origin = 'PERS.PAR'
end
object pr_QueryYEAR_B: TSmallintField
FieldName = 'YEAR_B'
Origin = 'PERS.YEAR_B'
end
object pr_QuerySEX: TStringField
FieldName = 'SEX'
Origin = 'PERS.SEX'
Size = 1
end
object pr_QueryCHARACT: TBlobField
FieldName = 'CHARACT'
Origin = 'PERS.CHARACT'
BlobType = ftMemo
Size = 1
end
object pr_QueryPHOTO: TBlobField
FieldName = 'PHOTO'
Origin = 'PERS.PHOTO'
BlobType = ftGraphic
Size = 1
end
object pr_QueryAGE: TSmallintField
Alignment = taCenter
DisplayLabel = 'Возраст'
DisplayWidth = 7
FieldKind = fkCalculated
FieldName = 'AGE'
Calculated = True
end
end
end
Підлеглу форму character_Form наведено на мал. 1.14.
Малюнок 1.14
Текстовий опис цієї форми наведено нижче:
object character_Form: Tcharacter_Form
Left = 237
Top = 95
Width = 318
Height = 226
Caption = 'Характеристика'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
FormStyle = fsStayOnTop
OldCreateOrder = True
Position = poDefaultPosOnly
PixelsPerInch = 96
TextHeight = 13
object character_DBMemo: TDBMemo
Left = 0
Top = 0
Width = 195
Height = 194
Align = alClient
Alignment = taCenter
DataField = 'Charact'
DataSource = main_Form.pr_DataSource
ScrollBars = ssVertical
TabOrder = 0
end
object PPhoto: TPanel
Left = 195
Top = 0
Width = 115
Height = 194
Align = alRight
Caption = 'PPhoto'
TabOrder = 1
object photo_DBImage: TDBImage
Left = 5
Top = 42
Width = 105
Height = 105
DataField = 'Photo'
DataSource = main_Form.pr_DataSource
TabOrder = 0
end
end
end
Для функціонування прикладення розроблено програму:
Файл Udb.h
#ifndef UdbH
#define UdbH
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
#include <DBCtrls.hpp>
#include <DBGrids.hpp>
#include <ExtCtrls.hpp>
#include <Grids.hpp>
#include <Mask.hpp>
#include <Db.hpp>
#include <DBTables.hpp>
#include "cspin.h"
#include "CSPIN.h"
#include <jpeg.hpp>
#include <Buttons.hpp>
#include <Graphics.hpp>
class Tmain_Form : public TForm
{
__published: // IDE-managed Components
TPageControl *PageControl;
TTabSheet *find_TabSheet;
TRadioGroup *sex_RadioGroup;
TEdit *speedfind_Edit;
TDataSource *dp_DataSource;
TDataSource *pr_DataSource;
TTabSheet *TabEdit;
TComboBox *chdp_ComboBox;
TEdit *chfam_Edit;
TEdit *chname_Edit;
TEdit *chgrand_Edit;
TRadioGroup *sex2_RadioGroup;
TButton *chadd_Button;
TButton *chdelete_Button;
TButton *chpost_Button;
TCSpinEdit *chyear_CSpinEdit;
TCSpinEdit *minage_CSpinEdit;
TCSpinEdit *maxage_CSpinEdit;
TPanel *left_Panel;
TPanel *find_TPanel;
TLabel *find_Label;
TGroupBox *dp_GroupBox;
TGroupBox *dp2_GroupBox;
TGroupBox *pr_GroupBox;
TDBGrid *pr_DBGrid;
TButton *pr_Button;
TDBNavigator *pr_DBNavigator;
TGroupBox *ch_GroupBox;
TLabel *chdp_Label;
TLabel *chname_Label;
TLabel *chgrand_Label;
TLabel *chyear_Label;
TLabel *chfam_Label;
TGroupBox *age_GroupBox;
TLabel *minage_Label;
TLabel *maxage_Label;
TGroupBox *speedfind_GroupBox;
TLabel *speedfind_Label;
TImage *speedfind_Image;
TImage *minage_Image;
TImage *maxage_Image;
TAnimate *find_Animate;
TBitBtn *select_BitBtn;
TGroupBox *select_GroupBox;
TQuery *dp_Query;
TQuery *update_Query;
TQuery *pr_Query;
TComboBox *dp_ComboBox;
TDBEdit *dp2_DBEdit;
TStringField *dp_QueryDEP;
TStringField *dp_QueryPROISV;
TSmallintField *pr_QueryNUM;
TStringField *pr_QueryDEP;
TStringField *pr_QueryFAM;
TStringField *pr_QueryNAM;
TStringField *pr_QueryPAR;
TSmallintField *pr_QueryYEAR_B;
TStringField *pr_QuerySEX;
TBlobField *pr_QueryCHARACT;
TBlobField *pr_QueryPHOTO;
TSmallintField *pr_QueryAGE;
TLabel *pr_Label;
TBevel *Bevel1;
TGroupBox *GroupBox1;
TLabel *sql_Label;
TAnimate *Animate1;
TBevel *oper_Bevel;
TShape *oper_Shape;
TImage *Image1;
void __fastcall FormCreate(TObject *Sender);
void __fastcall dp_ComboBoxChange(TObject *Sender);
void __fastcall pr_ButtonClick(TObject *Sender);
void __fastcall speedfind_EditChange(TObject *Sender);
void __fastcall pr_QueryCalcFields(TDataSet *DataSet);
void __fastcall pr_QueryAfterScroll(TDataSet *DataSet);
void __fastcall pr_QueryBeforePost(TDataSet *DataSet);
void __fastcall chadd_ButtonClick(TObject *Sender);
void __fastcall chdelete_ButtonClick(TObject *Sender);
void __fastcall chpost_ButtonClick(TObject *Sender);
void __fastcall PageControlChange(TObject *Sender);
void __fastcall minage_CSpinEditChange(TObject *Sender);
void __fastcall select_BitBtnClick(TObject *Sender);
void __fastcall pr_DBGridCellClick(TColumn *Column);
private: // User declarations
public: // User declarations
__fastcall Tmain_Form(TComponent* Owner);
unsigned short Year;
unsigned short Month;
unsigned short Day;
bool CanPost;
int AllPers, CurrentPers;
AnsiString sql_Operator;
void __fastcall Delay(unsigned long int mSeconds);
};
extern PACKAGE Tmain_Form *main_Form;
#endif
Файл Udb.cpp
#include <vcl.h>
#pragma hdrstop
#include "Udb.h"
#include "Udba.h"
#pragma package(smart_init)
#pragma link "cspin"
#pragma link "CSPIN"
#pragma resource "*.dfm"
Tmain_Form *main_Form;
__fastcall Tmain_Form::Tmain_Form(TComponent* Owner)
: TForm(Owner)
{}
void __fastcall Tmain_Form::FormCreate(TObject *Sender)
{
CanPost = false;
Date().DecodeDate(&Year,&Month,&Day);
// підрахування кількості записів у таблиці PERS
pr_Query->SQL->Clear();
sql_Operator = "Select * from PERS order by NUM";
sql_Label->Caption = sql_Operator;
pr_Query->SQL->Add(sql_Operator);
pr_Query->Open();
pr_Query->First();
AllPers = 0;
while (!pr_Query->Eof) {
++AllPers;
pr_Query->Next();
}
pr_Query->First();
dp_Query->SQL->Clear();
sql_Operator = "Select * from DEP";
sql_Label->Caption = sql_Operator;
dp_Query->SQL->Add(sql_Operator);
dp_Query->Open();
dp_Query->First();
// Заповнення ComboBox dp_ComboBox та chdp_ComboBox наймуваннями відділків
dp_ComboBox->Clear();
chdp_ComboBox->Clear();
while (!dp_Query->Eof) {
dp_ComboBox->Items->Add(dp_QueryDEP->AsString);
chdp_ComboBox->Items->Add(dp_QueryDEP->AsString);
dp_Query->Next();
}
dp_ComboBox->Items->Add("усі відділки");
dp_ComboBox->ItemIndex = dp_ComboBox->Items->Count - 1;
dp_ComboBoxChange(Sender);
chdp_ComboBox->ItemIndex = dp_ComboBox->ItemIndex;
PageControl->ActivePage = find_TabSheet;
}
void __fastcall Tmain_Form::dp_ComboBoxChange(TObject *Sender)
{
dp_Query->Close();
dp_Query->SQL->Clear();
sql_Operator = "Select * from DEP where DEP=:PDEP";
sql_Label->Caption = sql_Operator;
Delay(5000);
dp_Query->SQL->Add(sql_Operator);
dp_Query->Params->Items[0]->AsString = dp_ComboBox->Text;
dp_Query->Open();
dp_Query->First();
pr_Query->Close();
pr_Query->SQL->Clear();
if (dp_ComboBox->ItemIndex == dp_ComboBox->Items->Count - 1) {
sql_Operator = "Select * from PERS order by NUM";
sql_Label->Caption = sql_Operator;
Delay(5000);
pr_Query->SQL->Add(sql_Operator);
} else {
sql_Operator = "Select * from PERS where DEP = :DEP order by NUM";
sql_Label->Caption = sql_Operator;
Delay(5000);
pr_Query->SQL->Add(sql_Operator);
pr_Query->Params->Items[0]->AsString = dp_ComboBox->Text;
}
pr_Query->ExecSQL();
pr_Query->Open();
pr_Query->First();
}
void __fastcall Tmain_Form::pr_ButtonClick(TObject *Sender)
{
if (!character_Form->Visible) character_Form->Show();
}
void __fastcall Tmain_Form::speedfind_EditChange(TObject *Sender)
{
TLocateOptions SearchOptions;
pr_Query->Locate("FAM", speedfind_Edit->Text,
SearchOptions << loPartialKey << loCaseInsensitive);
}
void __fastcall Tmain_Form::pr_QueryCalcFields(TDataSet *DataSet)
{
pr_QueryAGE->Value = Year - pr_QueryYEAR_B->Value;
}
void __fastcall Tmain_Form::pr_QueryAfterScroll(TDataSet *DataSet)
{
// поточна персона
CurrentPers = pr_QueryNUM->AsInteger;
pr_Label->Caption = IntToStr(CurrentPers);
if (PageControl->ActivePage == TabEdit) {
// відображення даних про поточну персону
chdp_ComboBox -> ItemIndex =
chdp_ComboBox->Items->IndexOf(pr_QueryDEP->AsString);
chfam_Edit->Text = pr_QueryFAM->AsString;
chname_Edit->Text = pr_QueryNAM->AsString;
chgrand_Edit->Text = pr_QueryPAR->AsString;
chyear_CSpinEdit->Value = pr_QueryYEAR_B->AsInteger;
if (pr_QuerySEX->AsString == "ч") sex2_RadioGroup->ItemIndex = 0;
else sex2_RadioGroup->ItemIndex = 1;
}
}
//---------------------------------------------------------------------------
void __fastcall Tmain_Form::pr_QueryBeforePost(TDataSet *DataSet)
{
if (!CanPost) {
DataSet->Cancel();
Abort;
}
}
//---------------------------------------------------------------------------
void __fastcall Tmain_Form::chadd_ButtonClick(TObject *Sender)
{ // додавання запису до таблиці PERS
AnsiString NewSex; // визначення статі
if (sex2_RadioGroup->ItemIndex == 0) NewSex = "ч";
else NewSex = "ж";
update_Query->Close();
update_Query->SQL->Clear();
sql_Operator = "Insert into PERS (DEP,FAM,NAM,PAR,YEAR_B,SEX,NUM) values ('"
+ chdp_ComboBox->Text + "','"
+ chfam_Edit->Text + "','"
+ chname_Edit->Text + "','"
+ chgrand_Edit->Text + "','"
+ IntToStr((int)chyear_CSpinEdit->Value) + "','"
+ NewSex + "','"
+ IntToStr(++AllPers) + "')"; // збільшення кількості записів у таблиці PERS
sql_Label->Caption = sql_Operator;
Delay(5000);
update_Query->SQL->Add(sql_Operator);
update_Query->ExecSQL(); // додавання запису
pr_Query->Close(); // поновлення відображення даних таблиці PERS
pr_Query->Open();
PageControlChange(Sender);
}
//---------------------------------------------------------------------------
void __fastcall Tmain_Form::chdelete_ButtonClick(TObject *Sender)
{ // видалення поточного запису з таблиці PERS
if (Application->MessageBox("Ви дійсно бажаєте видалити поточний запис?",
"Підтвердіть видалення запису",
MB_YESNO + MB_ICONEXCLAMATION) == IDYES)
update_Query->Close();
update_Query->SQL->Clear();
sql_Operator = "Delete from PERS where NUM = " + IntToStr(CurrentPers);
sql_Label->Caption = sql_Operator;
Delay(5000);
update_Query->SQL->Add(sql_Operator);
update_Query->ExecSQL(); // видалення запису
pr_Query->Close(); // поновлення відображення даних талиці PERS
pr_Query->Open();
--AllPers; // зменшення кількості записів у таблиці PERS
}
//---------------------------------------------------------------------------
void __fastcall Tmain_Form::chpost_ButtonClick(TObject *Sender)
{
AnsiString s, sSQL;
const AnsiString s1 = ",";
s = "";
sSQL = "Update PERS set ";
if (pr_QueryDEP->AsString != chdp_ComboBox->Text) {
s = "відділок";
sSQL += "DEP='" + chdp_ComboBox->Text + "'";
}
if (pr_QueryCHARACT->AsString != chfam_Edit->Text) {
if (s != "") { s += s1; sSQL += s1; }
s += " прізвище";
sSQL += "FAM='" + chfam_Edit->Text + "'";
}
if (pr_QueryCHARACT->AsString != chname_Edit->Text) {
if (s != "") { s += s1; sSQL += s1; }
s += " ім'я";
sSQL += "NAM='" + chname_Edit->Text+"'";
}
if (pr_QueryCHARACT->AsString != chgrand_Edit->Text) {
if (s != "") { s += s1; sSQL += s1; }
s += " по батькові";
sSQL += "PAR='" + chgrand_Edit->Text + "'";
}
if (pr_QueryYEAR_B->AsInteger != chyear_CSpinEdit->Value) {
if (s != "") { s += s1; sSQL += s1; }
s += " рік народження";
sSQL += "YEAR_B='" + IntToStr((int)(chyear_CSpinEdit->Value));
}
if (pr_QuerySEX->AsBoolean != (sex2_RadioGroup->ItemIndex == 0)) {
if (s != "") { s += s1; sSQL += s1; }
s += " стать";
sSQL += "SEX='";
if(sex2_RadioGroup->ItemIndex == 0) sSQL += "ч'";
else sSQL += "ж'";
}
if (s != "")
if (Application->MessageBox(
("Дійсно бажаєте змінити " + s + "?").c_str(),
"Підтвердіть занесення змін у базу даних",
MB_YESNO + MB_ICONQUESTION) == IDYES)
{ update_Query->Close();
update_Query->SQL->Clear();
sql_Operator = sSQL + " where NUM=" + IntToStr(pr_QueryNUM->AsInteger);
sql_Label->Caption = sql_Operator;
Delay(5000);
update_Query->SQL->Add(sql_Operator);
update_Query->ExecSQL();
pr_Query->Close();
pr_Query->Open();
CanPost = false;
};
}
//---------------------------------------------------------------------------
void __fastcall Tmain_Form::PageControlChange(TObject *Sender)
{
character_Form->character_DBMemo->ReadOnly =
!(PageControl->ActivePage == TabEdit);
if (PageControl->ActivePage == TabEdit) pr_QueryAfterScroll(pr_Query);
}
//---------------------------------------------------------------------------
void __fastcall Tmain_Form::minage_CSpinEditChange(TObject *Sender)
{
AnsiString s =
"(YEAR_B<=" + IntToStr(int(Year - minage_CSpinEdit->Value)) +
")and(YEAR_B>=" + IntToStr(int(Year - maxage_CSpinEdit->Value)) +
")and(SEX=";
if (!sex_RadioGroup->ItemIndex) s += "'ч')";
else s += "'ж')";
// автоматичне поновлення відбору записів
select_BitBtn->Kind = bkCancel;
select_BitBtn->Caption = "Відмінити відбір";
pr_Query->Filter = s;
pr_Query->Filtered = true;
}
//---------------------------------------------------------------------------
void __fastcall Tmain_Form::select_BitBtnClick(TObject *Sender)
{
if (pr_Query->Filtered) { // відміна режиму фільтрації
pr_Query->Filtered = false;
select_BitBtn->Kind = bkYes;
select_BitBtn->Caption = "Поновити відбір";
} else { // встановлення режиму фільтрації
select_BitBtn->Kind = bkCancel;
select_BitBtn->Caption = "Відмінити відбір";
minage_CSpinEditChange(Sender);
}
}
//---------------------------------------------------------------------------
void __fastcall Tmain_Form::pr_DBGridCellClick(TColumn *Column)
{
if (PageControl->ActivePage == TabEdit) {
chdp_ComboBox -> ItemIndex =
chdp_ComboBox->Items->IndexOf(pr_QueryDEP->AsString);
chfam_Edit->Text = pr_QueryFAM->AsString;
chname_Edit->Text = pr_QueryNAM->AsString;
chgrand_Edit->Text = pr_QueryPAR->AsString;
chyear_CSpinEdit->Value = pr_QueryYEAR_B->AsInteger;
if (pr_QuerySEX->AsString == "ч") sex2_RadioGroup->ItemIndex = 0;
else sex2_RadioGroup->ItemIndex = 1;
}
// поточна персона
CurrentPers = pr_QueryNUM->AsInteger;
pr_Label->Caption = IntToStr(CurrentPers);
}
//---------------------------------------------------------------------------
void __fastcall Tmain_Form::Delay(unsigned long int mSeconds)
{ // затримка на декілька мілісекунд
unsigned long int FirstTick;
FirstTick = GetTickCount();
do
Application->ProcessMessages();
while (GetTickCount() - FirstTick <= mSeconds);
}
Файл Udba.h
//---------------------------------------------------------------------------
#ifndef UdbaH
#define UdbaH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <DBCtrls.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class Tcharacter_Form : public TForm
{
__published: // IDE-managed Components
TDBMemo *character_DBMemo;
TPanel *PPhoto;
TDBImage *photo_DBImage;
private: // User declarations
public: // User declarations
__fastcall Tcharacter_Form(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE Tcharacter_Form *character_Form;
//---------------------------------------------------------------------------
#endif
Файл Udba.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Udba.h"
#include "Udb.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
Tcharacter_Form *character_Form;
//---------------------------------------------------------------------------
__fastcall Tcharacter_Form::Tcharacter_Form(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
Для виконання прикладення треба попередньо завантажити на виконання прикладення-сервер IBServer.EXE, яке за звичай знаходиться за маршрутом "E:\Program Files\InterBase Corp\InterBase\Bin\" і обслуговує запити до бази даних Interbase. Після завантаження поточ-ного проекту на виконання цей сервер виводить на екран запит (мал.. 1.15) , у полі Password: якого треба ввести пароль доступу masterkey..
Малюнок 1.15
Форми під час функціонування прикладення наведено на мал. 1.16 - 1.18.
Малюнок 1.16
Малюнок 1.17
Малюнок 1.18
Вказівки до створення другого прикладення: Для маніпулювання таблицями можна використати корегований проект попереднього прикладення (мал. 1.19).
Малюнок 1.19
Головну форму main_Form наведено на мал. 1.20.
Малюнок 1.20
Текстовий опис форми main_Form:
object main_Form: Tmain_Form
Left = 63
Top = 22
Width = 709
Height = 461
Caption = 'Лабораторна робота 3'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'System'
Font.Style = [fsBold]
OldCreateOrder = True
Position = poScreenCenter
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 16
object PageControl: TPageControl
Left = 421
Top = 0
Width = 280
Height = 429
ActivePage = find_TabSheet
Align = alClient
Font.Charset = RUSSIAN_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Times New Roman'
Font.Style = [fsBold, fsItalic]
MultiLine = True
ParentFont = False
TabOrder = 0
OnChange = PageControlChange
object find_TabSheet: TTabSheet
Caption = 'Відбір'
object select_GroupBox: TGroupBox
Left = 1
Top = 5
Width = 268
Height = 212
Caption = 'Відбір за ...'
TabOrder = 7
end
object sex_RadioGroup: TRadioGroup
Left = 8
Top = 120
Width = 257
Height = 53
Caption = ' статтю '
Columns = 2
ItemIndex = 0
Items.Strings = (
'чоловіча'
'жіноча')
TabOrder = 0
OnClick = minage_CSpinEditChange
end
object speedfind_GroupBox: TGroupBox
Left = 0
Top = 224
Width = 257
Height = 169
Caption = ' Швидкий пошук за прізвищем '
TabOrder = 5
object Image1: TImage
Left = 8
Top = 16
Width = 105
Height = 145
Picture.Data = {}
Stretch = True
end
object speedfind_Label: TLabel
Left = 154
Top = 50
Width = 56
Height = 16
Caption = 'Прізвище'
end
object speedfind_Image: TImage
Left = 32
Top = 48
Width = 57
Height = 73
Picture.Data = {}
Stretch = True
end
end
object age_GroupBox: TGroupBox
Left = 8
Top = 32
Width = 257
Height = 81
Caption = ' віком '
Enabled = False
TabOrder = 4
object minage_Label: TLabel
Left = 65
Top = 15
Width = 28
Height = 16
Caption = 'від ...'
end
object maxage_Label: TLabel
Left = 192
Top = 15
Width = 25
Height = 16
Caption = 'до ...'
end
object minage_Image: TImage
Left = 8
Top = 24
Width = 41
Height = 49
Picture.Data = {}
Stretch = True
Transparent = True
end
object maxage_Image: TImage
Left = 136
Top = 24
Width = 41
Height = 49
Picture.Data = {}
Stretch = True
Transparent = True
end
end
object speedfind_Edit: TEdit
Left = 120
Top = 310
Width = 129
Height = 22
Hint = 'Ввод фамилии'
Font.Charset = RUSSIAN_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Times New Roman'
Font.Style = [fsBold, fsItalic]
ParentFont = False
ParentShowHint = False
ShowHint = True
TabOrder = 1
OnChange = speedfind_EditChange
end
object minage_CSpinEdit: TCSpinEdit
Left = 62
Top = 66
Width = 65
Height = 26
TabStop = True
MaxValue = 80
MinValue = 16
ParentColor = False
TabOrder = 2
Value = 16
OnChange = minage_CSpinEditChange
end
object maxage_CSpinEdit: TCSpinEdit
Left = 190
Top = 66
Width = 65
Height = 26
TabStop = True
MaxValue = 80
MinValue = 16
ParentColor = False
TabOrder = 3
Value = 30
OnChange = minage_CSpinEditChange
end
object select_BitBtn: TBitBtn
Left = 8
Top = 184
Width = 257
Height = 25
Cursor = crHandPoint
Caption = 'Поновити відбір'
TabOrder = 6
OnClick = select_BitBtnClick
Kind = bkOK
end
end
object TabEdit: TTabSheet
Caption = 'Корегування'
Font.Charset = RUSSIAN_CHARSET
Font.Color = clBlack
Font.Height = -13
Font.Name = 'Times New Roman'
Font.Style = [fsBold, fsItalic]
ParentFont = False
object ch_GroupBox: TGroupBox
Left = 2
Top = 5
Width = 269
Height = 388
Caption = ' Загальні відомості '
TabOrder = 9
object chdp_Label: TLabel
Left = 12
Top = 38
Width = 50
Height = 16
Caption = 'Відділок'
FocusControl = chdp_ComboBox
end
object chname_Label: TLabel
Left = 12
Top = 138
Width = 25
Height = 16
Caption = 'Ім'#39'я'
FocusControl = chname_Edit
end
object chgrand_Label: TLabel
Left = 12
Top = 188
Width = 73
Height = 16
Caption = 'По батькові'
FocusControl = chgrand_Edit
end
object chyear_Label: TLabel
Left = 12
Top = 232
Width = 95
Height = 16
Caption = 'Рік народження'
end
object chfam_Label: TLabel
Left = 12
Top = 87
Width = 56
Height = 16
Caption = 'Прізвище'
FocusControl = chfam_Edit
end
object oper_Bevel: TBevel
Left = 18
Top = 282
Width = 251
Height = 96
end
object oper_Shape: TShape
Left = 19
Top = 283
Width = 248
Height = 94
Brush.Color = clBlack
end
object Animate1: TAnimate
Left = 24
Top = 291
Width = 60
Height = 80
Active = True
FileName = 'Frage.avi'
StopFrame = 31
Transparent = False
end
end
object sex2_RadioGroup: TRadioGroup
Left = 185
Top = 218
Width = 77
Height = 41
Caption = 'Стать'
Columns = 2
ItemIndex = 0
Items.Strings = (
'ч'
'ж')
TabOrder = 4
end
object chdp_ComboBox: TComboBox
Left = 101
Top = 40
Width = 162
Height = 22
Style = csDropDownList
Font.Charset = RUSSIAN_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'Times New Roman'
Font.Style = [fsBold, fsItalic]
ItemHeight = 14
ParentFont = False
TabOrder = 0
end
object chfam_Edit: TEdit
Left = 101
Top = 90
Width = 162
Height = 22
Font.Charset = RUSSIAN_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'Times New Roman'
Font.Style = [fsBold, fsItalic]
ParentFont = False
TabOrder = 1
Text = 'chfam_Edit'
end
object chname_Edit: TEdit
Left = 101
Top = 140
Width = 162
Height = 22
Font.Charset = RUSSIAN_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'Times New Roman'
Font.Style = [fsBold, fsItalic]
ParentFont = False
TabOrder = 2
Text = 'chname_Edit'
end
object chgrand_Edit: TEdit
Left = 101
Top = 190
Width = 162
Height = 22
Font.Charset = RUSSIAN_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'Times New Roman'
Font.Style = [fsBold, fsItalic]
ParentFont = False
TabOrder = 3
Text = 'chgrand_Edit'
end
object chadd_Button: TButton
Left = 88
Top = 294
Width = 169
Height = 25
Hint = 'Новая запись'
Caption = '&Додати'
ParentShowHint = False
ShowHint = True
TabOrder = 5
OnClick = chadd_ButtonClick
end
object chdelete_Button: TButton
Left = 88
Top = 322
Width = 169
Height = 25
Hint = 'Удаление записи'
Caption = '&Видалити'
ParentShowHint = False
ShowHint = True
TabOrder = 6
OnClick = chdelete_ButtonClick
end
object chpost_Button: TButton
Left = 88
Top = 351
Width = 169
Height = 25
Hint = 'Фиксация изменений'
Caption = '&Поновити'
ParentShowHint = False
ShowHint = True
TabOrder = 7
OnClick = chpost_ButtonClick
end
object chyear_CSpinEdit: TCSpinEdit
Left = 119
Top = 233
Width = 50
Height = 23
TabStop = True
Font.Charset = RUSSIAN_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'Times New Roman'
Font.Style = [fsBold, fsItalic]
MaxValue = 2000
MinValue = 1900
ParentColor = False
ParentFont = False
TabOrder = 8
Value = 1950
end
end
end
object left_Panel: TPanel
Left = 0
Top = 0
Width = 421
Height = 429
Align = alLeft
BevelInner = bvLowered
Caption = 'left_Panel'
TabOrder = 1
object find_TPanel: TPanel
Left = 6
Top = 5
Width = 406
Height = 420
Caption = 'find_TPanel'
TabOrder = 1
object find_Label: TLabel
Left = 109
Top = 16
Width = 265
Height = 24
Alignment = taCenter
Caption = 'ПОШУК СПІВРОБІТНИКІВ'
Font.Charset = RUSSIAN_CHARSET
Font.Color = clRed
Font.Height = -21
Font.Name = 'Arial Cyr'
Font.Style = [fsBold, fsItalic]
ParentFont = False
end
object dp_GroupBox: TGroupBox
Left = 8
Top = 48
Width = 393
Height = 65
Caption = ' Відділок '
Font.Charset = RUSSIAN_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Times New Roman'
Font.Style = [fsBold, fsItalic]
ParentFont = False
TabOrder = 0
object dp_ComboBox: TComboBox
Left = 14
Top = 22
Width = 155
Height = 24
ItemHeight = 16
Items.Strings = (
'Бухгалтерия')
TabOrder = 0
OnChange = dp_ComboBoxChange
end
end
object dp2_GroupBox: TGroupBox
Left = 216
Top = 58
Width = 169
Height = 46
Caption = ' підрозділ '
Font.Charset = RUSSIAN_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Times New Roman'
Font.Style = [fsItalic]
ParentFont = False
TabOrder = 1
object dp2_DBEdit: TDBEdit
Left = 5
Top = 15
Width = 156
Height = 23
Color = clSilver
DataField = 'PROISV'
DataSource = dp_DataSource
Enabled = False
TabOrder = 0
end
end
object pr_GroupBox: TGroupBox
Left = 8
Top = 113
Width = 393
Height = 226
Caption = ' Співробітники '
Font.Charset = RUSSIAN_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Times New Roman'
Font.Style = [fsBold, fsItalic]
ParentFont = False
TabOrder = 2
object pr_Panel: TPanel
Left = 9
Top = 196
Width = 66
Height = 26
TabOrder = 0
object pr_Label: TLabel
Left = 9
Top = 3
Width = 47
Height = 20
Alignment = taCenter
AutoSize = False
Caption = '1'
Font.Charset = RUSSIAN_CHARSET
Font.Color = clRed
Font.Height = -13
Font.Name = 'Times New Roman'
Font.Style = [fsBold, fsItalic]
ParentFont = False
Layout = tlCenter
end
end
end
object find_Animate: TAnimate
Left = 40
Top = 4
Width = 48
Height = 45
Active = True
CommonAVI = aviFindComputer
StopFrame = 8
end
object GroupBox1: TGroupBox
Left = 8
Top = 340
Width = 393
Height = 77
Caption = 'Поточний оператор SQL'
Font.Charset = RUSSIAN_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Times New Roman'
Font.Style = [fsBold, fsItalic]
ParentFont = False
TabOrder = 4
object sql_Label: TLabel
Left = 11
Top = 16
Width = 372
Height = 57
AutoSize = False
Color = clBtnFace
Font.Charset = RUSSIAN_CHARSET
Font.Color = clRed
Font.Height = -13
Font.Name = 'Times New Roman'
Font.Style = [fsBold, fsItalic]
ParentColor = False
ParentFont = False
WordWrap = True
end
end
end
object pr_DBGrid: TDBGrid
Left = 22
Top = 136
Width = 378
Height = 173
DataSource = pr_DataSource
Font.Charset = RUSSIAN_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Times New Roman'
Font.Style = [fsItalic]
Options = [dgTitles, dgIndicator, dgColumnResize, dgColLines, dgRowLines, dgTabs, dgConfirmDelete, dgCancelOnExit]
ParentFont = False
TabOrder = 0
TitleFont.Charset = RUSSIAN_CHARSET
TitleFont.Color = clWindowText
TitleFont.Height = -11
TitleFont.Name = 'Times New Roman'
TitleFont.Style = [fsItalic]
OnCellClick = pr_DBGridCellClick
OnKeyDown = pr_DBGridKeyDown
Columns = <
item
Expanded = False
FieldName = 'FAM'
Title.Caption = 'Прізвище'
Width = 59
Visible = True
end
item
Expanded = False
FieldName = 'NAM'
Title.Caption = 'ім'#39'я'
Width = 57
Visible = True
end
item
Expanded = False
FieldName = 'PAR'
Title.Caption = 'по батькові'
Width = 67
Visible = True
end
item
Alignment = taCenter
Expanded = False
FieldName = 'YEAR_B'
Title.Caption = 'рік народження'
Width = 85
Visible = True
end
item
Alignment = taCenter
Expanded = False
FieldName = 'SEX'
Title.Caption = 'стать'
Visible = True
end
item
Expanded = False
FieldName = 'AGE'
Title.Caption = 'вік'
Width = 38
Visible = True
end
item
Expanded = False
FieldName = 'CHARACT'
Title.Caption = 'характеристика'
Visible = True
end
item
Expanded = False
FieldName = 'PHOTO'
Title.Caption = 'фото'
Visible = True
end>
end
object pr_DBNavigator: TDBNavigator
Left = 96
Top = 320
Width = 304
Height = 18
DataSource = pr_DataSource
VisibleButtons = [nbFirst, nbPrior, nbNext, nbLast]
TabOrder = 2
end
end
object dp_DataSource: TDataSource
DataSet = dp_Query
Left = 110
Top = 58
end
object pr_DataSource: TDataSource
DataSet = pr_Query
Left = 213
Top = 263
end
object dp_Query: TQuery
DatabaseName = 'dbP'
RequestLive = True
SQL.Strings = (
'Select * from Dep where DEP = :PDEP')
Left = 139
Top = 58
ParamData = <
item
DataType = ftString
Name = 'PDEP'
ParamType = ptUnknown
end>
object dp_QueryDEP: TStringField
FieldName = 'DEP'
Origin = 'DEP.DEP'
Size = 15
end
object dp_QueryPROISV: TStringField
FieldName = 'PROISV'
Origin = 'DEP.PROISV'
Size = 15
end
end
object update_Query: TQuery
DatabaseName = 'dbP'
DataSource = pr_DataSource
RequestLive = True
Left = 271
Top = 263
end
object pr_Query: TQuery
ObjectView = True
BeforePost = pr_QueryBeforePost
AfterScroll = pr_QueryAfterScroll
OnCalcFields = pr_QueryCalcFields
DatabaseName = 'dbP'
RequestLive = True
SQL.Strings = (
'Select * from Pers where DEP = :DEP order by FAM,NAM,PAR')
Left = 242
Top = 263
ParamData = <
item
DataType = ftString
Name = 'DEP'
ParamType = ptUnknown
end>
object pr_QueryNUM: TSmallintField
FieldName = 'NUM'
Origin = 'PERS.NUM'
end
object pr_QueryDEP: TStringField
FieldName = 'DEP'
Origin = 'PERS.DEP'
Size = 15
end
object pr_QueryFAM: TStringField
FieldName = 'FAM'
Origin = 'PERS.FAM'
end
object pr_QueryNAM: TStringField
FieldName = 'NAM'
Origin = 'PERS.NAM'
end
object pr_QueryPAR: TStringField
FieldName = 'PAR'
Origin = 'PERS.PAR'
end
object pr_QueryYEAR_B: TSmallintField
FieldName = 'YEAR_B'
Origin = 'PERS.YEAR_B'
end
object pr_QuerySEX: TStringField
Подобные документы
Проектування розподіленої інформаційної системи із використанням технології MIDAS. Методика створення сервера прикладень за технологією MIDAS. Віддалений модуль даних - основна частина сервера прикладень. Методика створення клієнтського прикладення.
лабораторная работа [582,2 K], добавлен 08.06.2009Загальний вигляд синтаксису для створення тригерів. Використання тригерів вставки, оновлення, видалення. Відображення інформації про тригери, їх зміна, призупинення та відновлення роботи. Умовні предикати, обмеження при створенні табличних тригерів.
презентация [221,1 K], добавлен 30.10.2015Методика та основні етапи проектування інформаційної системи "Меблевий салон", опис необхідних для цього даних і джерела їх отримання. Побудова ER-діаграми та порядок її нормалізації. Методи створення таблиць та форм, можливості їх змін, редагування.
курсовая работа [2,1 M], добавлен 08.12.2009Створення нової бази даних та таблиць MS Access. Пов’язування таблиць та індексування їх за тими полями, по яким створюється зв’язок. Створення запиту на вибірку в режимі конструктора. Створення екранних форм для роботи з даними за допомогою майстра форм.
контрольная работа [26,6 K], добавлен 04.02.2013Проектування бази даних: визначення об’єктів, структура таблиць, побудова схеми даних, забезпечення цілісності даних, створення певних відношень між таблицями, створення запитів, побудова форм, оформлення об’єктів. Розробка інструкції користувача.
курсовая работа [1,9 M], добавлен 19.09.2014Можливості застосування середовища MySQL для роботи з базами даних. Завдання системи SQL Server. Розробка концептуальної моделі бази даних "Сервісний центр". Створення таблиць phpmyadmin, заповнення їх даними. Створення запитів і зв’язків у phpmyadmin.
курсовая работа [2,3 M], добавлен 27.05.2015Оператори визначення даних. Створення таблиць. Вилучення таблиць. Додавання записів. Модифікація даних. Видалення даних. Пошук даних. Database Desktop. Компонент TQuery.
реферат [165,8 K], добавлен 13.06.2007Створення вжитків зі сторони сервера баз даних. Оголошення обмежень цілісності в таблиці визначень або з використанням механізму тригерів баз даних. Описання мови команд SQL*Plus як інтерактивної системи, невід'ємної для бази даних Oracle і вжитків.
реферат [17,3 K], добавлен 09.08.2011Визначення мети створення бази даних магазину та таблиць, які вона повинна містити. Розгляд видів полів та ключів таблиць. Створення запитів, форм, звітів, макросів та модулів. Вибір системи управління базами даних. Реалізація моделі у Microsoft Access.
курсовая работа [3,8 M], добавлен 20.07.2014Проектування інформаційної системи; концептуальне (інфологічне) проектування, побудова ER-діаграми, нормалізація даних. Даталогічне проектування баз даних, фізичне проектування інформаційних систем. СУБД Access: об'єкти, створення таблиць, запитів, форм.
курсовая работа [13,9 M], добавлен 09.01.2010