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