In general, here's the approach of designing from a dataset
1) Create a dataset in VS.NET, and generate the XSD (DsOrders.XSD)
2) Create your report in Crystal, and in the db expert, go to ado.net connections, and eventually you'll get an open dialog box, and you can point to your saved XSD
3) You can now pull columns from the dataset from field explorer and design your report as you need to
4) In your code, create an instance of DsOrders, populate your data (manuallly, or from sql queries, etc.), and then do a setdatasource for each datatable that's part of the designed dataset.
One note (and you probably already know this)...if you add/remove columns to your XSD afterwards, you need to regenerate the XSD, re-open the report and do a 'verify database'...it should pick up the changes.
There are pros and cons of this approach...but in general I've found it to be the most effective for me.
Kevin