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

您需要使用Unique Table动态属性

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

来自MSDN ADO 文档

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

于 2011-11-02T14:20:23.080 回答
6

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

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