Eric
I have found that CR is pretty fast, I use CR6 to creat the report first, then I use OLE Automation to use the report
oCrystal=CreateObject('Crystal.CRPE.Application') &&OLE Automation Object
oReport=oCrystal.OpenReport('shaded2.rpt') &&Report to use
oReport.database.Verify &&Verify the data, with out user intervenstion
oReport.Printout(.F.) &&Print the report, with out user intervenstion
HTH
also I found some nice hints on there News groups server news.cogniza.com
Iain Brodie