1

Delphi7、Devart の dbExpress ドライバー 4.70 を使用しています。

2 つの TSQLTables (それらを and と呼びますA) B、2 つの TDataSetProviders (dspAおよびdspB)、2 つの TClientDataSets (cdsAおよびcdsB)、2 つの TDataSources (dsAおよびdsB)、および 2 つの DBGrids (gridAおよびgridB) をドロップします。すべてがうまく設定されています。cdsA.Activetrueに設定すると、データが表示されgridAます。ごとに同じcdsB

今、関係を実装したい

A JOIN B ON a = b.

フィールドは、のフィールドによって参照されるatrueAの外部キーであり、の主キーでもあります。次のように設定します(グラフィックツールを使用します):BbbB

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 に答える