1.在当前工程项目下面添加引用,点右键-->添加引用-->选择CrystalReports那5个引用(多添加没事)
using CrystalDecisions.Shared;
using CrystalDecisions.CrystalReports.Engine;
2.开始写代码,创建一个aspx页面,点击工具栏,拖放一个CrystalReportViewer放上去,然后将其数据库连接验证属性的对号取消.
3.编写后台CS代码.
protected void Page_Load(object sender, EventArgs e)
{
//设置当前表的连接信息
TableLogOnInfo logOnInfo = new TableLogOnInfo();
logOnInfo.ConnectionInfo.ServerName = System.Configuration.ConfigurationSettings.AppSettings["ServerName"];
logOnInfo.ConnectionInfo.UserID = System.Configuration.ConfigurationSettings.AppSettings["UserId"];
logOnInfo.ConnectionInfo.Password = System.Configuration.ConfigurationSettings.AppSettings["PassWord"];
string sqlStr = "SELECT * FROM 表名";
OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["连接字串名"].ToString());
con.Open();
OracleDataAdapter oda = new OracleDataAdapter(sqlStr, con);//连接数据库抓取数据放入到DataSet里面
DataSet ds = new DataSet();
oda.Fill(ds);
ReportDocument rpt = new ReportDocument();
rpt.Load(Server.MapPath("../Report/你制作的水晶报表文件.rpt"));//加载你设计好的水晶報表文件
rpt.Database.Tables[0].ApplyLogOnInfo(logOnInfo);//应用水晶報表的连接数据库字串logOnInfo连接到數據庫
rpt.SetDataSource(ds.Tables[0]);
页面上的水晶报表浏览器Viewer.ReportSource = rpt;
con.Close();
}
protected void Page_Unload(object sender, EventArgs e)
{
rpt.Dispose();//水晶报表文件加载的次数多了,会在windows系统目录下积攒很多废弃文件,导致后来你在加载水晶报表就显示不出来
}
4.完工
说明:System.Configuration.ConfigurationSettings.AppSettings["ServerName"];,在用到这里时候,你必须把你的连接数据库的服务器名字,用户名,密码放在web.config里面的AppSettings字段里面,这样才能抓取到连接数据库的字段!
另外做好水晶报表很重要的一个方面是你的水晶报表文件需要设计的栏位都正确.
如果水晶报表中出现重复行的出现,即出现笛卡尔积,请检查你的数据库中是否有重复字段,另外看你报表设计的过程中多表连接是否正确,其次是在你的SQL语句那里前面添加上CREATE VIEW xxxx AS ,创建相对应的视图可以消除重复行!!