нужно передать управление процедуре печати после остановки отчета пользователем по ESC.
это связано в длительностью выполнения. пользователь хочет посмотреть часть выполненного отчета, а потом запустить отчет полностью.
(0) Вываливай результат запроса в таблицу значений частями по N строк. Но нажатию ESC - прекращай формировать отчет, но таблица-то заполнена - ее и печатай. Думаю, что пользователю не влом будет жмакнуть кнопку Печать.
(5) Странная у тебя логика. Пользователь запустил отчет, и ты думаешь, что каждое его нажатие ESC - желание пользователя увидеть что-то напечатанное?
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший