Are you using VB.NET 2005? I ask b/c you can't do this with VB.NET 2003.
It's a bit complicated, and I explain it in more detail and give sample code in my online
Crystal Reports eBooks (you should check them out for a lot more info on using .NET with CR).
The way it works is that CR needs to know how the datareader's data is structured. The only way it can do this is by calling the datareader and examining it's data. So you have to put the datareader in its own DLL and return it using a Shared method (static in C#) of the IDataReader interface. Then when you design a new report, you can point the data source to this DLL and CR will instantiate the DLL, call the Shared method and determine the data structure to report from. When you run the report, it also uses this DLL to get the data to display on the report.
Once you get the report designed, in your project you need to instantiate the DLL in your code and send assign the datareader shared method to the SetDataSource method of the ReportDocument object.
I hope this helps.
You can find out more about my books at
Amazon.com
or reading the
Crystal
Reports eBooks online.
Edited by BrianBischof - 21 Mar 2008 at 2:35pm