zoukankan      html  css  js  c++  java
  • 水晶报表,快速报表,rdlc报表

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

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

    一、水晶报表

    这次的导出和我上次导出的方式不一样了。额,上次的没写随笔,忘了。这次就把两次的都贴出来吧,做个对比

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

    代码:

     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;
            }

    效果图:

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

    代码:

    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语句即可。

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

    二、快速报表

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

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

    三、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 = @"ReportsReport1.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里添加的需要的字段。所以我们需要在代码里给报表的数据集赋值。

    最后结果:

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

  • 相关阅读:
    web开发:jquery高级
    web开发:jquery初级
    web开发:javascript之dom与bom
    web开发:javascript案例
    web开发:javascript动画
    web开发:javascript高级
    web开发:javascript操作
    web开发:javascript基础
    web开发:形变、表格及多行文本操作
    web开发:动画及阴影
  • 原文地址:https://www.cnblogs.com/wsn1203/p/8963158.html
Copyright © 2011-2022 走看看