After reviewing the link in post #1, I think I understand your problem.
report.DataSources.Add(New ReportDataSource("Sales", LoadSalesData()))
You don't need to use the "LoadsalesData", basically what you need is this,
report.DataSources.Add(New ReportDataSource("thenameofyourdataset",thenameofthedatatable))
Read this,
Hooking up the DataSource at Runtime
Finally, you need to let the ReportViewer know where to get the actual data from so it can feed that into the report. In your form's OnLoad method (or wherever is appropriate for your application), you need to add code much like this:


private void Form1_Load(object sender, EventArgs e) {
// somehow get the data at runtime, application specific
this.myData = GetDataSource();

this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet_Person", myData));
this.reportViewer1.RefreshReport();
}

Notice we are adding a DataSource to the ReportViewer. This is the bridge from your data into the report. Key here is the name you specify for the ReportDataSource, it must match the name found in the .rdlc file for this dataset. This name was determined by how you named the DataSet you added to your project and designed. If you view the .rdlc file in the XML editor (right click it and select "Open With..." then pick "XML Editor"), you will find a <DataSets> node, containing a <DataSet> node, this node is the report's understanding of the data for this report, and what your actual data will map to at runtime. Notice the Name attribute of the DataSet node, this is the name you need to specify in the ReportDataSource constructor.
Make sure you fill the datatable.