Впоринципе да, ты прав cast можно убрать...
и сделать подзапрос ...
Код:
dm.Arh.SQL.clear;
dm.Arh.SQL.Add('update "SKLAD"');
dm.Arh.SQL.Add('SET Kol=Kol-(SELECT Kol FROM TREB2 WHERE flag like ''' +'%'+'2'+ '%'' and treb2.LinkID=Sklad.id),');
dm.Arh.SQL.Add('Summa=Summa-(SELECT Summa FROM TREB2 WHERE flag like ''' +'%'+'2'+ '%'' and treb2.LinkID=Sklad.id)');
dm.Arh.SQL.Add('WHERE Sklad.id IN (SELECT treb2.LinkID FROM treb2 WHERE Sklad.id=treb2.LinkID and treb2.flag=2 )');
dm.Arh.ExecSQL;
но таже ошибка ругается на фразу
в самом конце, если её убрать то работет но не корректно...