私はDelphiが初めてです。2 つの TDataSetProvider によって 2 つの TClientDataSet (それぞれ cdsA と cdsB と言う) にリンクされた 2 つの TSQLTables (A と B と言う) を取得し、2 つの DataSource (dsA と dsB) でシナリオを完了します。
A をマスター、B をディテールとします。
B.MasterSource は dsA 値に設定され、B.MasterFields 値は cdsA に存在しない (クエリには存在する) フィールドを参照します。アプリケーションを起動すると、最初に cdsA が開き、次に cdsB が開きます。何かがおかしい。dsA データソースにリンクする DBGrid にはデータが表示されますが、dsB にリンクする DBGrid には何も表示されません。SQLMonitor ログファイルは、B で実装されたクエリが実行されたことを示しています (単純なselect a, b, c from tableB
)。クエリを変更してフィールド 'X' ( select a, b, c, X from tableB
) を表示すると、問題なく動作します。ここで、'X' は B.IndexFieldNames プロパティによって参照されるフィールドです。
dsB にリンクする DBGrid に、cdsA の現在のレコードに関連する B のレコードが表示されないのはなぜですか? IndexFieldNames
クエリ列でを指定した場合にのみ機能しますか? 私は何を取りこぼしたか?ティア。