![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как в FB организовывают связь Мастер-Детал?
КаПиБаРа © (2004-11-01 06:56:00)Набор Мастер получен в IBQuery и отображен в DBLookUp.
Набор Detail получен в IBDataSet и отображен в DBGrid.
При выборе значений в DBLookUp нужно изменять набор в DBGrid.
Как обычно это делается? У меня имеется только такая идея. Переписывать динамически запросы IBDataSet с учетом условия выбранного в DBLookUp.
ЮЮ (2004-11-03 11:24:00) [1]>Johnmen © (03.11.04 09:19) [7]
C селектом проблем-то нет, проблема [5], какой параметр указать в InsertSQL, дабы подставилось значение из master-а
Johnmen (2004-11-03 09:19:00) [2]>ЮЮ © (03.11.04 04:59) [6]
А в чём сомнения ? DataSource для МД и предназначен и замечательно работает. Даже для IBCustomDataSet :)
И в данном случае оупен Д будет каждый раз, когда изменяются значения параметров в селектскл.
ЮЮ (2004-11-03 04:59:00) [3]Судя по коду IBCustomDataSet, обращение к DataSource есть только в методе InternalSetParamsFromCursor, который, в свою очередь, вызывается только в InternalOpen, т.е. только при открытии набора данных.
Попробуй в инсерт вместо :IDSposGrup указать :Grup, возможно, нужная функциональность реализована ещё в TDataSet.
КаПиБаРа (2004-11-01 13:49:00) [4]Спасибо, с отображением/изменением записей все получилось. Но не могу разобраться с вставкой данных
Insert into TBElGrup
(IDElGrup, Name, Grup)
values
(:IDElGrup, :NAME, :IDSposGrup)
В поле Grup всегда вставляется 0.
И еще вопрос: :IDSposGrupвсегда равен значению IDSposGrup из таблицы TBSPOSGRUP, если ibqSposobGrupForElGrup прописан в DataSource ibdsElGrup.
===============================
Стою на асфальте,
Ноги в лыжи обуты.
То ли лыжи не едут,
то ли я ...
===============================
ЮЮ (2004-11-01 11:01:00) [5]select * from TBELGRUP
where
Grup = :IDSposGrup
ibdsElGrup.DataSourse = <DataSource для ibqSposobGrupForElGrup>
название параметра в Detail должно свпадать с именем в Master
Johnmen (2004-11-01 10:15:00) [6]>Свойства MasterSource, MasterField у TIBDataSet нет. Как сделать Мастер-Detail?
А что лень поискать, что есть ? Напр. DataSource.
WHERE DetailID=:MasterID
DetailID - ссылочное поле детальной табл.
MasterID - ключевое поле мастерной табл.
КаПиБаРа (2004-11-01 10:02:00) [7]А можно на примере (для тупых)?
Имеем
object ibdsElGrup: TIBDataSet
...
SelectSQL.Strings = (
'select * from TBELGRUP'
'where'
' Grup = :Grup')
...
и
object ibqSposobGrupForElGrup: TIBQuery
...
SQL.Strings = (
'select * from TBSPOSGRUP')
...
Описание таблиц. TBSPOSGRUP
Способы группировки
Pole Тип Описание
IDSposGrup сетчик Уникальный ключ
Name 20 символов Название способа группировки
Элементы группы. TBELGRUP
Pole Тип Описание
IDElGrup сетчик Уникальный ключ
Name 30 символов Название группы
Grup целое ID способа группировки (IDSposGrup из таблицы TBSPOSGRUP)
Свойства MasterSource, MasterField у TIBDataSet нет. Как сделать Мастер-Detail?
ЮЮ (2004-11-01 08:54:00) [8]>Переписывать динамически запросы IBDataSet с учетом условия выбранного в DBLookUp
запрос в IBDataSet должен быть параметрическим, а если у него в качестве DataSource указать Мастер, то и получишь Мастер-Detail связь вез единой строчки кода