What I meant by 'joining tables' is going to Database/Database Expert and selecting the tables that you want in your report.
Typically, this is how you would tell Crystal to fetch data for the report. This can be tables, views, stored procedures. The parameters screens are gather the input you need to for the stored proc or to filter the data so that your report displays the data as desired.
I don't believe that the command object was ever intended by Crystal to be used for data fetching, I believe that it was intended to make the parameter input more robust and allow for dynamic table driven values to appear in the input parameter screens as opposed to hardcoding static values.
Just as path to a solution, and I can't guarantee it will work, but maybe you could try to move your DQL statement in the SQL statement of the report. Modify the SQL of the report on Database Show SQL Query...It is something that you could try. I might have done this years ago when I first writing reports, but haven't lately as I use XML for my datasource.
Hope this helped.
As another path to try, in the command object, include an 'if' statement that is predicated on one of the parameters that has not been filled in, then at least the first time through the command object will not retrieve data.
Just some thoughts, again, hope that they help