Удаление 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';
Если динамическое свойство уникальной таблицы установлено, а набор записей является результатом выполнения операции JOIN для нескольких таблиц, то метод Delete удаляет только строки из таблицы, названной в свойстве уникальной таблицы.
Вам нужно установить свойство "Уникальная таблица" в TADODataset после открытия вашего набора данных.
ADODataset.Properties['Unique Table'].Value := 'GAMES';