Да, действительно. Применение "Закрыть" после выполнения запроса работает. В том числе и в варианте без "Подготовить", т.е. после "Выполнить" с текстом запроса.
Таким образом, вариант применения типа "Подготовить">>"Выполнить()" в цикле>>"Закрыть" ещё можно применить на практике (и то, если добавить обработку исключений между "Подготовить" и "Закрыть", что уже неудобно). А код типа
Если Запрос.Выполнить("ТЕКСТ ЗАПРОСА")=1 Тогда
...
ИначеЕсли Запрос.Выполнить("ТЕКСТ ЗАПРОСА")=1 Тогда
...
Иначе
...
и ему подобный превратится в трудно читаемую каку.
В общем, баг, видимо, локализован.
Кто-то забыл вызвать метод "Закрыть" в методе "Подготовить" при уже подготовленном запросе, а также в деструкторе объекта.
А ещё такую чистку стоит предусмотреть и в других методах, как ВыполнитьИнструкцию, ВыполнитьСкалярный и др. Для общности. Бывает даже, что один объект "ODBCRecordset" используется глобально во всей программе для самых разных задач на протяжении недель.