Чтобы не просто DeleteWhere и потом заново всё полностью формировать.
Обратите внимание, как сделали коллеги из DevRace в компонентах FibPlus с функционалом TConditions. Весьма удобно.
Есть запрос SQL:
Код: Выделить всё
select id, name from table1 where date1 > :date1 and date1 < :date2
Можно добавить "именованные условия".
Например:
Код: Выделить всё
UniQuery1.ClearWhere;
UniQuery1.AddWhere('условие1', 'id > 100');
UniQuery1.AddWhere('условие2', 'id < 500');
UniQuery1.DeleteWhere('условие2');
или по индексу
UniQuery1.DeleteWhere(1);
UniQuery1.AddWhere('условие2', 'id < 500');
UniQuery1.ApplyWhere; и UniQuery1.CancelWhere;
UniQuery1.Open;
UniQuery1.RestorePrimarySQL;
Var
MyWhere : TUniWhere;
MyWhere := UniQuery1.FindWhere('условие');
if not assigned(MyWhere) then ShowMessage('Условие не найдено');