Основні властивості на методи компонентів набору даних

Розглядаючи складові delphi-програм, що створюються для роботи з базами даних, нами неодноразово було використано термін набір даних. Але що ж мається на увазі під цим терміном залишається не зовсім зрозумілим. Отже, у найпростішому випадку набір даних — це файл таблиці, фізично розташований на жорсткому диску комп'ютера, де таблиця складається з певного переліку полів, кожне з яких призначене для зберігання даних певного типу.

Під час введення даних таблиця поповнюється новими рядками, які часто називають записами. Відкривши таблицю, користувач отримує доступ до всіх рядків, що зберігаються в таблиці. Такий варіант називається повним набором даних. Якщо ж користувачеві необхідна лише певна частина інформації, скажімо дані про автомобілі, ціна яких не перевищує зазначену суму, то кажуть, що йому потрібно частина набору даних.

Якщо ж всі рядки таблиці відсортовані в алфавітному або в якомусь іншому порядку, то застосовують термін упорядкований набір даних. Також хочеться зазначити, що дуже часто зустрічається випадок, коли результуючий набір формується з даних, що зберігаються в різних таблицях. У такому випадку можна говорити про скаладений наборі даних.

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

Джерело даних — компонент TDataSource

Розглянувши основні характеристики проектів роботи з базами даних, приходимо до висновку, що джерело даних являється незмінним елементом при розробці будь-яких клієнтських програм, що пряцюють з даними такого типу. Компонент TDataSource (міститься на закладці Data Access палітри компонентів Delphi) і виконує функції джерела даних в таких програмах. Власних властивостей і методів у нього небагато, а якщо бути більш точним, то чотири властивості, два методи і три обробника подій. Але, незважаючи на таку скромність, він прекрасно вирішує поставлені перед ним завдання.

По-перше, організація взаємодій між компонентами доступу до набору даних (компоненти типу TTable, TQuery, TStoredProc,...) і елементами управління даними (TDBNavigator, TDBEdit, TDBGrid,...) здійснюється саме з допомогою компонентаTDataSource. Джерело даних, в такому випадку, бере на себе відповідальність за передачу інформації в компоненти відображення даних і повертає назад здійснені користувачем зміни. Завдяки такій винятковій здатності питання відображення і редагування пов'язаних з TDataSource даних не викликає ніяких труднощів.

По-друге, компонент TDataSource здатний організувати зв'язок між головним та підлеглим наборами даних. Це питання більш детально буде розглянуто в подальших параграфах, де з допомогою компонента TDataSource ми навчимося встановлювати відношення («один до одного»«один до багатьох»«багато до одного» і «багато до багатьох») між двома таблицями бази даних.

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

Характеристика delphi-проектів які створюються для роботи з базами даних

При створенні програми для роботи з базами даних із застосуванням будь-якої технології доступу до даних (BDE (Borland Database Engine), dbExpress, ADO (ActiveX Database Objects), InterBase) використовується стандартний склад і схема зв'язку компонентів і таблиці бази даних. До складу delphi-програми для роботи з базами даних входять три типи компонентів: джерело даних, візуальні компоненти і набори даних.

Компонент джерело даних відіграє роль сполучної ланки між набором даних і візуальними компонентами. Візуальні компоненти служать для навігації по набору даних, відображення і редагування записів. Набори даних служать для організації зв'язку з таблицями бази даних. У Delphi для різних механізмів доступу до даних, в якості наборів даних використовуються свої компоненти.

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

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

Клієнтська програма на основі 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.

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

Наступна сторінка »