这里先讲一下关于报表的一些基本操作,在后面还有其他介绍。
我们知道在数据库项目中,报表经常会使用的。vs08为我们提供了两类报表模板,一类是名为“报表”的报表设计模板,扩展名为“.rdlc”,简称“微软报表”;另一类名为“Crystal报表”的报表设计模板,扩展名为“.rpt”,简称“水晶报表”。 这里要讲的是最常使用的水晶报表。
报表的数据源连接方式也大体分种方式:直接连接到数据库,或者使用ADO.NET数据集作为报表的数据源。因为,直接连接到数据库涉及到内容很多操作也颇为麻烦,这里介绍下第二种方式:使用ADO.NET数据集作为数据源。
下面以图文讲解,有疑问可以q我:(为了方便举例,这里使用Access作为数据源,在最后会提供该实例的下载地址)
(先说明,这里讲的是另一种通过ADO.NET的方式链接到数据库,或许与别的方法不同。如果觉得这方法麻烦,可以采用把数据库导入vs08,再处理,这里就不讲了,方法类似。我个人比较喜欢这方法,灵活性好和移植性强)
(1)首先创建一个DATASET的数据集:右击解决方案---》添加----》新建项——》数据---》选择“数据集”文件,默认命名(如下)
(2)打开新创建的数据集文件,右击添加一个表格,表名和字段命名具体如下:
(3)创建一个水晶报表文件:右击解决方案---》添加----》新建项——》Reporting---》选择“Crystal报表”文件,默认命名(如下)
(4)打开报表文件,在空白处右击,选择 数据库---》数据专家----》把刚刚创建的数据表添加进右边框子(如下)
(5)接着,你会在右边的解决方案中看到增加如下内容:
(6)现在,你要做的是把这些数据库字段拖到左边空白处,布局如下:(记住布局完毕后,按F6,生成相应组件)
(7)接下来转到WinForm那里,给Form添加一个CrystalReportViewer控件和刚刚生成数据集控件和报表控件,如下(名字有些不一样,这是我以前做的,这里没关系)
(8)布局如下:
(9)最后是写代码了,方法类似于绑定于DataGRidView:具体代码如下(有注释,有些参数命名不同,请注意)
额外要添加两个命名空间: using System.Data.OleDb; //用于Access数据库 using CrystalDecisions.CrystalReports.Engine; //用于报表 public partial class 学生信息 : Form { public 学生信息() { InitializeComponent(); this.ClientSize = new Size(600, 500); this.StartPosition = FormStartPosition.CenterScreen; } private DataSet GetDataSet(string strSql, string name) { OleDbConnection oledbCon = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Student.mdb");//创建连接,参数为数据库连接字段 DataSet ds = new DataSet(); try { oledbCon.Open(); OleDbDataAdapter oledbDA = new OleDbDataAdapter(strSql, oledbCon); //执行sql命令 oledbDA.Fill(ds, name); //填充dataset } catch (Exception ex) { MessageBox.Show("连接失败:" + ex.Message, "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Error); ds = null; } finally { oledbCon.Close(); } return ds; } private void InitialReport() { DataSet ds= new DataSet(); //获取数据库内容,放入dataset ds = GetDataSet("select * from student", "studentInfo"); //创建报表实例 StudentReport studentreport1 = new StudentReport(); //设置报表数据源 studentreport1.SetDataSource(ds); //创建reportdocument实例 ReportDocument document = (ReportDocument)studentreport1; //设置标题 document.SummaryInfo.ReportTitle = "学生基本情况"; //把数据绑定在报表控件上 this.crystalReportViewer1.ReportSource = document; //设置缩放比例为85% crystalReportViewer1.Zoom(85); } private void 学生信息_Load(object sender, EventArgs e) { InitialReport(); //显示报表内容 } }
(10)最终结果如下:
该实例下载地址:
http://download.csdn.net/source/2200961
希望对大家有用!在后面,我会继续介绍报表的一些其他操作,例如绘制表格,设置分组依据,逐条信息单页显示等。