Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2015, 10:50   #1
sergeykom
Пользователь
 
Регистрация: 10.04.2014
Сообщений: 16
По умолчанию как отобразить в одном DBComboBox соответствующие данные другого DBComboBox

Здравствуйте! Есть БД с 2-мя таблицами - Client и Oborudovanie, таблицы связаны полем IDClient (в таблице Client это первичный ключ, а в таблице Oborudovanie - это поле-вторичный ключ для связи с первой таблицей). На форме два DBComboBox. В первом DBComboBox выбираю имя клиента и как сделать так, чтобы во второй таблице отображалось только оборудование выбранного имени клиента, т.е. то оборудование, IDClient-вторичный ключ которого равен IDClient выбранного имени из первой таблицы?
sergeykom вне форума Ответить с цитированием
Старый 17.04.2015, 11:32   #2
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
На форме два DBComboBox. В первом DBComboBox выбираю имя клиента и как сделать так, чтобы во второй таблице отображалось только оборудование выбранного имени клиента, т.е.
1) При выборе "первом DBComboBox" фильтруй дочерние таблица
2) и втором Combo или DBCombo получите список "оборудование выбранного имени клиента"
примеры про фильтр и про выборке много на форуме ..... Реализуйте
xxbesoxx вне форума Ответить с цитированием
Старый 17.04.2015, 13:09   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
sergeykom
Тебе надо заменить DBComboBox на DBLookupComboBox. Реляциями такими занимается он. Плюс настроить схему Master-Detail.
Знаешь что это?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.04.2015, 22:03   #4
sergeykom
Пользователь
 
Регистрация: 10.04.2014
Сообщений: 16
По умолчанию

Не понятно, как заполнять поля DBLookupComboBox1 и DBLookupComboBox2. Есть 2 таблицы Client и Oborudovanie.
DBLookupComboBox1:
ListSorce->DataSource1 (подключен к таблице Client через ADOQuery1)
ListField->Name (имена клиентов в таблице Client)
KeyField->IDClient (первичный ключ в таблице Client)
DataSource->DataSource2(подключен ко второй таблице Oborudovanie через ADOQuery2)
DataField->IDClientOborudov(вторичный ключ в таблице Oborudovanie)

DBLookupComboBox2:
ListSorce->пусто
ListField->пусто
KeyField->пусто
DataSource->DataSource2(подключен ко второй таблице Oborudovanie через ADOQuery2)
DataField->TypeOborudov(поле типа оборудования, которое должно соответствовать выбранному имени клиента).

DBLookupComboBox1 выводит имена, а второй неактивен. Где ошибка?
sergeykom вне форума Ответить с цитированием
Старый 18.04.2015, 22:14   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Master-Detail настроен?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.04.2015, 22:16   #6
sergeykom
Пользователь
 
Регистрация: 10.04.2014
Сообщений: 16
По умолчанию

Не найду поле Master-Detail у DBLookupComboBox. Может, как-то по-другому называется в Delphi7?
sergeykom вне форума Ответить с цитированием
Старый 18.04.2015, 22:46   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Это не поле, а связь. И она настраивается не у этого компонента, а у связанного с ним (Query, Table, DataSet).
http://docwiki.embarcadero.com/RADSt..._%28FireDAC%29
http://delphi.about.com/od/database/l/aa071001c.htm
Вот еще полезно будет ознакомится : http://www.interface.ru/home.asp?artId=20957
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.04.2015, 22:50   #8
sergeykom
Пользователь
 
Регистрация: 10.04.2014
Сообщений: 16
По умолчанию

Спасибо, попробую понять.
sergeykom вне форума Ответить с цитированием
Старый 19.04.2015, 18:33   #9
sergeykom
Пользователь
 
Регистрация: 10.04.2014
Сообщений: 16
По умолчанию

К сожалению, пока не могу разобраться в Master-Detail. Если не сложно, объсяните пошагово - какие настройки где ставить в вышеупомянутых компонентах. все же на примере понять проще :-)
sergeykom вне форума Ответить с цитированием
Старый 19.04.2015, 20:19   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

По памяти пишу.
Допустим у тебя Table1 - Client, а Table2 - Oborudovanie. Тогда:
DataSource1 и DBLookupComboBox1 связан с Table1
DataSource2 и DBLookupComboBox2 связан с Table2
1)
Table2 .MasterSource := DataSource1 ;
Table2 .MasterFields := 'IDClient ';

2)
DBLookupComboBox1.ListSorce := DataSource1
DBLookupComboBox1.ListField:= Поле имя клиента
DBLookupComboBox1.KeyField:= 'IDClient '

3)
DBLookupComboBox2.ListSorce := DataSource2
DBLookupComboBox1.ListField:= оборудование
DBLookupComboBox1.KeyField:= 'IDОборудования'

Опять таки второй комбик по идее вообще не нужен. Одного вполне должно хватить, если просто хочешь отобразить таблицу связанного оборудования с клиентом.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как добавить список из столбца таблицы в DBComboBox.Items Muramidaza БД в Delphi 0 03.03.2014 16:21
Как сохранить номер строки из DBCombobox в базу данных Dedmoroz. БД в Delphi 2 28.03.2011 12:10
Как связать DBComboBox и DBGrid , чтобы... Rin БД в Delphi 14 25.12.2009 18:21
Как сделать так чтобы dBCOMBOBOX...... Gareevbo Общие вопросы Delphi 1 08.06.2009 19:59