从连接表中删除ADODataSet

时间:2011-11-02 14:09:21

标签: sql delphi delphi-2009 ado 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

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

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

2 个答案:

答案 0 :(得分:11)

您需要使用Unique Table动态属性

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

来自MSDN ADO Documentation

  

如果设置了Unique Table动态属性,并且Recordset是   对多个表执行JOIN操作的结果,然后是   Delete方法只会删除Unique中指定的表中的行   表属性。

答案 1 :(得分:6)

打开数据集后,您需要设置TADODataset的“唯一表”属性。

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