By default, C1Report uses the ConnectionString and RecordSource properties to create an internal DataTable object that is used as a data source for the report. However, you can also create your own recordsets and assign them directly to the Recordset property. In this case, C1Report uses the recordset provided instead of opening its own.
You can assign three types of objects to the Recordset property: DataTable, DataView, or any object that implements the IC1ReportRecordset interface.