我正在使用Delphi7,Devart的dbExpress驱动程序4.70。
我删除了两个TSQLTables(称为A
和B
),两个TDataSetProviders(dspA
和dspB
),两个TClientDataSets(cdsA
和{{ 1}}),两个TDataSources(cdsB
和dsA
)和两个DBGrids(dsB
和gridA
)。一切都很好。如果我将gridB
设置为true,我可以在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;
时,我收到了这个错误:
ORA-01036:非法变量名称/编号“。
表A中的字段cdsB.Open
值始终为a
(没有数据)。 TSQLMonitor报告以下查询:
null
Execute: select * from A
...
Execute: select * from ENTI where (b is NULL)
我错过了什么,以及如何解决这个问题?
答案 0 :(得分:0)
使用Datasnap时,应在源数据集上设置M / D关系,而不是客户端数据集。它将在主客户端数据集中创建“数据集字段”。然后,将此字段分配给子客户端数据集。这种方法也更为完善。
无论如何它应该也可以工作,它看起来你的SQL有问题。