1

我正在使用 Delphi7,Devart 的 dbExpress 驱动程序 4.70。

我删除了两个 TSQLTables(称为AB)、两个 TDataSetProviders(dspAdspB)、两个 TClientDataSets(cdsAcdsB)、两个 TDataSources(dsAdsB)和两个 DBGrid(gridAgridB)。一切都很好。如果我设置cdsA.Active为 true,我可以在gridA. 每个相同cdsB

现在我想实现关系

A JOIN B ON a = b.

该字段是 '字段引用a的 true的外键,也是' 的主键。我设置的东西如下(我使用图形工具):ABbbB

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>

我错过了什么,如何解决?

4

1 回答 1

0

使用 Datasnap 时,您应该在源数据集上设置 M/D 关系,而不是在客户端数据集上。它将在主客户端数据集中创建一个“数据集字段”。然后将此字段分配给子客户端数据集。这种方法也更高效。

无论如何它应该也能正常工作,看起来你的 SQL 有问题。

于 2011-11-25T11:29:09.340 回答