2011-11-02 75 views
5

刪除我有一個Delphi應用程序在哪裏顯示已經從查詢中打出這樣的遊戲列表:ADODataSet從連接表

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表中也被刪除。這是一個問題,因爲許多其他遊戲可能屬於同一類型。

我需要做些什麼才能讓遊戲被刪除而不是遊戲類型?

回答

9

您需要如果唯一表動態屬性被設置爲使用Unique Table動態屬性

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

MSDN ADO Documentation

,而Recordset是執行的 結果對多個表進行JOIN操作,那麼 刪除方法將只刪除唯一中指定的表中的行10表屬性。

+1

如果您需要非常喜歡更新,可以使用TUpdateSQL組件並將其分配給查詢組件的UpdateObject。 –

6

您需要在打開數據集後設置TADODataset的「Unique Table」屬性。

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