从连接表中删除ADODataSet

Fra*_*uke 5 sql delphi ado delphi-2009 tadodataset

我有一个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
Run Code Online (Sandbox Code Playgroud)

当我单击DBNavigator中的删除按钮时,也会删除game_types表中的联接记录.这是一个问题,因为许多其他游戏可能属于同一类型.

我需要做些什么才能只删除游戏但不删除游戏类型?

RRU*_*RUZ 11

您需要使用Unique Table动态属性

ADOQuery1.Properties['Unique Table'].Value := 'GAMES';
Run Code Online (Sandbox Code Playgroud)

来自MSDN ADO文档

如果设置了Unique Table动态属性,并且Recordset是对多个表执行JOIN操作的结果,则Delete方法将仅删除Unique Table属性中指定的表中的行.


Lin*_*nas 6

打开数据集后,需要设置TADODataset的"唯一表"属性.

ADODataset.Properties['Unique Table'].Value := 'GAMES';
Run Code Online (Sandbox Code Playgroud)