Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];

Вниз

Как связать 2 таблицы...   Найти похожие ветки 

 
Zif ©   (2004-09-26 20:56) [0]

Начну цитатой из книги "Библия 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?


 
sniknik ©   (2004-09-26 21:31) [1]

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


 
Zif ©   (2004-09-26 21:41) [2]

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


 
sniknik ©   (2004-09-26 22:05) [3]

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


 
Zif ©   (2004-09-26 22:13) [4]

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


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

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


 
ЮЮ ©   (2004-09-27 04:06) [6]

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

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


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

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


 
msguns   (2004-09-28 09:28) [8]

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


 
Zif ©   (2004-10-02 15:57) [9]

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



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.046 c
14-1097747959
gid
2004-10-14 13:59
2004.10.31
ShareWare


6-1093319278
SlyFox
2004-08-24 07:47
2004.10.31
NMPOP3: Cannot create file


8-1091529268
Wistler
2004-08-03 14:34
2004.10.31
Получение битмапа с TVideoWindow библиоте DSPack


1-1097824953
Dionnis
2004-10-15 11:22
2004.10.31
Закрыть все формы приложения


3-1096451194
Openfire
2004-09-29 13:46
2004.10.31
Too many open tables





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский