The strange data problem gets fixed just including this line after the print (or whatever):
This occurs because FastReport keeps track of all open memory datasets by its name. For this reason is necessary to destroy the report object if any other report uses a different dataset but with its same name. BTW, is really a very good practice destroying the objects after using them.
Due the complexity of the FR engine is not possible to use the automatic destructor. Anyway, we do not like to much. Xailer never uses for example.
About the direct print problem. A call to PrepareReport() must be done before printing the report. BTW we will include a call to that method on the Print() code in case it has not been called.