Вниз
Скачать: CL | DM;

Реализация Master Detail для TOracleDataSet   Найти похожие ветки 

← →
AversFm   (2005-11-20 12:12) [0]

Ув. мастера, я использую DOA. Позскажите как правильно указать свойства MasterFields и DetailFields для связки двух TOracleDataSet.

Для примера:
допустим есть две таблицы (просмотра)
    TabMaster - таблица документов
         Num  - № док.
         Usr   - код пользователя
         Title - шапка док.

    TabDetail - таблица действий по документу
         Num - № док.
         Usr - код пользователя
         Action - действие


Запрос для первого TOracleDataSet (OracleDataSet1):
  SELECT Num, Usr, Title
  FROM TabMaster


Запрос для второго  TOracleDataSet (OracleDataSet2):
  SELECT Action
  FROM TabDetail
  WHERE Num = :Num
     AND  Usr = :Usr


Как теперь указать, что для  OracleDataSet2 параметры :Num и :Usr нужно брать из OracleDataSet1?


← →
Sergey13 ©   (2005-11-21 09:17) [1]

Так вроде как и везде. Указать мастера и список полей через точку с запятой. Помнится еще при указывании этого ДОА сама вставляла нужные параметры в детальный датасет.
Можно еще руками на афтерскрол мастера повесить обновление детейла.


← →
ANB ©   (2005-11-21 12:47) [2]


> AversFm   (20.11.05 12:12)

Некузяво так связки делать - писать больше и  на грабли наступишь (у оракла я не нашел каскадного обновления внешних ключей).


← →
AversFm   (2005-11-21 16:21) [3]


> Указать мастера и список полей через точку с запятой.

Вот оно... А я через запятую тулил. Спасибо за совет.


> Помнится еще при указывании этого ДОА сама вставляла нужные
> параметры в детальный датасет.

А это возможно только в том случае, если таблицы связаны внешним индексом. В моем случае используются сборные запросы - поэтому не подходит.

Итак, подытожим (может еще кому пригодится):

Для данного условия в свойствах OracleDataSet2 (деталь)
заполнить следующие свойства:

Master:= OracleDataSet1;
MasterFields:="Num; Usr";
DetailFields:="Num; Usr";


Еще раз спасибо всем, кто откликнулся.


← →
Val ©   (2005-11-21 17:55) [4]

>[2] ANB ©   (21.11.05 12:47)

> ..на грабли наступишь (у оракла я не нашел каскадного обновления
> внешних ключей)...

в смысле?


← →
ANB ©   (2005-11-21 18:17) [5]


> Val ©   (21.11.05 17:55) [4]

Судя по всему используются естественные ключи (иначе нет смысла делать их составными). Значит рано или поздно вылезет проблема их обновления. А каскадного обновления при задании ограничения в оракле нету (нашел только удаление). Если покажешь - как это сделать - буду очень благодарен.



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.026 c
3-1132321106
Jok
2005-11-18 16:38
2006.01.15
TClientDataSet.ApplyUpdates(-1)


14-1134818415
iamdanil
2005-12-17 14:20
2006.01.15
Компилятор-шифратор


2-1135336738
oleg777
2005-12-23 14:18
2006.01.15
не работает запрос к sysusers


11-1116939309
TKV
2005-05-24 16:55
2006.01.15
Смена курсора ввода текста в Memo


2-1135332871
ANB
2005-12-23 13:14
2006.01.15
Как залогинится при использовании DCOM ?




   Наверх