Я использую Delphi7, драйвер Devart dbExpress 4.70.
Я удаляю два TSQLTable (назовем их A
и B
), два TDataSetProvider (dspA
и dspB
), два TClientDataSet (cdsA
и cdsB
), два TDataSource (dsA
и dsB
) и два DBGrids (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: недопустимое имя/номер переменной".
Значение поля a
всегда равно null
в таблице A (нет данных). TSQLMonitor сообщает о следующих запросах: Execute: select * from A
...
Execute: select * from ENTI where (b is NULL)
:1 (Number,IN) = <NULL>
Что я упустил и как это исправить?
TSQLTable B
наTSQLQuery B
. Я установил операторB
какselect * from B where b=:b
.B.IndexFieldNames
,B.MasterFields
иB.MasterSource
остаются прежними. Ну, если я используюTSQLQuery
вместоTSQLTable
, все работает нормально. Это странно. - person Francesco   schedule 28.11.2011