Консультация № 114191
15.12.2007, 22:00
0.00 руб.
0 1 1
Ув. Эксперты. Нужен совет в написании БД на С++ Builder (или Delphi). У меня на форме содержатся два компонента TDataSourcе, два TTablе (DiskTable и UserTable) и два TDBGrid. Первый TDBGrid связан с таблицей БД содержащей данные о существующих в магазине дисках, таблица DiskTable (ID код диска, название диска, цена и т.д.), второй TDBGrid связан с таблицей БД, содержащей данные о клиенте, таблица UserTable (ID код заказанного диска, Ф.И.О, логин, эл. почта и т.д.). ID код заказанного диска, естественно, совпадает с существующим в таблице DiskTable. А теперь перехожу собственно и к моей проблеме: мне нужно, чтобы при подсвечивании одной из строк в TDBGrid, содержащей данные о клиенте, в отдельном Edit’е (или где-нибудь ещё) выводилось название диска, которое содержится в таблице DiskTable. Т.е. мне нужно получить данные определенной строки таблицы.
P.S. Прошу не смеяться над моим вопросом, я только учусь написании БД в среде С++ Builder и с компонентами BDE знаком «туго».

Обсуждение

Неизвестный
15.12.2007, 22:47
общий
это ответ
Здравствуйте, Igor [s2dent]!

Вам надо у подчиненой таблицы установить свойство DataSorce (выбрать из списка) DataSourcе главной таблицы.

т.е.

1. "главная таблица" - UserTable с ней связан TDataSourcе (например, dUserTable) - от него идет связь к первому DBGrid.

2. "связаная таблица" - DiskTable, у ней так же есть TDataSourcе (например, dDiskTable) - и сетка отображения данных DBGrid.

Для того, что бы перемещаясь по таблице UserTable, были показаны записи в DiskTable только те, что совподают по ключу ID, надо настроить их связь...

В таблице DiskTable устанавливаем свойство MasterSourcе равным (иного там и не будет, т.к. у вас только 2 таблицы) dDiskTable и поле по которуму будет вести идентификацию записи MasterFields ( тоже свойство, там же.. щелкаем по многоточию откроется форма настройки). Делаем связь в обоих таблицах, по полю ID.

Всё.. теперь, любое перемещение по UserTable будет отображать только зависимые данные в DiskTable.
Форма ответа