Okay to do it programatically the simplest solution is:
Fill a DataTable with the Data for the Report and name the Datatable "Sales" (like the DataSource name in your report.
Please note this is pseudo code which will not work but should give you an idea.
var myDataSet = new DataSet();
var da = new SqlDataAdapter("Select * from Sales", "yourConnectionstring");
da.Fill(myDataSet);
DataTable table = myDataSet.Tables[0];
table.TableName = "Sales";
Add the DataTable as a Datasource to your report:
viewer.LocalReport.DataSources.Add(table);