Механізм 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, редакция.