This has been my take on the Command, it is to gather information for dynamic parameter selection for the report. Using it any other way, is not as it was designed for, and results can be unpredictable.
So, with that said, why to you want to go from the main report to a command, to the subreport? Why not just the main report to the subreport, and let the subreport handle everything. The subreports selection criteria should be stringent enough.
In addition, as you know, subreports are a terrible use of resources. If you main report has 1 subreport and 100 records, it is 101 trips to the database. In general, you only need 1, using a stored proc. Get all the data for the main report and the subreport and return it all on one line, then it is just a matter of display. You might still need a subreport, but you can use the datasource of the main report, then Crystal doesn't need to pull data a second time, it's all right there.
In the end, the best advice is to use stored procedures, let you DB server/software do the work for you. Let Crystal display the results.
HTH