水晶报表,快速报表,rdlc报表

   感受本身脑子里只剩下报表了,o(╥﹏╥)o。由于最近新换了公司,业务上有须要报表打印,水晶报表,快速报表,rdlc报表这三种之后可能都会用到。因此在没了解好业务流程,熟悉代码以前,就是看看这三种报表怎么用,有啥区别呢?ε=(´ο`*)))唉,说实话,不知道有啥区别,由于练习的demo都是比较简单的,因此。。。html

我写这个主要是为了记录一下各个报表怎么添加参数啊,添加数据集啊,等等的一些代码,里面会掺一些我我的的浅显的见解【若有不妥,请指出】sql

1、水晶报表数据库

此次的导出和我上次导出的方式不同了。额,上次的没写随笔,忘了。此次就把两次的都贴出来吧,作个对比this

第一种:直接把表选中做为数据源,而后往报表里面拖入。spa

 

代码:3d

private void Form1_Load(object sender, EventArgs e) { CrystalReport1 crystalReport1 = new CrystalReport1(); crystalReport1.Load(Application.StartupPath + "CrystalReport1.rpt"); crystalReport1.ParameterFields["Title"].CurrentValues.AddValue("水晶报表一"); crystalReportViewer1.ReportSource = crystalReport1; }

效果图:code

第二种:经过命令,其实也就是写sql语句把要用到的字段筛选出来。orm

代码:htm

private void Form1_Load(object sender, EventArgs e) { #region 水晶报表 CrystalReport1 cr = new CrystalReport1(); var title = cr.Section1.ReportObjects["TextTitle"]; if (title.Kind == ReportObjectKind.TextObject) ((TextObject)title).Text = "XX一览"; cr.ParameterFields["type"].CurrentValues.AddValue("这是水晶报表"); crystalReportViewer1.ReportSource = cr; #endregion }

解释:看没看到报表模板里面有Section1(报表头),Section2(页眉),,,这样的字样?其实在这个cs文件中有着对Section的定义,咱们也能够经过这个来获取报表对象。对象

下面说那个命令是怎么添加上的。

第一步:

第二步:

第三步:直到出现了“添加命令”,而后单击">"这个按钮。

第四步:右边也出现了“命令”,而后右键单击“命令”,选择“编辑命令”,在里面输入写好的sql语句便可。

 

#######################################分割线####################################################

2、快速报表

基本上和前一篇写的同样,就不重复了。连接:http://www.cnblogs.com/wsn1203/p/8920507.html

#######################################分割线####################################################

3、RDLC报表

报表模板:

代码:

private void Form3_Load(object sender, EventArgs e) { DataTable dt = null; string conStr = "Server='127.0.0.1';database=demo;UID='sa';PWD='******';"; try { SqlConnection con = new SqlConnection(conStr); con.Open(); string sql = @"select Dept.DeptID,Dept.DeptName,UserInfo.UserName,UserInfo.Salary from dbo.Dept left join dbo.UserInfo on Dept.ID=UserInfo.DeptID"; SqlCommand sqlcmd = new SqlCommand(sql, con); SqlDataAdapter sda = new SqlDataAdapter(sqlcmd); dt = new DataTable(); sda.Fill(dt); con.Close(); sda.Dispose(); } catch (Exception err) { MessageBox.Show(err.StackTrace); } try { this.reportViewer1.LocalReport.ReportPath = @"Reports\Report1.rdlc"; ReportParameter rp = new ReportParameter("type", "rdlc报表"); this.reportViewer1.LocalReport.SetParameters(new ReportParameter[] { rp }); this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1",dt)); this.reportViewer1.RefreshReport(); } catch (Exception err) { MessageBox.Show(err.Message); } }

这个rdlc的数据源不是直接从数据库中选取的,而是先添加的空的数据集,而后往数据集里拖入的DataTable,往DataTable里添加的须要的字段。因此咱们须要在代码里给报表的数据集赋值。

最后结果:

简单的功能这三种都能实现,复杂的是我不可以复杂化。

相关文章
相关标签/搜索