Hi, Chris,
To the best of my awareness, you need to set the datasource for each individual datatable. So if you specified three tables when you designed the report, I think you need to do the...
oReport.Database.Tables[0].SetDataSource(myTable1);, etc
(At least that's the way I do it, and that's the way I usually see it in Code samples involving Crystal and .NET)
I don't have a clear answer why your code doesn't work (setting the datasource once for the report as a whole)...all I can say is that doing it table by table should work.
I'll give you a follow-up on the XSD approach...
Kevin