Using ADO.NET DataSets from SQL 2000 Reporting Services
When researching the SQL 2000 Reporting Services beta a few months ago, I was surprised that there was no native support for ADO.NET DataSets. Reporting Services does have the notion of a DataSet, but this is specific to the product and not the flexible schema and data container that we all know. Reporting Services has good support for connecting to SQL data sources directly, but our project required a middle layer. In addition, our report filters needed to support complex inter-dependencies and hierarchies, features that the first release of Reporting Services does not support.
To address these problems we implemented a custom Data Processing Extension (DPE) and ASP.NET filter server control . Our RDL reports accept an XML serialised object model which defines the filter criteria for the report. This is passed through our DPE and on to our Data Access Layer (DAL). The DAL uses this to decide which report to run and passes the filter data to the correct stored procedure. The DAL then returns the resulting DataSet to the DPE, which exposes the data to Reporting Services report renderer through the DPE's implemented Interfaces (IDbCommand, IDbConnection & IDataReader).
Creating a custom DPE is relatively straight forward and it allows you to extend Reporting Services to utilise data from any data source. You can download the source below:
C# DPE Code Download
VB.NET DPE Code Download (converted by Toby)