Клієнтська програма на основі IBQuery та IBUpdateSQL

Компонент TIBUpdateSQL реалізує об'єкти, призначені для редагування наборів даних, доступних тільки для читання. Компонент зазвичай використовується спільно з компонентом TIBQuery. Вся робота механізму є простою у використанні і практично не вимагає від програміста написання коду.

Зв'язок компонента TIBUpdateSQL з компонентом TIBQuery, здійснюється за допомогою властивості UpdateObject. Запити на додавання, редагування та видалення записів зручно створювати в спеціальному редакторі, доступ до якого можна отримати за допомогою команди контекстного меню UpdateSQL Editor.

Для розробки простого прикладу використання компонента необхідно створити новий проект і на формі розмістити компоненти IBQuery1, IBDatabase1, IBTransaction1, IBUpdateSQL1, DataSource1, DBGrid1, DBNavigator1.

ibupdatesql2

Прикладу використання компонента IBUpdateSQL

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

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

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

Список вибору фіксованих значень в стовпці компонента DBGrid

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

Розглянемо використання даної властивості більш детально. Для цього створимо новий delphi-проект і на формі розмістимо наступні компоненти: DBGrid1, DBNavigator1, IBDatabase1, IBTransaction1, IBTable1, DataSoutce1.

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

  1. Відкриємо список властивості DefaultDatabase компонента IBTransaction1 та виберемо значення IBDatabase1. Таким чином ми зв’язали компонент IBTransaction1 з компонентом IBDatabase1.

  2. Відкриємо список властивості DefaultTransaction компонента IBDatabase1 та виберемо в ньому значення IBTransaction1 (зв’язали компонент IBDatabase1 з компонентом IBTransaction1).

Після цього, налаштуємо з'єднання компонента IBTable1 з компонентами IBTransaction1 та IBDatabase1, і з допомогою властивості TableName зв'яжемо його з таблицею Cars. Компонент DataSource1 використавши властивості DataSet налаштуємо на таблицю даних IBTable1. І для властивості DataSourse компонентів DBGrid1 та DBNavigator1 присвоїмо значення DataSource1.

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

Використання збережуваних процедур в Delphi

Компонент TIBStoredProc призначений для виконання збережених процедур, які зберігаються на сервері, і повернення результатів їх роботи. При з'єднанні з базою даних у властивість StoredProcedureNames завантажується список доступних в базі даних збережуваних процедур. З допомогою влястивості  StoredProcName можна вказати збережувану процедуру, результат роботи якої ми очікуємо.

Як правило, збережувані процедури мають набори вхідних і вихідних параметрів, які містяться у властивості Params. Звернутися до будь-якого з них можна за його індексом або за імені, використовуючи метод ParamByName. Загальна кількість параметрів, які містить збережувана процедура, зберігається у властивості ParamCount.

Метод Prepare здійснює підготовку процедури до виконання. Підготовка полягає в тому, що сервер оптимізує виконання і компіляцію процедури, після чого зберігає результат компеляції. Це скорочує до мінімуму час звернення до процедури. Визначити, чи готова збережена процедура до виконання, дозволяє властивість Prepared. Якщо властивість має значення True, то збережена процедура підготовлена ​​до виконання.

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

Виконання запитів за допомогою компонента TIBDataSet

Компонент TIBDataSet призначений для роботи з наборами даних, які отримані в ході виконання SQL-запиту. Для цього в компонент вбудовано ряд об'єктів, з допомогою яких можна виконувати запити на вибірку, видалення, модифкацію і додавання записів. Основним являється запит на вибірку, який міститься у властивості SelectSQL. Для створення запиту можна використовувати вбудований редактор, для запуску якого досить вибрати пункт контекстного меню Edit SQL.

Копонент TIBDataSet

Вікно редактора для формування SQL запитів на вибірку

Допоміжні запити містяться у властивостях InsertSQL, ModifySQL, DeleteSQL і RefreshSQL. Ці запити призначені, відповідно, для вставки, зміни, видалення і оновлення записів. Для виклику редактора допоміжних запитів до бази даних необхідно вибрати пункт контекстного меню компонента DataSet Editor.

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

Використання компонентів InterBase Express для підключення до сервера

В клієнтських прикладних програмах Delphi з’єднання з сервером БД здійснюється з допомогою компонента TIBDatabase (відносится до набору InterBase Express). Для встановлення зв'язку з сервером необхідно вказати ім'я сервера і повний шлях до бази даних. Якщо сервер є локальним, то вказуєм лише шлях до файлу бази даних. Для цього можна використовувати властивість DatabaseName (міститься на вкладці властивостей інспектора об'єктів), або скористатися зручним редактором, для виклику якого потрібно двічі клацнути на компоненті. Даний редактор також надає можливість задати значення основних параметрів, що забезпечують з’єднання з базою даних (User Name, Password, SQLRole, Character Set).

Компонент IBDatabase

Підключення до БД з допомогою компонента TIBDatabase

Дані параметри з'єднання можна також задати з допомогою властивості Params.

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