1. 设置数据库
从服务器资源管理器中,数据连接中添加新连接,用Microsoft Access数据库文件作为数据提供程序,连接上Crystal Reports的用例的数据库Xtreme
2. 创建新Crystal Reports报表
在工程项目中添加一个Crystal Reports的报表,名称为CR1.rpt.
3. 添加XML架构文件
在工程中添加一个xml架构文件,因为xml架构文件本身也是一个xml文件,名称为订单.xsd,为了便捷操作,可以选择该文件,在打开方式中选择数据集编辑器.然后选择xtreme库中的订单表,拖放到本xml架构文件中,就会自动生成一个订单的文件,在这里,只用到该表的架构,也就是字段框架的信息,所以自动生成的TableAdapter是没有用处的,可以删掉.
4. 添中字段到字段资源管理器上
打开字段资源管理,右键数据库字段,选择数据库专家,在这里我们用ADO.NET来做数据源,双击创建新连接下的ADO.NET先项,在弹出的ADO.NET面板上,选择文件路径,选择上面创建的订单.xsd,然后添加到数据库字段中,这时我们会看到,在字段资源管理器下多了一个订单,展开订单,会看到所有字段.(xsd文件是为了设计报表时,能利用字段,所以xsd在这时百作为表字段的一个架构文件)
打开建好的CR1.rpt,来开始真正的设计报表,现在要出一个合部订单的详细报表.
在报表设计时,字段资源管理器是一个非常重要的面板,因为大部分数据都是通过这里的实现的,不但有数据库字段,还有一些公式,参数,组名,运行总计,还有特殊的字段.关于字段,在以后的文章中去说.
现在我们在订单中,选择订单地ID,订单金额,订单日期,已发货,已收货款几个字段,分别放入CR1.rpt报表的详细资料节中,系统会自动在页眉处理添加相同的字段,如下图
图1
CR1.rpt中其实就是一个设计报表的环境,如果采用ADO.NET连接数据库,CR1.rpt就能成为报表的架构设计了(数据是采用拉模式实现的),具体的数据,要在页面中去实现.
在aspx页面中,放一个CrystalReportViewer控件,命名为CRV1,在页面的Load事件订阅的方法中写入下列代码:
string path = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|"xtreme.mdb;Persist Security Info=True";
string sql = "select * from 订单 ";
OleDbDataAdapter DA = new OleDbDataAdapter(sql, path);
DataTable DT = new DataTable();
DA.Fill(DT);
Session["dt"] = DT;
ViewState["d"] = 0;
ReportDocument doc = new ReportDocument();
doc.Load(Server.MapPath(@"CR1.rpt"));
doc.SetDataSource((DataTable)Session["dt"]);
CrystalReportViewer1.ReportSource = doc;
这样,就实现了一个简单的界面来预览报表的样式.
报表设计的思路就是用rpt文件来设计报表样式,报表的数据在单独的类中实现.