Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как связать 2 таблицы... [D7, Access]


Zif ©   (2004-09-26 20:56:00) 

Начну цитатой из книги "Библия Delphi" Михаила Фленова:

Теперь добавь сюда компоненты DataSource (назови его TelephonSource) и ADOTable (назови его TelephonTable) для доступа к таблице «Телефоны». Наведи свойство DataSource компонента TelephonSource на TelephonTable.
Теперь установи следующие свойства компонента TelephonTable:
Connection – укажи здесь наш компонент присоединения к базе данных ADOConnection1.
TableName – здесь укажи имя таблицы Телефоны.
Active – установи в true, чтобы открыть таблицу.
MasterSource – выбери здесь из выпадающего списка BookSource. Этим ты указываешь главную таблицу для таблицы Телефонов.
MasterFields – здесь мы должны указать связующие поля. Щёлкни по этому полю дважды и перед тобой откроется окно, как на рисунке 14.10.3. В списке Detail Fields (поля подчинённой базы) выбери поле LinkKey, а в списке Master Fields (поля главной базы) выбери поле Key1. Нажми кнопку Add и в списке Joined Fields (связанные поля) появиться строка отображающая выделенную связь. Закрой окно, кнопкой ОК чтобы сохранить указанную связь.
http://www.podgoretsky.com/ftp/Docs/Delphi/Fleonov/Bibble/Ch%2014-3.pdf(353 КБ)


Как такую же связь создать, если я использую ADOQuery и Access?
Какой код надо ниписать и где? Или иначе: чем заменить MasterFields в ADOQuery?


Zif   (2004-10-02 15:57:00) [1]

большое спасибо, очень помогло.
А можно как-нить попроще объяснить, что делать с проблемой заполнения поля LinkKey в подчинённой таблице?
я новичок...


msguns   (2004-09-28 09:28:00) [2]

При добавлении в Мастер новой записи (с новым UID) никаких добавлений в подчиненные таблицы автоматически не делаются. А вот когда подчиненная таблица активируется (как пример: добавлен заголовок новой накладной, а затем переход к пустойфактуре, куда уже происходит добавление строк). Но ведь новый ключ Мастера (он же связующий) уже известен (во всяком случае его значение можно в любой момент получить) и его-то надо вставить в соотв.запрос.


Lamer8   (2004-09-27 23:38:00) [3]

А если в главной таблице ключевое поле счётчик, то при добавлении записи, в подчинённой таблице требуется ввести в связанное поле такое-же значение как и в ключевом поле главной, но в режиме редактирования этот ключ сервер не посылает ни в ADOQuery ни в ADODataSet, постить таблицы по очереди не самый лучший вариант, так как пользователь изменяет и добавляет данные в SQL запросе, как можно сделать чтоб при сохранении добавленных записей в связанном поле подчинённой таблицы подчинённой таблицы добавлялось значение сгенерированное счётчиком.


ЮЮ   (2004-09-27 04:06:00) [4]

>чем заменить MasterFields в ADOQuery

длЯ MasterSource всё остаётся по-прежнему: любое поле может быть выбрано в качестве Master, а вот Detail запрос должен быть параметрическим запросом, причем имя параметра должно совпадать с именем поля Master DataSet-а - в этом случае никаких лишних телодвижений с определениями пар MasterFields - Joined Fields не надо (по крайней мере так было с TQuery, надеюсь также и у ADOQuery)


sniknik   (2004-09-27 00:07:00) [5]

ADOQuery это ограниченный ADODataSet также как и ADOTable ограниченный он же (ADODataSet), ограничения до привычных свойств привычных по BDE компанент (для облегчения перехода), отличия правда есть.
по моему это была ошибка борланда, создание этих подобий, основные глюки и недопонимание именно от того, что ожидают подобного же поведения (невозможно принцып другой, основа). а привыкая не переходят на лучшее, привыкая костенеют в уже привычных рамках.


Zif   (2004-09-26 22:13:00) [6]

не очень знаком с этим компонентом... Он обладает теми же возможностями, что и ADOQuery? я просто ADOQuery выбрал из-за того, что нужно много поисковых запросов проводить...


sniknik   (2004-09-26 22:05:00) [7]

с чего такие выводы? может и можно но не нужно, замени их оба на ADODataSet.


Zif   (2004-09-26 21:41:00) [8]

тобишь можно использовать одновременно ADOTable и ADOQuery?


sniknik   (2004-09-26 21:31:00) [9]

> чем заменить MasterFields в ADOQuery?
MasterFields-ом в тейбле или в датасете.


Наверх

Титульная страница Поиск, карта сайта Написать письмо