Банк рефератов содержит более 364 тысяч рефератов, курсовых и дипломных работ, шпаргалок и докладов по различным дисциплинам: истории, психологии, экономике, менеджменту, философии, праву, экологии. А также изложения, сочинения по литературе, отчеты по практике, топики по английскому.
Полнотекстовый поиск
Всего работ:
364139
Теги названий
Разделы
Авиация и космонавтика (304)
Административное право (123)
Арбитражный процесс (23)
Архитектура (113)
Астрология (4)
Астрономия (4814)
Банковское дело (5227)
Безопасность жизнедеятельности (2616)
Биографии (3423)
Биология (4214)
Биология и химия (1518)
Биржевое дело (68)
Ботаника и сельское хоз-во (2836)
Бухгалтерский учет и аудит (8269)
Валютные отношения (50)
Ветеринария (50)
Военная кафедра (762)
ГДЗ (2)
География (5275)
Геодезия (30)
Геология (1222)
Геополитика (43)
Государство и право (20403)
Гражданское право и процесс (465)
Делопроизводство (19)
Деньги и кредит (108)
ЕГЭ (173)
Естествознание (96)
Журналистика (899)
ЗНО (54)
Зоология (34)
Издательское дело и полиграфия (476)
Инвестиции (106)
Иностранный язык (62791)
Информатика (3562)
Информатика, программирование (6444)
Исторические личности (2165)
История (21319)
История техники (766)
Кибернетика (64)
Коммуникации и связь (3145)
Компьютерные науки (60)
Косметология (17)
Краеведение и этнография (588)
Краткое содержание произведений (1000)
Криминалистика (106)
Криминология (48)
Криптология (3)
Кулинария (1167)
Культура и искусство (8485)
Культурология (537)
Литература : зарубежная (2044)
Литература и русский язык (11657)
Логика (532)
Логистика (21)
Маркетинг (7985)
Математика (3721)
Медицина, здоровье (10549)
Медицинские науки (88)
Международное публичное право (58)
Международное частное право (36)
Международные отношения (2257)
Менеджмент (12491)
Металлургия (91)
Москвоведение (797)
Музыка (1338)
Муниципальное право (24)
Налоги, налогообложение (214)
Наука и техника (1141)
Начертательная геометрия (3)
Оккультизм и уфология (8)
Остальные рефераты (21692)
Педагогика (7850)
Политология (3801)
Право (682)
Право, юриспруденция (2881)
Предпринимательство (475)
Прикладные науки (1)
Промышленность, производство (7100)
Психология (8692)
психология, педагогика (4121)
Радиоэлектроника (443)
Реклама (952)
Религия и мифология (2967)
Риторика (23)
Сексология (748)
Социология (4876)
Статистика (95)
Страхование (107)
Строительные науки (7)
Строительство (2004)
Схемотехника (15)
Таможенная система (663)
Теория государства и права (240)
Теория организации (39)
Теплотехника (25)
Технология (624)
Товароведение (16)
Транспорт (2652)
Трудовое право (136)
Туризм (90)
Уголовное право и процесс (406)
Управление (95)
Управленческие науки (24)
Физика (3462)
Физкультура и спорт (4482)
Философия (7216)
Финансовые науки (4592)
Финансы (5386)
Фотография (3)
Химия (2244)
Хозяйственное право (23)
Цифровые устройства (29)
Экологическое право (35)
Экология (4517)
Экономика (20644)
Экономико-математическое моделирование (666)
Экономическая география (119)
Экономическая теория (2573)
Этика (889)
Юриспруденция (288)
Языковедение (148)
Языкознание, филология (1140)

Лабораторная работа: Проектування дволанкової розподіленої інформаційної системи для роботи з базами даних із використанням

Название: Проектування дволанкової розподіленої інформаційної системи для роботи з базами даних із використанням
Раздел: Рефераты по информатике
Тип: лабораторная работа Добавлен 00:53:21 28 ноября 2010 Похожие работы
Просмотров: 11 Комментариев: 21 Оценило: 2 человек Средний балл: 5 Оценка: неизвестно     Скачать

Проектування дволанкової розподіленої інформаційної системи для роботи з БД із використанням 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

FieldName = 'SEX'

Origin = 'PERS.SEX'

Size = 1

end

object pr_QueryAGE: TSmallintField

Alignment = taCenter

DisplayLabel = 'Возраст'

DisplayWidth = 7

FieldKind = fkCalculated

FieldName = 'AGE'

Calculated = True

end

end

object insert_StoredProc: TStoredProc

ObjectView = True

DatabaseName = 'dbP'

StoredProcName = 'INSERTDBP'

Left = 308

Top = 263

ParamData = <

item

DataType = ftString

Name = 'PDEP'

ParamType = ptInput

end

item

DataType = ftString

Name = 'PFAM'

ParamType = ptInput

end

item

DataType = ftString

Name = 'PNAM'

ParamType = ptInput

end

item

DataType = ftString

Name = 'PPAR'

ParamType = ptInput

end

item

DataType = ftInteger

Name = 'PYEAR_B'

ParamType = ptInput

end

item

DataType = ftString

Name = 'PSEX'

ParamType = ptInput

end>

end

object update_StoredProc: TStoredProc

ObjectView = True

DatabaseName = 'dbP'

StoredProcName = 'UPDATEDBP'

Left = 366

Top = 263

ParamData = <

item

DataType = ftString

Name = 'PDEP'

ParamType = ptInput

end

item

DataType = ftString

Name = 'PFAM'

ParamType = ptInput

end

item

DataType = ftString

Name = 'PNAM'

ParamType = ptInput

end

item

DataType = ftString

Name = 'PPAR'

ParamType = ptInput

end

item

DataType = ftInteger

Name = 'PYEAR_B'

ParamType = ptInput

end

item

DataType = ftString

Name = 'PSEX'

ParamType = ptInput

end

item

DataType = ftInteger

Name = 'NUMBER'

ParamType = ptOutput

end>

end

object delete_StoredProc: TStoredProc

ObjectView = True

DatabaseName = 'dbP'

StoredProcName = 'DELETEDBP'

Left = 337

Top = 263

ParamData = <

item

DataType = ftInteger

Name = 'PNUM'

ParamType = ptInput

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;

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;

TComboBox *dp_ComboBox;

TDBEdit *dp2_DBEdit;

TStringField *dp_QueryDEP;

TStringField *dp_QueryPROISV;

TGroupBox *GroupBox1;

TLabel *sql_Label;

TAnimate *Animate1;

TBevel *oper_Bevel;

TShape *oper_Shape;

TImage *Image1;

TQuery *pr_Query;

TSmallintField *pr_QueryNUM;

TStringField *pr_QueryDEP;

TStringField *pr_QueryFAM;

TStringField *pr_QueryNAM;

TStringField *pr_QueryPAR;

TSmallintField *pr_QueryYEAR_B;

TStringField *pr_QuerySEX;

TSmallintField *pr_QueryAGE;

TStoredProc *insert_StoredProc;

TStoredProc *update_StoredProc;

TStoredProc *delete_StoredProc;

TPanel *pr_Panel;

TLabel *pr_Label;

void __fastcall FormCreate(TObject *Sender);

void __fastcall dp_ComboBoxChange(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);

void __fastcall prview_RadioGroupClick(TObject *Sender);

void __fastcall pr_DBGridKeyDown(TObject *Sender, WORD &Key,

TShiftState Shift);

private:// User declarations

public:// User declarations

fastcall Tmain_Form(TComponent* Owner);

unsigned short Year;

unsigned short Month;

unsigned short Day;

bool CanPost;

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"

#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);

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();

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(3000);

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(3000);

pr_Query->SQL->Add(sql_Operator);

} else {

// показ записів за переглядами

sql_Operator =

"Select * from DEP_" + AnsiString(dp_ComboBox->ItemIndex + 1);

sql_Label->Caption = sql_Operator;

Delay(3000);

pr_Query->SQL->Add(sql_Operator);

}

pr_Query->ExecSQL();

pr_Query->Open();

pr_Query->First();

}

//---------------------------------------------------------------------------

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)

{

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;

}

pr_Label->Caption = pr_QueryNUM->AsString;

}

//---------------------------------------------------------------------------

void __fastcall Tmain_Form::pr_QueryBeforePost(TDataSet *DataSet)

{

if (!CanPost) {

DataSet->Cancel();

Abort;

}

}

//---------------------------------------------------------------------------

void __fastcall Tmain_Form::chadd_ButtonClick(TObject *Sender)

{ // додаваннязаписудотаблиці PERS

insert_StoredProc->ParamByName("pDEP")->AsString = chdp_ComboBox->Text;

insert_StoredProc->ParamByName("pFAM")->AsString = chfam_Edit->Text;

insert_StoredProc->ParamByName("pNAM")->AsString = chname_Edit->Text;

insert_StoredProc->ParamByName("pPAR")->AsString = chgrand_Edit->Text;

insert_StoredProc->ParamByName("pYEAR_B")->AsInteger = chyear_CSpinEdit->Value;

insert_StoredProc->ParamByName("pSEX")->AsString =

sex2_RadioGroup->Items->Strings[sex2_RadioGroup->ItemIndex];

sql_Operator =

"Insert into PERS (DEP, FAM, NAM, PAR, YEAR_B, SEX)"

" VALUES (:pDEP, :pFAM, :pNAM, :pPAR, :pYEAR_B, :pSEX)";

sql_Label->Caption = sql_Operator;

insert_StoredProc->Prepare();

insert_StoredProc->ExecProc();

dp_ComboBoxChange(Sender);

ShowMessage ("Вставкузаписузбереженоюпроцедурою INSERTdbP виконаноуспішно!");

}

//---------------------------------------------------------------------------

void __fastcall Tmain_Form::chdelete_ButtonClick(TObject *Sender)

{ // видалення поточного запису з таблиці PERS

if (Application->MessageBox("Ви дійсно бажаєте видалити поточний запис?",

"Підтвердіть видалення запису",

MB_YESNO + MB_ICONEXCLAMATION) == IDYES) {

delete_StoredProc->ParamByName("pNUM")->AsInteger =

pr_QueryNUM->AsInteger;

sql_Operator = "Delete from PERS where NUM = :pNUM";

sql_Label->Caption = sql_Operator;

delete_StoredProc->Prepare();

delete_StoredProc->ExecProc();

dp_ComboBoxChange(Sender);

ShowMessage ("Видаленнязаписузбереженоюпроцедурою DELETEdbP виконаноуспішно!");

}

}

//---------------------------------------------------------------------------

void __fastcall Tmain_Form::chpost_ButtonClick(TObject *Sender)

{

update_StoredProc->ParamByName("pDEP")->AsString = chdp_ComboBox->Text;

update_StoredProc->ParamByName("pFAM")->AsString = chfam_Edit->Text;

update_StoredProc->ParamByName("pNAM")->AsString = chname_Edit->Text;

update_StoredProc->ParamByName("pPAR")->AsString = chgrand_Edit->Text;

update_StoredProc->ParamByName("pYEAR_B")->AsInteger = chyear_CSpinEdit->Value;

update_StoredProc->ParamByName("pSEX")->AsString =

sex2_RadioGroup->Items->Strings[sex2_RadioGroup->ItemIndex];

sql_Operator =

"Update PERS Set DEP = :pDEP, YEAR_B = :pYEAR_B, SEX = :pSEX "

" Where (FAM = :pFAM) and (NAM = :pNAM) and (PAR = :pPAR)";

sql_Label->Caption = sql_Operator;

update_StoredProc->Prepare();

update_StoredProc->ExecProc();

dp_ComboBoxChange(Sender);

if (update_StoredProc->ParamByName("NUMBER")->AsInteger == 0)

ShowMessage ("* Помилкапоновленнязапису!");

else

ShowMessage ("Поновленнязаписузбережено.процедурою UPDATEdbP виконаноуспішно!");

}

//---------------------------------------------------------------------------

void __fastcall Tmain_Form::PageControlChange(TObject *Sender)

{

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;

}

}

//---------------------------------------------------------------------------

void __fastcall Tmain_Form::Delay(unsigned long int mSeconds)

{ // затримканадекількамілісекунд

unsigned long int FirstTick;

FirstTick = GetTickCount();

do

Application->ProcessMessages();

while (GetTickCount() - FirstTick <= mSeconds);

}

//---------------------------------------------------------------------------

void __fastcall Tmain_Form::prview_RadioGroupClick(TObject *Sender)

{

dp_ComboBoxChange (Sender);

}

//---------------------------------------------------------------------------

void __fastcall Tmain_Form::pr_DBGridKeyDown(TObject *Sender, WORD &Key,

TShiftState Shift)

{

pr_Label->Caption = pr_QueryNUM->AsString;

}

//---------------------------------------------------------------------------

Длявиконанняприкладеннятребапопередньозавантажитинавиконанняприкладення-сервер IBServer.EXE, якезазвичайзнаходитьсязамаршрутом "E:\Program Files\InterBase Corp\InterBase\Bin\" іобслуговуєзапитидобазиданих Interbase. Після завантаження поточ-ного проекту на виконання цей сервер виводить на екран запит (мал.. 1.21) , у полі Password: якого треба ввести пароль доступу masterkey.:

Малюнок 1.21

Приклад вигляду форми під час функціонування прикладення наведено на мал. 1.22.

Малюнок 1.22


Контрольнi запитання:

1. Детально опишіть компоненти RAD: TDataSource, TQuery, TDBMemo, TDBGrid, TDBImage, TDBText, TDBNavigator, TStoredProc.

2. Як створити БД Interbase і призначити їй аліас?

3. Як створити індекси таблиці БД Interbase?

4. Як створити і використати у прикладенні перегляд таблиці БД Interbase?

5. Яким чином створюється і для чого використовується генератор БД Interbase?

6. Як призначити зв’язок компонентів з реальною БД?

7. Яким чином створюється і для чого використовується триггер БД Interbase?

8. Яким чином створюється і для чого використовується збережена процедура БД Inter-base?

9. Для чого використовується оператор SQL “SELECT”, наприклад:

"Select * from DEP where DEP=:PDEP"?

10. Опишіть методику додавання і видалення запису до/з таблиці БД. Чому для цього використовується додатковий компонент TQuery?

11. Опишіть методику додавання, видалення і корегування записів таблиці БД із викорис-танням збережених процедур.

12. Дайте докладні пояснення до розробленої програми.

Оценить/Добавить комментарий
Имя
Оценка
Комментарии:
Хватит париться. На сайте FAST-REFERAT.RU вам сделают любой реферат, курсовую или дипломную. Сам пользуюсь, и вам советую!
Никита11:44:37 04 ноября 2021
.
.11:44:35 04 ноября 2021
.
.11:44:33 04 ноября 2021
.
.11:44:32 04 ноября 2021
.
.11:44:30 04 ноября 2021

Смотреть все комментарии (21)
Работы, похожие на Лабораторная работа: Проектування дволанкової розподіленої інформаційної системи для роботи з базами даних із використанням

Назад
Меню
Главная
Рефераты
Благодарности
Опрос
Станете ли вы заказывать работу за деньги, если не найдете ее в Интернете?

Да, в любом случае.
Да, но только в случае крайней необходимости.
Возможно, в зависимости от цены.
Нет, напишу его сам.
Нет, забью.



Результаты(294402)
Комментарии (4230)
Copyright © 2005 - 2024 BestReferat.ru / реклама на сайте