Результаты запроса отношения детализации Delphi7 в ORA-01036

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

Я бросаю два TSQLTables (назовите их A а также B), два TDataSetProviders (dspA а также dspB), два TClientDataSets (cdsA а также cdsB), два TDataSources (dsA а также dsB) и две DBGrids (gridA а также gridB). Все настроено нормально. Если я установлю cdsA.Active правда я вижу данные в 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: недопустимое имя / номер переменной ".

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

...

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

:1 (Number,IN) = <NULL>

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

1 ответ

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

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

Другие вопросы по тегам