Query1.SQL.Clear;
Query1.SQL.Add('SELECT * FROM "' + table+'" T1 LEFT JOIN "' + table+'" T2 ON T1.COUP_NUM =T2.COUP_NUM WHERE T1.REC_TYPE <> T2.REC_TYPE');
Query1.Open;
if Query1.RecordCount > 1 then
begin
while not Query1.Eof do
begin
if Query1.FieldByName('REC_TYPE').Value=1 then
begin
Query1.Edit;
Query1.FieldByName('PRINT_CODE').Value:='A';
Query1.Next;
end
else
begin
Query1.Edit;
Query1.FieldByName('PRINT_CODE').Value:='B';
Query1.Next;
end;
end;
end;
Изменить значение поля в Table после SQL запроса
Требуется найти дибликаты по полю Номер и в соответствии с полем Тип присвоить ему коментарий
(Записей с одновременно одинаковыми номерами и типом в таблице нет)
Поиск дубликатов сделал через Query? а как добавить коментарий не знаю
Пробовал вот так:
Код:
компонента TUpdateSQL, в которой отдельно описываются
SQL запросы на создание, изменение и удаление записей.
Создай объект этого класса и свяжи его с объектом запроса
данных. И всё получится!
// Например ...
UpdateMain = new TUpdateSQL (Owner);
QueryMain->UpdateObject = UpdateMain ;
В своей программе Я сделал иначе. У меня была задача, по факту
изменения данных в SQL сохранять изменения не только в таблице
источнике данных для SQL, но и в других таблицах.
Для этого пришлось описать обработчик события OnPost.
ВАЖНО: чтобы этот обработчик запускался ОБЯЗАТЕЛЬНО связать
объект Query c объектом UpdateSQL. А вот описывать UpdateSQL не надо.
В обработчике OnPost (по факту записи в источник данных) Я уже делал
что хотел с любыми таблицами.
Если удобно читать код на C++ загрузи мой исходник ProjBeam (раздел Другое ) и изучи этот межанизм детально. Смотри класс BDBFields и в классе BDocument конструктор (там видно связывание Query и UpdateSQL) и обработчики событий AfterPost, BeforeEdit и т.п.