Èíôîðìàòèêà, ïðîãðàììèðîâàíèå: Ïðîåêòóâàííÿ äâîëàíêîâî¿ ðîçïîä³ëåíî¿ ³íôîðìàö³éíî¿ ñèñòåìè äëÿ ðîáîòè ç áàçàìè äàíèõ ³ç âèêîðèñòàííÿì SQL Interbase, Ëàáîðàòîðíàÿ ðàáîòà

Ïðîåêòóâàííÿ äâîëàíêîâî¿ ðîçïîä³ëåíî¿ ³íôîðìàö³éíî¿ ñèñòåìè äëÿ ðîáîòè ç ÁÄ ³ç âèêîðèñòàííÿì 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(

 ("ijéñíî áàæàºòå çì³íèòè " + 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.    Äàéòå äîêëàäí³ ïîÿñíåííÿ äî ðîçðîáëåíî¿ ïðîãðàìè.


Åùå èç ðàçäåëà Èíôîðìàòèêà, ïðîãðàììèðîâàíèå:


 Ýòî èíòåðåñíî
 Ðåêëàìà
 Ïîèñê ðåôåðàòîâ
 
 Àôîðèçì
Åñëè íà Âàñ óïàëî ÿáëîêî - óäèðàéòå êàê ìîæíî ñêîðåå: ÿáëîíÿ îò ÿáëîêà íåäàëåêî ïàäàåò.
 Ãîðîñêîï
Ãîðîñêîïû
 Ñ÷¸ò÷èêè
bigmir)net TOP 100