At a guess, it's the source name: I suspect that "dsSales" is not the name of the data in the table itself. Try this:
Dim dt as DataTable = ds.Tables(0);
Dim rds = new ReportDataSource(dt.TableName, dt)
I would also strongly suggest that you use
Using
blocks, instead of manually closing and disposing - that way, even if there is an error the system will clear up after you.