Удаление ADODataSet из объединенной таблицы

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

Решение

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

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

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

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

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

ADODataset.Properties['Unique Table'].Value := 'GAMES';
Другие вопросы по тегам