Evan,
If you present a datasource with the same table name as the report you designed the report with, Crystal will work fine with it. What I've done on a few reports is build the sql select statement in the form where the user selects his report criteria, then pass that to the constructor for the form that has a CR report viewer control on it. That form creates a table or data set with the same name and fields, and then uses the SetDataSource method to tell the report to use that as the data source.
So you can use a table or data set used by the project to build the report, then create your own at report time. And I suppose you could create one just long enough to create the report, delete it, and run the report from your ad hoc source as described above.
I also pass parameters the same way, both for sql statement building and on-form fields.
HTH.
Ron Hodge
Sebrex Systems, Inc.
Atlanta, GA