Результаты запроса отношения детализации Delphi7 в ORA-01036 - PullRequest
1 голос
/ 25 ноября 2011

Я использую Delphi7, драйвер Devart dbExpress 4.70.

Я отбрасываю две таблицы TSQL (назовите их A и B), два TDataSetProvider (dspA и dspB), два TClientDataSets (cdsA и cdsB), два TDataSources (dsA и dsB) и две сетки DBG (gridA и gridB).Все настроено нормально.Если для cdsA.Active установлено значение true, я вижу данные в gridA.То же самое для cdsB.

Теперь я хочу реализовать соотношение

A JOIN B ON a = b.

Поле a - это истинный ключ A, указанный как B 'Поле b и b также является первичным ключом B.Я установил вещи следующим образом (я использую графические инструменты):

cdsB.MasterSource := dsA;
cdsB.MasterFields := a;
cdsB.IndexFieldNames := b;

Когда я делаю cdsB.Open, я получил эту ошибку:

ORA-01036: недопустимое имя переменной/ number ".

Поле a значение всегда null в таблице A (нет данных). TSQLMonitor сообщает о следующих запросах: Execute: select * from A

...

Execute: select * from ENTI where (b is NULL)

:1 (Number,IN) = <NULL>

Что я пропустил и как это можно исправить?

1 Ответ

0 голосов
/ 25 ноября 2011

При использовании Datasnap вы должны установить отношение M / D для исходных наборов данных, а не для клиентских.Это создаст «поле набора данных» в основном наборе данных клиента.Затем вы присваиваете это поле дочернему набору данных клиента.Этот подход также более эффективен.

В любом случае, он также должен работать, похоже, что-то не так с вашим SQL.

...