• C#制作RDLC报表


    报表以前我只做过水晶报表,但是最近发现家里的VS上面居然没有水晶报表,发现水晶报表现在貌似已经不能完全免费的使用了,为了保险起见,就用了VS自带的RDLC报表,用完感觉其实也是够用的嘛~

    建立一RDLC报表的过程主要是:

    1、新建一个windows窗口,拖一个Reportview控件在上面,用来显示报表

    2、新建一个类,构成数据源:

    需要哪些字段,就在类中添加哪些,比如简单的如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace land_useowner_db
    {
        class FarmerReportClass    //农户数据源
        {
            public string farmerBM { get;set; }
            public string farmerMC { get; set; }
            public string farmerLXDH { get; set; }
            public string farmerZJLX { get; set; }
            public string farmerZJHM { get; set; }
            public string farmerCBFDZ { get; set; }
            public string farmerYZBM { get; set; }
            public string farmerCBFCYSL { get; set; } 
        }
    }
    

    数据源字段设置好后就要添加到数据库中:》

    选择新建好的数据源类:  

    数据源添加好了,接下来就是给数据源赋予值了

    3、新建一个报表

    查看代码:

      1 using System;
      2 using System.Collections.Generic;
      3 using System.ComponentModel;
      4 using System.Data;
      5 using System.Drawing;
      6 using System.Linq;
      7 using System.Text;
      8 using System.Windows.Forms;
      9 
     10 using System.Data.OleDb;
     11 using Microsoft.Reporting.WinForms;
     12 
     13 namespace land_useowner_db.统计报表
     14 {
     15     public partial class FarmerReport : Form
     16     {
     17         string strCBFBM;
     18         string strCBFMC;
     19         string filepath;
     20         public FarmerReport(string CBFBM,string CBFMC,string path)
     21         {
     22             this.strCBFBM = CBFBM;
     23             this.strCBFMC = CBFMC;
     24             this.filepath = path;
     25             InitializeComponent();
     26         }
     27 
     28         private void FarmerReport_Load(object sender, EventArgs e)
     29         {
     30             #region test 
     31             //this.reportViewer1.LocalReport.ReportEmbeddedResource = "land_useowner_db.统计报表.Report1.rdlc";
     32             //Microsoft.Reporting.WinForms.ReportParameter rp = new Microsoft.Reporting.WinForms.ReportParameter("cbfbm", strCBFBM);
     33             //this.reportViewer1.LocalReport.SetParameters(new Microsoft.Reporting.WinForms.ReportParameter[] { rp });
     34             //this.reportViewer1.RefreshReport();
     35 
     36       
     37             //为报表浏览器指定报表文件
     38 
     39             //this.reportViewer1.LocalReport.ReportEmbeddedResource = "report.Report1.rdlc";
     40 
     41             //指定数据集,数据集名称后为表,不是DataSet类型的数据集
     42             #endregion 
     43 
    
     44             this.reportViewer1.LocalReport.DataSources.Clear();
     45             this.reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("land_useowner_db_FarmerReportClass", GetList()));
     46 
     47             //显示报表
     48             this.reportViewer1.RefreshReport();            
     49         }
     50 
     51 
     52         /// <summary>
     53         /// 获取打印的数据源(CBF表中)
     54         /// </summary>
     55         /// <returns></returns>
     56         private List<FarmerReportClass> GetList()
     57         {
     58 
     59             //取得数据集
     60             string sql = "select * from CBF where CBFLX='1' ";
     61             sql += "and CBFBM= '" + strCBFBM + "'";
     62             // 连接数据库 
     63             OleDbConnection connct = new OleDbConnection();
     64             string oleDB = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath;
     65             connct.ConnectionString = oleDB;
     66             //创建命令
     67             OleDbCommand command = new OleDbCommand(sql, connct);
     68             //执行命令          
     69             OleDbDataAdapter dataAdapter = new OleDbDataAdapter(command);
     70             DataTable table = new DataTable();         
     71             try
     72             {
     73                 connct.Open();
     74                 dataAdapter.Fill(table);
     75 
     76                 List<FarmerReportClass> list = new List<FarmerReportClass>();
     77                 FarmerReportClass stu = null;
     78                 foreach (DataRow row in table.Rows)
     79                 {
     80                     stu = new FarmerReportClass();
     81                     if (row.Table.Columns.Contains("CBFBM") && row["CBFBM"] != null && row["CBFBM"].ToString() != "")
     82                     {
     83                         stu.farmerBM = row["CBFBM"].ToString();
     84                     }
     85                     if (row.Table.Columns.Contains("CBFMC") && row["CBFMC"] != null && row["CBFMC"].ToString() != "")
     86                     {
     87                         stu.farmerMC = row["CBFMC"].ToString();
     88                     }
     89                     if (row.Table.Columns.Contains("LXDH") && row["LXDH"] != null && row["LXDH"].ToString() != "")
     90                     {
     91                         stu.farmerLXDH = row["LXDH"].ToString(); ;
     92                     }
     93                     if (row.Table.Columns.Contains("CBFZJLX") && row["CBFZJLX"] != null && row["CBFZJLX"].ToString() != "")
     94                     {
     95                         string zjlx = row["CBFZJLX"].ToString();
     96                         switch (zjlx)
     97                         {
     98                             case "1": zjlx = "居民身份证"; break;
     99                             case "2": zjlx = "军官证"; break;
    100                             case "3": zjlx = "行政、企事业单位机构代码证或法人代码证"; break;
    101                             case "4": zjlx = "户口簿"; break;
    102                             case "5": zjlx = "护照"; break;
    103                             case "9": zjlx = "其他证件"; break;
    104                         }
    105                         stu.farmerZJLX = zjlx;
    106                     }
    107                     if (row.Table.Columns.Contains("CBFZJHM") && row["CBFZJHM"] != null && row["CBFZJHM"].ToString() != "")
    108                     {
    109                         stu.farmerZJHM = row["CBFZJHM"].ToString(); ;
    110                     }
    111                     if (row.Table.Columns.Contains("CBFDZ") && row["CBFDZ"] != null && row["CBFDZ"].ToString() != "")
    112                     {
    113                         stu.farmerCBFDZ = row["CBFDZ"].ToString(); ;
    114                     }
    115                     if (row.Table.Columns.Contains("YZBM") && row["YZBM"] != null && row["YZBM"].ToString() != "")
    116                     {
    117                         stu.farmerYZBM= row["YZBM"].ToString(); ;
    118                     }
    119                     if (row.Table.Columns.Contains("CBFCYSL") && row["CBFCYSL"] != null && row["CBFCYSL"].ToString() != "")
    120                     {
    121                         stu.farmerCBFCYSL = row["CBFCYSL"].ToString(); ;
    122                     }
    123                     list.Add(stu);
    124                 }
    125                 return list;
    126             }
    127             finally
    128             {
    129                 connct.Close();
    130                 command.Dispose();
    131                 connct.Dispose();
    132             }
    133    
    134         }
    View Code

    4、在新建好的报表中就可以通过拖动相应的控件等来设计报表,简单的说就是画报表,安装需求画好相应的报表内容,比如:

  • 相关阅读:
    UOS系统进入单用户模式解决su: 鉴定故障和sudo: /usr/bin/sudo 必须属于用户 ID 0(的用户)并且设置 setuid 位
    统一UOS操作系统 修改源地址
    linux cmake error no version information available
    Linux error /usr/bin/ld: cannot find -lJsoncpp
    容器时代的持续交付工具---Drone:Drone使用
    容器时代的持续交付工具---Drone:Drone介绍与安装
    asp.net core 中灵活的配置方式
    View Components as Tag Helpers,离在线模板编辑又进一步
    asp.net core mvc中如何把二级域名绑定到特定的控制器上
    提供服务注册描述信息来简化服务注册方式
  • 原文地址:https://www.cnblogs.com/smilepeter/p/4134677.html
Copyright © 2020-2023  润新知