Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ADODataSet deleting from joined table

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?

like image 444
Frank Luke Avatar asked Nov 02 '11 14:11

Frank Luke


2 Answers

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.

like image 172
RRUZ Avatar answered Sep 28 '22 09:09

RRUZ


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

ADODataset.Properties['Unique Table'].Value := 'GAMES';
like image 24
Linas Avatar answered Sep 28 '22 07:09

Linas