Механізм master-detail

Механізм master-detail часто виконується в клієнтських програмах для роботи з базами даних, оскільки саме він дозволяє легко пов’язувати дані з різних таблиць, які одержуються в наслідок нормалізації бази даних.

Додамо в проект нові компоненти:

IBDataBase1, IBTransaction1, IBDataSet1, DataSource1, DBGrid1. Пов’яжемо DataSource1 з IBDataSet1, а DBGrid1 з DataSource1. Вкажемо такий SelectSQL запит для IBDataSet1:

SELECT * FROM Customer;

За допомогою редактора DataSet Editor створимо такі запити:

InsertSQL:

INSERT INTO customer (CUSTOMER_ID, FNAME, LNAME, CREDIT, WORK_ADDRESS, ALT_ADDRESS,CITY, STATE, WORK_PHONE, ALT_PHONE, COMPANY)

VALUES (:CUSTOMER_ID,:FNAME,:LNAME,:CREDIT,:WORK_ADDRESS,:ALT_ADDRESS,

:CITY,:STATE,:WORK_PHONE,:ALT_PHONE,:COMPANY)

DeleteSQL:

delete from customer

where customer_id=:customer_id

ModifySQL:

update Customer

set

CUSTOMER_ID =:CUSTOMER_ID,

FNAME =:FNAME,

LNAME =:LNAME,

CREDIT =:CREDIT,

WORK_ADDRESS =:WORK_ADDRESS,

ALT_ADDRESS =:ALT_ADDRESS,

CITY =:CITY,

STATE =:STATE,

WORK_PHONE =:WORK_PHONE,

ALT_PHONE =:ALT_PHONE,

COMPANY =:COMPANY

 

RefreshSQL:

Select

CUSTOMER_ID,

FNAME,

LNAME,

CREDIT,

WORK_ADDRESS,

ALT_ADDRESS,

CITY,

STATE,

WORK_PHONE,

ALT_PHONE,

COMPANY

From Customer

where customer_id=:customer_id

 

Тепер необхідно внести зміни до IBDataSet2. По перше, необхідно задати властивість IBDataSet1.DataSource рівною DataSource1. По друге, необхідно зміними IBDataSet1.SelectSQL:

select *

from SALES

where customer_id =:Customer_id

При цьому значення параметра:Customer_id буде автоматично вибиратися з одноіменного поля IBDataSet1: Customer_id.

Запустивши програму, ми побачимо, що при переміщеннях по другій таблиці в першій будуть відображені лише покупці, які здійснили замовлення.

Налаштуємо IBDataSet2 таким чином, щоб при додаванні нового запису про покупця автоматично підставлявся номер поточного замовлення. Для цього напишемо такий обробник OnNewRecord у IBDataSet2:

procedure TForm1.IBDataSet2NewRecord(DataSet: TDataSet);

begin

IBDataSet2.FieldByName('Customer_id').AsInteger:= IBDataSet1.Fields[0].AsInteger;

end;

З А В Д А Н Н Я

Скомпонуйте описаний проект і перевірте його роботу.

 

КОНТРОЛЬНІ ЗАПИТАННЯ

1. Опишіть роботу компонента TIBDataSet?

2. Яка властивість компонента TIBDataSet дає можливість модифікації БД? Опишіть структуру команди.

3. Яка властивість компонента TIBDataSet здійснює вибір інформації з БД? Опишіть структуру команди.

4. Яка властивість компонента TIBDataSet додає до БД новий запис? Опишіть структуру команди.

5. Яка властивість компонента TIBDataSet вилучає інформацію з БД? Опишіть структуру команди.

 


Література

Ø Крис Фиайли, SQL Руководство по изучению языка, СПб Питер 2004

Ø Д.Соломон, MICROSOFT SQL Server Энциклопедия пользователя

Ø Х.Ладани, SQL Энциклопедия пользователя

Ø «Рекоммендации по общепользовательскому интерфейсу», Microsoft, редакция.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: