In a nutshell...
1) I create an XSD schema in VS.NET that represents the data structure that the RPT will utilize
2) I design the report, and point to the XSD from the database expert, so that I can drop the columns where I want on the report
3) At runtime, I create an instance of the same dataset that I used in VS.NET to create the schema, and populate it with data for the report (from a query, or whatever).
4) Finally, for each datatable in the report, I set the data source to the tables that I previously populated, like so...
oReport.Database.Tables[0].SetDataSource(DsReportData.Tables["MyTable1"]);
oReport.Database.Tables[1].SetDataSource(DsReportData.Tables["MyTable2"]);
There are several ways to do it, that's the one that I use.
Kevin