I думаю ваша проблема может быть связана с объектом подключения вашего запроса.
AdoConnection имеет коллекцию Errors
, в которой записываются сведения о каждой происходящей ошибке ADO. Iirc, эта коллекция накапливается как объекты, использующие ошибки выполнения AdoConnection, пока вы не вызовете Clear
в интерфейсе Errors. Возможно, отмена выполнения запроса вызывает ошибку при следующем его выполнении.
Итак, попробуйте следующее, прежде чем пытаться повторно использовать AdoQuery:
myAdoQuery.Connection.Errors.Clear;
и сообщите нам об этом. как вы ладите.
Кроме того, на вашем месте я бы проверил, что RecordSet в AdoQuery равен NIL, прежде чем пытаться открыть его заново, и явно установить его в NIL в конце процедуры отмены. На всякий случай ...