>> One solution would be to print into a file
>Last solution for me!
>
>Do you think I could pass a variable to a DLL containing the "REPORT FORM" command to run? Do I need to wait in this case?
You can pass the whole reporting to a job queue app - which would handle the reports. It would have a queue table, with one request per record, with all the parameters (report name, SQL to run to get the data etc), pretty much like the job queue apps work in Web applications.
Your main app would just write a record into this table and forget about it. The queue app would have a timer and check for unprocessed requests from .timer event. It would run the report and send it to print - so it would wait, while your main app wouldn't have to.