![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TDatasetProvider's stuff
pasha_golub © (2005-09-20 10:45:00)Вводная. Есть потомок TDataset - наш (почти мой ;). Пользователь желает извернуться и сделать Мастер-Детайл отображение через такую схему:
[+] PSQLDatabase1
|--- MasterTable: TPSQLTable
|--- DSMaster: TDataSource
|--- DetailTable: TPSQLTable
Вот тут пока знакомо, а потом идет заморочка с провайдерами и вложенными DataSet'ами.
[+] MasterTable: TPSQLTable
|--- pvdMaster: TDataSetProvider
|--- cdsMaster: TClientDataset
|--- cdsMasterDetailTable: TDataSetField
|--- cdsDetail: TClientDataSet
При чем cdsMasterDetailTable.FieldName := 'DetailTable';
Я так понимаю, этой строчкой пользователь хотел сказать, что должна использоваться DetailTable. Но как это должно происходить через провайдер, для меня загадка.
Соответственно есть еще два TDbGrid'a и два TDataSource'a, с помощью которых гриды и подключаются к cdsMaster & cdsDetail. Ну, это неважно, впрочем.
В хелпе написано:
TDataSetField represents a nested dataset field in a database. This nested dataset can result from an object relational database (such as the nested datasets in Oracle 8 databases) or from a provider that packages data for the master table of a master/detail relationship.
Далее. Во время работы программы, по логу соединения видно, что данные Detail запроса тянутся, что в принипе и не удивительно. Однако, в гриде они не появляются. Не могу понять, что здесь не так.
Вопросы:
Правильна ли схема вообще построена?
Что и как должен реализовывать потомок TDataset'a, чтобы такая схема работала (Я грешу на неверную реализацию IProviderSupport)?
Любые замечания по теме будут приняты к рассмотрению. А то глаз замылился уже, гляжу и не вижу ничего.
Спасибо
pasha_golub (2005-09-21 12:22:00) [1]
> шото муть какаято ... первый раз слышу
Аналогично. Однако дядя Борланд пишеть:
TDataSetField represents a nested dataset field in a database. This nested dataset can result from an object relational database (such as the nested datasets in Oracle 8 databases) or from a provider that packages data for the master table of a master/detail relationship.
Это я повторяюсь... Ну, да ладно. А вот как товарищ провайдер packages data...
Rule (2005-09-21 12:05:00) [2]pasha_golub © (21.09.05 10:51) [3]
шото муть какаято ... первый раз слышу
pasha_golub (2005-09-21 10:51:00) [3]Клянуться, что через TTable у них такой финт ушами проходит.
Из хелпа я почерпнул, то видимо, провайдер должен каким-то образом на запрос TClientDataset'а вытягивать при необходимости и Детайл датасет.
Хоть убей, даже не знаю где копать.
IProviderSupport по этому поводу молчит. В хелпе лишь обрывки поверхностной инфы...
rayrom (2005-09-20 14:55:00) [4]Привет Паша, как я понял люди хотя матер-детайл в одной компаненте сделать? Мне тоже было бы интересно узнать как это реализовать!
pasha_golub (2005-09-20 14:40:00) [5]Как-то что-то все молчат...
Может нужно какие детали раскрыть? Спрашивайте...