Ãëàâíàÿ Ðåôåðàòû ïî ñåêñîëîãèè Ðåôåðàòû ïî èíôîðìàòèêå ïðîãðàììèðîâàíèþ Ðåôåðàòû ïî áèîëîãèè Ðåôåðàòû ïî ýêîíîìèêå Ðåôåðàòû ïî ìîñêâîâåäåíèþ Ðåôåðàòû ïî ýêîëîãèè Êðàòêîå ñîäåðæàíèå ïðîèçâåäåíèé Ðåôåðàòû ïî ôèçêóëüòóðå è ñïîðòó Òîïèêè ïî àíãëèéñêîìó ÿçûêó Ðåôåðàòû ïî ìàòåìàòèêå Ðåôåðàòû ïî ìóçûêå Îñòàëüíûå ðåôåðàòû Ðåôåðàòû ïî àâèàöèè è êîñìîíàâòèêå Ðåôåðàòû ïî àäìèíèñòðàòèâíîìó ïðàâó Ðåôåðàòû ïî áåçîïàñíîñòè æèçíåäåÿòåëüíîñòè Ðåôåðàòû ïî àðáèòðàæíîìó ïðîöåññó Ðåôåðàòû ïî àðõèòåêòóðå Ðåôåðàòû ïî àñòðîíîìèè Ðåôåðàòû ïî áàíêîâñêîìó äåëó Ðåôåðàòû ïî áèðæåâîìó äåëó Ðåôåðàòû ïî áîòàíèêå è ñåëüñêîìó õîçÿéñòâó Ðåôåðàòû ïî áóõãàëòåðñêîìó ó÷åòó è àóäèòó Ðåôåðàòû ïî âàëþòíûì îòíîøåíèÿì Ðåôåðàòû ïî âåòåðèíàðèè Ðåôåðàòû äëÿ âîåííîé êàôåäðû Ðåôåðàòû ïî ãåîãðàôèè Ðåôåðàòû ïî ãåîäåçèè Ðåôåðàòû ïî ãåîëîãèè Ðåôåðàòû ïî ãåîïîëèòèêå Ðåôåðàòû ïî ãîñóäàðñòâó è ïðàâó Ðåôåðàòû ïî ãðàæäàíñêîìó ïðàâó è ïðîöåññó Ðåôåðàòû ïî äåëîïðîèçâîäñòâó Ðåôåðàòû ïî êðåäèòîâàíèþ Ðåôåðàòû ïî åñòåñòâîçíàíèþ Ðåôåðàòû ïî èñòîðèè òåõíèêè Ðåôåðàòû ïî æóðíàëèñòèêå Ðåôåðàòû ïî çîîëîãèè Ðåôåðàòû ïî èíâåñòèöèÿì Ðåôåðàòû ïî èíôîðìàòèêå Èñòîðè÷åñêèå ëè÷íîñòè Ðåôåðàòû ïî êèáåðíåòèêå Ðåôåðàòû ïî êîììóíèêàöèè è ñâÿçè |
Ëàáîðàòîðíàÿ ðàáîòà: Ïðîåêòóâàííÿ äâîëàíêîâî¿ ðîçïîä³ëåíî¿ ³íôîðìàö³éíî¿ ñèñòåìè äëÿ ðîáîòè ç áàçàìè äàíèõ ³ç âèêîðèñòàííÿì SQL InterbaseËàáîðàòîðíàÿ ðàáîòà: Ïðîåêòóâàííÿ äâîëàíêîâî¿ ðîçïîä³ëåíî¿ ³íôîðìàö³éíî¿ ñèñòåìè äëÿ ðîáîòè ç áàçàìè äàíèõ ³ç âèêîðèñòàííÿì 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. Äàéòå äîêëàäí³ ïîÿñíåííÿ äî ðîçðîáëåíî¿ ïðîãðàìè. |
|