Зачем запрос отключаете, на момент выполнения он может не успеть обработаться и сервер вынужден давать отмену предыдущего, нужно просто содержимое чистить, последовательность действий должна быть примерно такой
Код:
...
with query do
begin
SQL.Clear;
SQL.Add(
ExecSQL;
SQL.Clear;
SQL.Add(
...
end;
да и вылова ошибок здесь явно не хватает
Код:
try
... {здесь выполнение запросов}
except
{При возникновении в коде любых ошибок}
One: EDatabaseError do
begin
messageDlg(e.message, mtError, [mbOK], 0);
exit;
end;
One: Exception do
begin
messageDlg(e.message, mtError, [mbOK], 0);
exit;
end;
end;