Home |Login| Search |  Newsletter 
English Russian
Devrace FIBPlus is a fast, flexible and high-performance component library for Borland® Delphi" 5-7, Borland® C++ Builder 5-6 and Borland® Kylix" 3 intended for work with Borland® InterBase® and Firebird using direct InterBase API. FIBPlus combines simplicity of architecture with development convenience that enables to create powerful and effective applications. FIBPlus allows use of all InterBase features and benefits: array-fields, blob-fields, generators and full control of transactions, support of all standard and third-party visual db-aware components, special features for optimization of InterBase net-traffic and a set of special design-time experts.


Products


Support


Download


Online shop


Press-releases


About company
  DEVRACE FIBPLUS
Printable

FIBPLUS

News, Events

Feature Matrix
System Requirements
Benefits
Free Trial Download

White Papers
Who uses FIBPlus
Testimonials
Screenshots

Order Now!
Geography of sales

FAQ
HelpDesk
Bug Tracker
Newsgroups

Feedback

GENERAL

Free download
Online shop
Support

COMPANY

About us
Partners
Press releases
Contact us


Devrace is Borland Technology Partner

We are member of Firebird community


Powered by Bitrix Site Manager - Content Management & Portal Solutions
Powered by Bitrix Site Manager - Content Management & Portal Solutions


FIBPlus. Master-detail. Step 1. Getting data from the table and showing it in TDBGrid.

Viewed: 938

Devrace FIBPlus: Peculiarities of master-detail mechanism in the course of work with InterBase.


Before speaking about technical details I would like to tell about FIBPlus. It is a library of native components for Borland Delphi, Borland C++ Builder and Borland Kylix, which helps a developer to work more effective with InterBase and all its clones (Firebird and Yaffil) through direct InterBase API. Actually that means that while using FIBPlus the developer can also use all InterBase capacities: full control of transactions, maximum speed, special InterBase features (for example array-fields), etc. Besides all the above-mentioned FIBPlus components are absolutely compatible with standard data-aware components. We will demonstrate this in our examples.

The use of master-detail links is one of the most widespread tasks for any applied developer who uses relational databases. Actually the relational approach itself for database optimization means creation of deeper master-detail links. So after the database optimization the developer needs to simplify as much as possible the development of user's interface through which the further work of all master-detail links in its database will be realized.

We will have a look at control of such link using as an example a standard database from the InterBase kit �EMPLOYEE.GDB� and two tables: DEPARTMENT � EMPLOYEE. Here are the structures of both these tables:


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

It is obvious that DEPARTMENT is a master-table and EMPLOYEE � a detail one. The master-detail link is realized by the following fields:

DEPARTMENT.DEPT_NO <- EMPLOYEE.DEPT_NO

That is for each department we can store information about its employees.

Step 1. Getting data from the table and showing it in TDBGrid.

Let�s analyze the process of writing an application from the very beginning. With its help we will be able to edit data about departments and employees. It is necessary to drop on the form the main component, which allows connection to the InterBase database (TpFIBDatabase) and call the editor of this component.

Figure 1.

Figure 2.

For connection to the database it is necessary at least to set a path (in our example it is a path to the local file), a user's name and a password. You can check the correctness of the set parameters by pressing the �Test� button. We can also set parameters of the connection to the database at run-time.

Figure 3.


procedure TForm1.Button1Click(Sender: TObject);
begin
  pFIBDatabase1.DBName := DBNameE.Text;
  pFIBDatabase1.ConnectParams.UserName := UserNameE.Text;
  pFIBDatabase1.ConnectParams.Password := PasswordE.Text;
  pFIBDatabase1.Open;
end;

The next step is getting data from the database. For this we need two components: TpFIBDataSet and TpFIBTransaction. TpFIBDataSet is a descendant of TDataSet and it is fully compatible with all standard visual components (DataSource1, in particular, is connected with pFIBDataSet1). TpFIBTransaction is intended for transaction control.

Figure 4.

You need to set the level of transaction isolation with the help of the TPBMode property, and also link pFIBTransaction1 with pFIBDatabase1.

Figure 5.

Similar to this set the Database and Transaction properties for the pFIBDataSet1 component:

Figures 6-7

Now we can set all necessary queries to the database for getting and changing data in the table. Write a query for getting data with the help of SelectSQL. In our case the query is very simple:

SELECT * FROM DEPARTMENT

Now let's make some small code changes in the procedure:


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;

Before opening a query we do not need to start the transaction explicitly because pFIBDataSet1.Options by default contains the poStartTransaction key and the component itself starts the transaction. After the application start and database opening we see the following:

Figure 8.

See the full example code.

Return to the list


Opinions

* Put your opinion here.
* This dialog does not support HTML.

Your name: 

Return to the list



Feedback Site map FAQ Contact us
Legal Notices :: Privacy Policy