Встановлення зв’язку між таблицями на рівні програми використовуючи компонент 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.

Читати повністю

Фільтрування набору даних компонента IBQuery подією OnFilterRecord та з допомогою секції WHERE

При створенні програм для роботи з базами даних, перед розробником постає задача забезпечити зручні засоби для отримання необхідних користувачеві даних. Для цього найчастіше використовують фільтрацію даних по будь-якому набору полів, яка дозволяє виключити з перегляду непотрібні рядки. Наприклад для деякого стовпця «Модель» таблиці «Автомобілі» існує  поле пошуку. Користувач вводить в дане поле модель автомобіля і в результаті отримує список автомобілів, значення поля "Модель" яких співпадає з значенням, яке міститься в пошуковому рядку.

Розглянемо два способи фільтрції набору даних, а саме подією OnFilterRecord та з допомогою секції WHERE. Для цього створимо новий delphi-проект і на головній формі розмістимо усі компоненти (DataSource1, IBQuery1, IBDatabase1, IBTransaction1, DBGrid1, DBNavigator1) так, як показано на малюнку.

Фільтрація набору даних компонента IBQuery полією OnFilterRecord

Фільтрація набору даних компонента IBQuery полією OnFilterRecord

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

Читати повністю