转:http://blog.csdn.net/xm18love/archive/2009/12/25/5075871.aspx
给水晶报表添加数据源VS2005和VS2008给出了很多形式,但是使用报表直接连接到数据库(也就是Pull方式)的方式,使得修改数据源非常不方便.所以我们可以使用dataset(数据集)的形式来为报表添加数据源.
首先我们要添加一个数据集(扩展名称为.xsd),将要使用的表托进文件中.根据它的建设向导就可以很顺利的完成这一步.完成之后建立一个水晶报表文件(扩展名称为.rpt).同样根据向导选择数据源,这时的数据源我们要选择ADO.NET方式,然后选择我们新建的数据集文件,完成就可以了.
但是完成这一步并没有使水晶报表和数据库分离开.在水晶报表之间只是隔了一个数据集,但是数据集与数据库之间的关系依然是紧耦合的.当数据库改变的时候水晶报表依然不能得到数据.所以我们要使用C#代码对数据集进行控制.我们新建立一个类对数据集进行控制.在类里面我们新建一个数据库连接,取代数据集与数据库的连接.然后通过SQL语句进行查询,然后将数据添加到数据集的实例中.再将数据集赋值给水晶报表.这样水晶报表和数据库就分开了.