Результаты запроса отношения детализации 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.