6

次のようなクエリからプレイされたゲームのリストを表示するDelphiアプリがあります。

select  g.*, gt.id, gt.descr 
from GAMES g 
inner join game_types gt on gt.id = g.game_type
order by game_date DESC

DBNavigatorの削除ボタンをクリックすると、game_typesテーブルの結合されたレコードも削除されます。他の多くのゲームも同じタイプである可能性があるため、これは問題です。

ゲームのみが削除され、ゲームタイプは削除されないようにするには、どうすればよいですか?

4

2 に答える 2

12

一意のテーブルの動的プロパティを使用する必要があります

ADOQuery1.Properties['Unique Table'].Value := 'GAMES';

MSDNADOドキュメントから

一意のテーブルの動的プロパティが設定されていて、レコードセットが複数のテーブルに対してJOIN操作を実行した結果である場合、Deleteメソッドは、一意のテーブルプロパティで指定されたテーブルから行のみを削除します。

于 2011-11-02T14:20:23.080 に答える
6

データセットを開いた後、TADODatasetの「一意のテーブル」プロパティを設定する必要があります。

ADODataset.Properties['Unique Table'].Value := 'GAMES';
于 2011-11-02T14:17:25.847 に答える