Можно было бы посоветовать для блока with DM.IBQuery2 do подготовить запрос предварительным разбором и оптимизацией типа
Код:
...
Close;
if not Prepared then Prepare;
...
но делфя и так автоматом подготавливает его при каждом выполнении SQL и поэтому, даже если так и делать, то приложению на это фиолетово, зато можно рекомендовать в конце блока добавить проверку на ашипки
Код:
try
ExecSQL;
except
on e: EDataBaseError do MessageDlg(e.Message, mtError, [mbOK], 0);
end;