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

Вниз

Как в FB организовывают связь Мастер-Детал?   Найти похожие ветки 

 
КаПиБаРа ©   (2004-11-01 06:56) [0]

Набор Мастер получен в IBQuery и отображен в DBLookUp.
Набор Detail получен в IBDataSet и отображен в DBGrid.

При выборе значений в DBLookUp нужно изменять набор в DBGrid.

Как обычно это делается? У меня имеется только такая идея. Переписывать динамически запросы IBDataSet с учетом условия выбранного в DBLookUp.


 
ЮЮ ©   (2004-11-01 08:54) [1]

>Переписывать динамически запросы IBDataSet с учетом условия выбранного в DBLookUp

запрос в IBDataSet должен быть параметрическим, а если у него в качестве DataSource указать Мастер, то и получишь Мастер-Detail связь вез единой строчки кода


 
КаПиБаРа ©   (2004-11-01 10:02) [2]

А можно на примере (для тупых)?
Имеем
 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?


 
Johnmen ©   (2004-11-01 10:15) [3]

>Свойства MasterSource, MasterField у TIBDataSet нет. Как сделать Мастер-Detail?

А что лень поискать, что есть ? Напр. DataSource.
WHERE DetailID=:MasterID
DetailID - ссылочное поле детальной табл.
MasterID - ключевое поле мастерной табл.


 
ЮЮ ©   (2004-11-01 11:01) [4]

select * from TBELGRUP
where
Grup = :IDSposGrup

ibdsElGrup.DataSourse = <DataSource для ibqSposobGrupForElGrup>
название параметра в Detail должно свпадать с именем в Master


 
КаПиБаРа ©   (2004-11-01 13:49) [5]

Спасибо, с отображением/изменением записей все получилось. Но не могу разобраться с вставкой данных

Insert into TBElGrup
 (IDElGrup, Name, Grup)
values
 (:IDElGrup, :NAME, :IDSposGrup)


В поле Grup всегда вставляется 0.
И еще вопрос: :IDSposGrup всегда равен значению IDSposGrup из таблицы TBSPOSGRUP, если ibqSposobGrupForElGrup прописан в DataSource ibdsElGrup.

===============================
Стою на асфальте,
Ноги в лыжи обуты.
То ли лыжи не едут,
то ли я ...
===============================


 
ЮЮ ©   (2004-11-03 04:59) [6]

Судя по коду IBCustomDataSet, обращение к DataSource  есть только в методе InternalSetParamsFromCursor, который, в свою очередь, вызывается только в InternalOpen, т.е. только при открытии набора данных.

Попробуй в инсерт вместо :IDSposGrup указать :Grup, возможно, нужная функциональность реализована ещё в TDataSet.


 
Johnmen ©   (2004-11-03 09:19) [7]

>ЮЮ ©   (03.11.04 04:59) [6]

А в чём сомнения ? DataSource для МД и предназначен и замечательно работает. Даже для IBCustomDataSet :)
И в данном случае оупен Д будет каждый раз, когда изменяются значения параметров в селектскл.


 
ЮЮ ©   (2004-11-03 11:24) [8]

>Johnmen ©   (03.11.04 09:19) [7]

C селектом проблем-то нет, проблема [5], какой параметр указать в InsertSQL, дабы подставилось значение из master-а



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

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

Наверх




Память: 0.46 MB
Время: 0.035 c
14-1100402603
Думкин
2004-11-14 06:23
2004.11.28
С днем рождения! 14 ноября


9-1091007837
xdev
2004-07-28 13:43
2004.11.28
Работа с освещением


14-1100076018
Григорьев Антон
2004-11-10 11:40
2004.11.28
Так вычисляются роботы :))


1-1100474931
Германн
2004-11-15 02:28
2004.11.28
Не могу сформулировать!


1-1100084607
Артем К.
2004-11-10 14:03
2004.11.28
Цветные ячейки в TDataBaseGrid?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский