#sql #delphi #delphi-2009 #ado #tadodataset
#sql #delphi #delphi-2009 #ado #tadodataset
Вопрос:
У меня есть приложение 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 также удаляется. Это проблема, потому что многие другие игры могут быть того же типа.
Что мне нужно сделать, чтобы удалить только игру, но не тип игры?
Ответ №1:
Вам необходимо использовать динамическое свойство Unique Table
ADOQuery1.Properties['Unique Table'].Value := 'GAMES';
Если установлено динамическое свойство Unique Table, а набор записей является результатом выполнения операции объединения для нескольких таблиц, то метод Delete удалит только строки из таблицы, имя которой указано в свойстве Unique Table.
Комментарии:
1. Если вам нужно по-настоящему разобраться с вашими обновлениями, вы можете использовать компонент TUpdateSQL и назначить его UpdateObject вашего компонента запроса.
Ответ №2:
Вам необходимо установить свойство TADODataSet «Уникальная таблица» после открытия вашего набора данных.
ADODataset.Properties['Unique Table'].Value := 'GAMES';