Робота з ado в delphi
Для початку, нам необхідно створити базу даних і як мінімум дві таблиці, які ми і будемо пов'язувати між собою.
У моїй БД дві таблиці з іменами - Таблица1 і Таблица2. Я створю таблицю з прізвищами, а друга таблиця буде з назвами автомобілів. Тобто, у кожного власника, може бути кілька автомобілів (всім би так). Ось так ми і зв'яжемо наші таблиці. Ставлення зв'язку, тут виходить, один до багатьох. Наскільки я пам'ятаю, бувають такі типи відносин:
Це так, що зараз згадалося. Ну а тепер, подивимося на структури наших таблиць.
Тепер, нам необхідно пов'язати ці дві таблиці в MS Access. Поле id Табліци2 призначене для зберігання ідентифікаторів записів з Табліци1. За ним буде розпізнаватися, яка запис з Табліци2 належить записи з Табліци1.
Для того, щоб зв'язати наші таблиці, необхідно перейти до Схеми даних. додати наші таблиці і зв'язати наступні поля, ставленням - один до багатьох:

Якщо в БД MS Access додавати тепер записи, то для кожного прізвища можна додавати скільки завгодно автомобілів, а якщо вибрати певний запис, то здасться список автомобілів для даної людини.
У нашому проекті буде щось схоже, давайте ж приступимо до нього. На формі у мене такі компоненти:
З приводу підключення до БД, дивимося статтю. Ну, а далі найцікавіше. Нам необхідно пов'язати наші компоненти. Виділяємо компоненти TADOTable і в кожному, у властивості Connection, вказуємо компонент TADOConnection. Далі виділяємо DBGrid1 і пов'язуємо його з DataSource1. у властивості DataSource. Компонент DataSource1. у властивості DataSet. вказуємо AdoTable1. Все готово, одна таблиця пов'язана, це буде наша головна таблиця, а точніше з імена і прізвищами автовласників.
Далі нашу головну таблицю необхідно активувати. Виділяємо AdoTable1. у властивості TableName вибираємо Таблица1 і властивість Active встановлюємо в True.
Обов'язково, властивість Connected компонента TADOConnection. має бути встановлено в True
Все, тепер головна таблиця повністю готова. Тепер приступимо до підлеглої.
Виділяємо компонент DBGrid2 і у властивості DataSource пов'язуємо його з компонентом DataSource2. а компонент DataSource2. у властивості DataSet. пов'язуємо з компонентом AdoTable2.
Все, тепер виділяємо компонент AdoTable2 і у властивості TableName вибираємо Таблица2. у властивості MasterSource вибираємо DataSource1 (в даному випадку необхідно вибрати тут TDataSource головною таблиці, тобто головну таблицю).
Далі, у властивості MasterFields. компонента AdoTable2 (підпорядкованої таблиці), ми вказуємо сполучні поля, в такий спосіб:

Все, коли у нас все налаштовано, також активуємо цю таблицю, властивість Active встановлюємо в True.
Все, якщо у Вас є якісь дані в Ваших таблицях, то можете запустити проект і виділити запис з головної таблиці, і Ви побачите, що автоматично в DBGrid2 для цього запису з головної таблиці виводяться записи з підлеглої таблиці. Це дуже зручно. Додавати записи необхідно також, виділяємо запис з головної таблиці і тільки після цього, необхідно додавати запис в підпорядковану таблицю.
Що стосується ще одне методу, зв'язування таблиць, то тут також все просто. Необхідно все самому відстежувати: для якої записи з основної таблиці додається запис підпорядкованої таблиці, що додається і самому записувати ідентифікатор основний таблиці на підлеглу, а потім вже, по виділеній запису (отримувати її ідентифікатор), робити вибірку записів з підлеглої таблиці.
Исходник, можна скачати тут
Схожі записи
Народ підкажіть у мене є 3 форми з DbGrid мені треба в кожному вивести окрему таблицю, яка зберігається в базі даних ms acess (тобто там 3 таблиці) .Подскажіте як зробити, ще треба щоб зв'язку працювали. Відразу попереджаю то що все інше в програмі вже реалізовано через ADOQuery і бажано через нього зробити, але ось як?
Вам необхідно просто свій AdoQuery підключити до потрібної таблиці і зв'язати його з потрібним DbGrid і все у Вас буде відображатися
цей блог і створено в основному для новачків
Добрий день, Ви говорили про компонент Tadoquery, не можу його знайти в Delphi 7, я його погано шукаю або потрібно додатково завантажувати?
Мені саме потрібно з запитами ...
він на вкладці ADO, так що шукайте уважно, в новіших версіях Delphi вони на вкладці dbGO, завантажувати не треба, вони йдуть з пакетом Delphi
Що використовувати в ADOQuery замість властивості MasterSource. Скажіть, будь ласка ... І ще, що робити, якщо у мене кілька пов'язаних таблиць і в залежності від вибору, мені потрібно вивести ту чи іншу пов'язану таблицю разом з основною ..
Здраствуйте. Дуже потрібна Ваша допомога. Як реалізувати в компоненті dbGrid випадає на прикладі двох таблиць, пов'язаних в АКСЕС 1 до багатьох. І чи можна зробити так з декількома полями? Перерив вже купу форумів, але потрібного результату не домігся. Дуже сподіваюсь на вашу допомогу. Заздалегідь дякую.