This frustrating error caused me quite a headache, however I can say that this error is caused only by a total of 3 possibilities.
1.) The report parameters that you are passing into the sub-report from the parent report are not correct. This is for BOTH RDL and RDLC's
2.) The subreport's ReportName property is not properly associating itself with the appropriate RDL/RDLC (Note: it must be the name of the report i.e. rptFakeReport, without the RDLC or RDL extension at the end), ALSO for both RDL and RDLC
3.) You are running the sub-report from a website that is not using a report server but instead running locally, meaning you are using an RDLC. If this is the case you need to do the follow:
This is in VB.NET but you need to add an event handler in the page load section of the page, this wires up your sub-report to your page so every time the sub-report is run this event fires, this basically gets the data you want in your subreport.
AddHandler RvFunctionSlipMaster.LocalReport.SubreportProcessing, AddressOf ItemsSubreportProcessingEventHandler
Next you create your method to handle the event and then set e.DataSources.Add to rebind your new datasource for the sub-report. You will also notice you have access to all the parameters passed into the sub-report through e.Parameters, this you can use to filter the dataset for your sub-report
Private Sub ItemsSubreportProcessingEventHandler(ByVal sender As Object, ByVal e As SubreportProcessingEventArgs)
Dim functionID As Integer = CInt(e.Parameters("FunctionID").Values(0).ToString())
Dim dsSubReport As DataSet = SqlHelper.ExecuteDataset(Global_asax.gSqlConStr, 60, "spRptGetFunctionItemsHistory", functionID)
e.DataSources.Add(New ReportDataSource("ReportDataSet_spRptGetFunctionItems", dsSubReport.Tables(0)))
End Sub