Встановлення зв’язку між таблицями на рівні програми використовуючи компонент IBQuery

Зв’язок між таблицями на рівні програми встановлюється від індексного поля чи групи полів підлеглої таблиці (по цим полям повинен бути побудований індекс) до довільного поля (групи полів) головної таблиці.

Таким чином, на рівні програми можна реалізувати зв’язки видів:

  1. 1:1 (коли значення ключів зв’язку підлеглої та головної таблиць – унікальні).
  2. 1:N (коли значення ключа зв’язку підлеглої таблиці – не унікальні, а ключа зв’язку головної таблиці – унікальні).
  3. M:N (коли значення ключів зв’язку підлеглої та головної таблиць – не унікальні).

Давайте на прикладі продемонструємо, як в одній формі можна зв’язати два набори даних (головний – підлеглий) так, щоб в підлеглому наборі завжди відображались лише ті записи, які відповідають біжучому запису головного набору даних.

Розмістимо на формі компоненти: DataSource1, IBQuery1, IBDatabase1, IBTransaction1, DBGrid1, DBNavigator1. З допомогою компонента IBDatabase1 налаштуємо з’єднання з базою даних autobazar. Далі зв’яжемо компоненти IBDatabase1 та IBTransaction1 один з одним: для властивості DefaultDatabase компонента IBTransaction1 присвоємо значення IBDatabase1; для властивості DefaultTransaction компонента IBDatabase1 присвоємо значення IBTransaction1.

Пов’яжемо компонент IBQuery1 з компонентами IBTransaction1 та IBDatabase1, і для властивості SQL запишемо наступний SQL-запит: SELECT * FROM Vendors.

Далі, присвоєм властивості DataSet компонента DataSource1 значення IBQuery1. І для властивості DataSourse компонентів DBGrid1 та DBNavigator1 присвоємо значення DataSource1.

Аналогічним чином розмістіть на формі компоненти: DataSource2, IBQuery2, DBGrid2, DBNavigator2 та налаштуйте їх для роботи з таблицею Cars.

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

master-detali11
Встановлення зв’язку між таблицями на рівні програми

Для встановлення зв’язку між ними змінимо текст запиту у властивості SQL допоміжного набору даних IBQuery2 на: SELECT * FROM Cars WHERE V_id=:Id.

Також у властивості DataSource компонента IBQuery2 треба послатися на компонент DataSource1 і таким чином повідомити програму, що вона повинна брати значення параметра :Id з поточного запису джерела даних DataSource1.

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

master-detali21
Встановлення зв’язку між таблицями на рівні програми

Проект, який було створено по даній темі можна завантажити перейшовши за посиланням Встановлення зв’язку між таблицями на рівні програми використовуючи компонент IBQuery.

Залишити коментар

Your email address will not be published. Required fields are marked *

*