ADODataSet deleting from joined table

2.9k views Asked by At

I have a Delphi app where I display a list of games that have been played from a query like this:

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

When I click the delete button in the DBNavigator, the joined record from the game_types table is also deleted. That's a problem because many other games can be of the same type.

What do I need to do to make it so that only the game is deleted but not the game type?

2

There are 2 answers

1
RRUZ On BEST ANSWER

You need to use the Unique Table dynamic property

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

From the MSDN ADO Documentation

If the Unique Table dynamic property is set, and the Recordset is the result of executing a JOIN operation on multiple tables, then the Delete method will only delete rows from the table named in the Unique Table property.

0
Linas On

You need to set TADODataset's "Unique Table" property after opening your dataset.

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