������, ��� ������, ����������, ��������� ����������� �������, ��� �������� �� ������� ���������� � FIBPlus. ��� ���������� "��������" ��������� ��� Borland Delphi, Borland C++ Builder � Borland Kylix, ������� ��������� ������������ �������� ���������� �������� � ������ ������ InterBase � ���� ��� ������, ��������� Direct InterBase API. � �����-��, ��� ��������, ��� ��� ������ FIBPlus ����������� ����� ������������ ��� ����������� InterBase: ������ ���������� ������������, ������������ ��������, ������������������ ����������� InterBase (��������, array-fields) � �.�. ��� ���� ����, ���������� FIBPlus ��������� ���������� �� ������������ data-aware ������������, ��� ����� �������� � �������� ���������� ����������������� ����������.
������������� ������ master-detail �������� ����� �� ����� ���������������� ����� ��� ������ ����������� ������������, ������� ���������� � ����� ������ ����������� ���� ������. � �����-��, ��� ����������� ������ � ����������� ���� ������ � �������� �������� ��� ����� �������� ������ master-detail. ����� �������, ����� ����������� ���� ������ ����� ������������� ������ ������������� ����������� ��������� ���� ����� ��� ���������� ����������������� ����������, ����� ������� ����� �������������� ����� ������ �� ����� master-detail �������� � ��� ���� ������.
�� ���������� ���������� ����� ������� �� ������� ����������� ���� ������ �� �������� Interbase "EMPLOYEE.GDB" � ���� ������: DEPARTMENT � EMPLOYEE. ���� �� ������ ��������� ����� ������.
CREATE TABLE DEPARTMENT (
DEPT_NO DEPTNO NOT NULL,
DEPARTMENT VARCHAR (25) NOT NULL,
HEAD_DEPT DEPTNO,
MNGR_NO EMPNO,
BUDGET BUDGET,
LOCATION VARCHAR (15),
PHONE_NO PHONENUMBER DEFAULT '555-1234',
DEPT_NO1 CUSTNO);
ALTER TABLE DEPARTMENT ADD PRIMARY KEY (DEPT_NO);
CREATE TABLE EMPLOYEE (
EMP_NO EMPNO NOT NULL,
FIRST_NAME FIRSTNAME NOT NULL,
LAST_NAME LASTNAME NOT NULL,
PHONE_EXT VARCHAR (4),
HIRE_DATE DATE DEFAULT 'NOW' NOT NULL,
DEPT_NO DEPTNO NOT NULL,
JOB_CODE JOBCODE NOT NULL,
JOB_GRADE JOBGRADE NOT NULL,
JOB_COUNTRY COUNTRYNAME NOT NULL,
SALARY SALARY NOT NULL,
FULL_NAME COMPUTED BY (last_name || ', ' || first_name));
ALTER TABLE EMPLOYEE ADD PRIMARY KEY (EMP_NO);
ALTER TABLE EMPLOYEE ADD FOREIGN KEY (DEPT_NO) REFERENCES DEPARTMENT (DEPT_NO);
|
��������, ��� ������� DEPARTMENT �������� master-��������, � ������� EMPLOYEE - detail-��������. ������ master-detail �������������� �� �����:
DEPARTMENT.DEPT_NO <- EMPLOYEE.DEPT_NO
�� ����, ��� ������� ������ �� ����� ��������� ���������� ��� ���� ��� �����������. ��� ������������� ��������, ������ � ������ ������, ���������� ��������� ���� ������ employee. ����� �������� ��������� ����� ����, ������� ���� ����� ������������ ��� ������� InterBase ��� Firebird, ������� �� �����������.
��� 1. ��������� ������ �� ������� � ����� ������ � TDBGrid.
���������� � ������ ������ �������� ����������, ��� ������ �������� �� ������ ������������� ������ �� ������� � �����������. ���������� ������� �� ����� �������� ���������, ������� ��������� ������������ � ���� ������ Interbase (TpFIBDatabase) � �������� �������� ����� ����������:
���. 1.
���. 2.
��� ����������� � ���� ��� ������� ���������� ������� ���� (� ������ �������, ��� ���� � ���������� �����), ��� ������������ � ������. �� ������ ��������� ������������ �������� ����������, ����� �� ������ Test. �� ����� ����� ������ ��������� ����������� � ���� � run-time:
���. 3.
procedure TForm1.Button1Click(Sender: TObject);
begin
pFIBDatabase1.DBName := DBNameE.Text;
pFIBDatabase1.ConnectParams.UserName := UserNameE.Text;
pFIBDatabase1.ConnectParams.Password := PasswordE.Text;
pFIBDatabase1.Open;
end;
|
��������� ���� - ��������� ������ �� ���� ������. ��� ����� ��� ���������� ��� ����������: TpFIBDataSet � TpFIBTransaction. TpFIBDataSet �������� �������� ������ TDataSet � ��������� ��������� �� ����� ������������ ����������� ������������ (DataSource1, � ���������, ������ � pFIBDataSet1 ). TpFIBTransaction ������������ ��� ���������� �����������.
���. 4.
���������� ������� ������� �������� ���������� ��� ������ �������� TPBMode, � ����� "����������" pFIBTransaction1 � pFIBDatabase1:
���. 5.
����������, ���������� ������� �������� Database � Transaction ��� ���������� pFIBDataSet1:
���. 6.
|
���. 7.
|
������ �� ����� ������� ����������� ������� � ���� ������ ��� ��������� � ��������� ������ � �������. ����� �������� ������ ��� ��������� ������, ��������� �������� SelectSQL. � ����� ������ ��� ����� ����� ������� ������:
SELECT * FROM DEPARTMENT
������ ������� ������� ��� � ���������:
procedure TForm1.Button1Click(Sender: TObject); begin pFIBDatabase1.DBName := DBNameE.Text; pFIBDatabase1.ConnectParams.UserName := UserNameE.Text; pFIBDatabase1.ConnectParams.Password := PasswordE.Text; pFIBDatabase1.Open;
pFIBDataSet1.Open;
end;
|
��� �� ����� ����� ������� ��������� ���������� ����� ��������� �������, ��������� �� ��������� �������� pFIBDataSet1.Options �������� ���� poStartTransaction � ��������� ��� ��������� ����������. ����� ������� ����������, � �������� ���� ������ �� ������ ��������� ���������:
���. 8.
��������� ������ ������� ��� �������.
|