Удаление ADODataSet из объединенной таблицы - PullRequest
5 голосов
/ 02 ноября 2011

У меня есть приложение 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 ]

11 голосов
/ 02 ноября 2011

Вам необходимо использовать динамическое свойство Unique Table

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

Из документации MSDN ADO

Если задано динамическое свойство «Уникальная таблица», а набор записей - это результат выполнения операции JOIN для нескольких таблиц, затем Метод Delete удаляет только строки из таблицы, названной в уникальном Свойство таблицы.

6 голосов
/ 02 ноября 2011

Вам необходимо установить свойство «Уникальная таблица» в TADODataset после открытия набора данных.

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