[英]Delphi7 master detail relations query results in ORA-01036
我正在使用Devart的dbExpress驱动程序4.70 Delphi7。
我删除了两个TSQLTables(分别称为A
和B
),两个TDataSetProviders( dspA
和dspB
),两个TClientDataSets( cdsA
和cdsB
),两个TDataSources( dsA
和dsB
)以及两个DBGrid( gridA
和gridB
)。 一切都很好。 如果将cdsA.Active
设置为true,则可以在gridA
看到数据。 每个cdsB
相同。
现在我要实现关系
A JOIN B ON a = b.
字段a
是B
的字段b
引用的真实A
的前键,并且b
也是B
的主键。 我将内容设置如下(我使用图形工具):
cdsB.MasterSource := dsA;
cdsB.MasterFields := a;
cdsB.IndexFieldNames := b;
当我执行cdsB.Open
,出现以下错误:
ORA-01036:非法的变量名称/编号”。
表A中的字段a
值始终为null
(没有数据)。 TSQLMonitor报告以下查询: Execute: select * from A
...
Execute: select * from ENTI where (b is NULL)
:1 (Number,IN) = <NULL>
我错过了什么,如何解决?
使用Datasnap时,应该在源数据集而不是客户端数据集上设置M / D关系。 它将在主客户端数据集中创建一个“数据集字段”。 然后,您将此字段分配给子客户端数据集。 这种方法也更有效。
无论如何,它也应该正常工作,看起来您的SQL出了点问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.