.


:




:

































 

 

 

 





. (. 4.7.2) , , .

( 5.2).

 

 

5.2 -

 

. , - .

test.gdb.

CREATE TABLE PERSONA (P_ID INTEGER NOT NULL,

FIO VARCHAR(50) CHARACTER SET WIN1251,

BDATE DATE)

CREATE TABLE PNUMBER (P_ID INTEGER NOT NULL,

PNUM VARCHAR(10) NOT NULL, PTYPE VARCHAR(20));

, . PERSONA 5.3.

 

5.3

 

SQL :

alter table PERSONA add constraint PK_PERSONA primary key (P_ID)

 

PNUMBER FK_PNUMBER, ( 5.4).

 

5.4

 

alter table PNUMBER add constraint FK_PNUMBER foreign key (P_ID)

references PERSONA(P_ID) on delete CASCADE;

 

CASCADE , PERSONA PNUMBER .

, . , 3.

, , 5.5.

 

5.5 ( )

 

PERSONA DataModule2.IBQuery:

SELECT * FROM PERSONA

 

SQL , .

:

workquery.SQL.Add('insert into persona (p_id,fio,bdate)');

workquery.SQL.Add('VALUES (:p_id,:newfio,:newbdate)');

//

workquery.ParamByName('p_id').AsInteger:=Random(High(integer));

//

workquery.ParamByName('newfio').AsString:=EdFIO.Text;

workquery.ParamByName('newbdate').AsDate:=DTP.Date;

 

PERSONA P_ID, PNUMBER. 2 :

1) , GUID COM-. ;

2) . 7.

:

//

workquery.SQL.Add('delete from persona WHERE (p_id=:p_id)');

workquery.ParamByName('p_id').AsInteger:=

IBQuery.FieldByName('p_id').AsInteger;

//

workquery.SQL.Add('update persona set fio=:newfio,

bdate=:newbdate');

workquery.SQL.Add('WHERE (p_id=:p_id)');

workquery.ParamByName('p_id').AsInteger:=

IBQuery.FieldByName('p_id').AsInteger;

workquery.ParamByName('newfio').AsString:=EdFIO.Text;

workquery.ParamByName('newbdate').AsDate:=DTP.Date;

 

DataModule2 NumQuery. SQL

SELECT * FROM PNUMBER WHERE P_ID=:P_ID

:P_ID . , PERSONA. AfterScroll IBQuery:

 

procedure TDataModule2.IBQueryAfterScroll(DataSet: TDataSet);

begin

NumQuery.Active:=false;

NumQuery.ParamByName('P_ID').AsInteger:=

IBQuery.FieldByName('P_ID').AsInteger;

NumQuery.Active:=true;

end;

 

, PERSONA .

DBGrid DataModule2 DataSourceNum:TDataSource.

( 5.6).

 

5.6

 

. .

 

procedure TNumEditForm.BtAddClick(Sender: TObject);

begin

with DataModule2 do

begin

NumQuery.Active:=false; //

//

WorkNumQuery.SQL.Clear;

//

WorkNumQuery.SQL.Add('INSERT INTO PNUMBER

(p_id,pnum,ptype) VALUES (:p_id,:pnum,:ptype)');

// PERSONA

WorkNumQuery.ParamByName('p_id').AsInteger:=

IBQuery.FieldByName('p_id').AsInteger;

//

WorkNumQuery.ParamByName('pnum').AsString:=NumEdit.Text;

WorkNumQuery.ParamByName('ptype').AsString:=CBPType.Text;

//

try

WorkNumQuery.ExecSQL;

WorkNumQuery.Transaction.Commit;

except

showmessage(' ');

WorkNumQuery.Transaction.Rollback;

end;

NumQuery.Active:=true;

end;

end;

 

, DataModule2 WorkNumQuery Pnumber. . DataModule2 : IBQuery WorkNumQuery.Transaction.Commit. , MainTransaction. . NumQuery.Active:=true , P_ID .

:

1) IBQuery NumQuery. , ;

2) IBQuery NumQuery.

. DataModule2 NumTransaction, NumQuery, WorkNumQuery ( 5.7).

 

5.7 DataModule2

 





:


: 2016-03-25; !; : 459 |


:

:

, ; , .
==> ...

1727 - | 1496 -


© 2015-2024 lektsii.org - -

: 0.013 .