Механізм мастер-деталь часто виконується в клієнтських програмах для роботи з базами даних, оскільки саме він дозволяє легко пов’язувати дані з різних таблиць, які одержуються в наслідок нормалізації бази даних.
Додамо в програмі, яку ми розробили в роботі №14 нові компоненти:
IBDataSet2, DataSource2, DBGrid2. Пов’яжемо DataSource2 з IBDataSet2, а DBGrid2 з DataSource2. Вкажемо такий SelectSQL запит для IBDataSet2:
SELECT * FROM DEPARTMENT;
За допомогою редактора DataSet Editor створимо такі запити:
InsertSQL:
insert into DEPARTMENT
DEPT_NO, DEPARTMENT, HEAD_DEPT, MNGR_NO, BUDGET, LOCATION, PHONE_NO)
values
:DEPT_NO,:DEPARTMENT,:HEAD_DEPT,:MNGR_NO,:BUDGET,:LOCATION,:PHONE_NO)
DeleteSQL:
delete from DEPARTMENT
where
DEPT_NO =:OLD_DEPT_NO
ModifySQL:
update DEPARTMENT
set
DEPT_NO =:DEPT_NO,
DEPARTMENT =:DEPARTMENT,
HEAD_DEPT =:HEAD_DEPT,
MNGR_NO =:MNGR_NO,
BUDGET =:BUDGET,
LOCATION =:LOCATION,
PHONE_NO =:PHONE_NO
where
DEPT_NO =:OLD_DEPT_NO
RefreshSQL:
Select
DEPT_NO,
DEPARTMENT,
HEAD_DEPT,
MNGR_NO,
BUDGET,
LOCATION,
PHONE_NO
from DEPARTMENT
where
DEPT_NO =:DEPT_NO
Тепер необхідно внести зміни до IBDataSet1. По перше, необхідно задати властивість IBDataSet1.DataSource рівною DataSource2. По друге, необхідно зміними IBDataSet1.SelectSQL:
SELECT * FROM EMPLOYEE
WHERE DEPT_NO=:DEPT_NO;
|
|
При цьому значення параметра:DEPT_NO буде автоматично вибиратися з одноіменного поля IBDataSet2: DEPT_NO.
Запустивши програму, ми побачимо, що при переміщеннях по другій таблиці в першій будуть відображені лише співробітники поточного відділу.
Настроїмо IBDataSet1 таким чином, щоб при додаванні нового запису про робітника автоматично підставлявся номер поточного відділу. Для цього напишемо такий обробник OnNewRecord у IBDataSet1:
procedure TForm1.IBDataSet1NewRecord(DataSet: TDataSet);
begin
IBDataSet1.FieldByName('DEPT_NO').AsInteger:=
IBDataSet2.FieldByName('DEPT_NO').AsInteger;
end;
Контрольні питання:
1. Яким чином виконується вибір даних з підпорядкованих таблиць?
2. Яка комнда здійснює вибір підпорядкованих записів?
Література
Ø Крис Фиайли, SQL Руководство по изучению языка, СПб Питер 2004
Ø Д.Соломон, MICROSOFT SQL Server Энциклопедия пользователя
Ø Х.Ладани, SQL Энциклопедия пользователя
Ø «Рекоммендации по общепользовательскому интерфейсу», Microsoft, редакция.