Попробуйте данные хранить в ADO Recordset, а потом передавать их в отчет через метод Report.Database.SetDataSource. У нас достаточно быстро работают отчеты > 1000000 записей (около 20 000 страниц). Посмотрите в Сrystal Reports Help статьи "Creating Data Definition Files ", "Active Data Driver Functions " и т.п.