Don’t connect ReportViewer directly to your database.
Instead, load a DataSet first, then bind it to your report:
Dim cr As New ReportDocument()
cr.Load(Server.MapPath("~/CustomerReport.rpt"))
cr.SetDataSource(GetData())
This gives you better control over data loading and display.
For an even easier solution, try https://github.com/siteknower/crystisAspNet
It shows .rpt files in your app without installing Crystal Reports—just convert your data to JSON before printing.