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、新建一个报表

查看代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms; using System.Data.OleDb;
using Microsoft.Reporting.WinForms; namespace land_useowner_db.统计报表
{
public partial class FarmerReport : Form
{
string strCBFBM;
string strCBFMC;
string filepath;
public FarmerReport(string CBFBM,string CBFMC,string path)
{
this.strCBFBM = CBFBM;
this.strCBFMC = CBFMC;
this.filepath = path;
InitializeComponent();
} private void FarmerReport_Load(object sender, EventArgs e)
{
#region test
//this.reportViewer1.LocalReport.ReportEmbeddedResource = "land_useowner_db.统计报表.Report1.rdlc";
//Microsoft.Reporting.WinForms.ReportParameter rp = new Microsoft.Reporting.WinForms.ReportParameter("cbfbm", strCBFBM);
//this.reportViewer1.LocalReport.SetParameters(new Microsoft.Reporting.WinForms.ReportParameter[] { rp });
//this.reportViewer1.RefreshReport(); //为报表浏览器指定报表文件 //this.reportViewer1.LocalReport.ReportEmbeddedResource = "report.Report1.rdlc"; //指定数据集,数据集名称后为表,不是DataSet类型的数据集
#endregion this.reportViewer1.LocalReport.DataSources.Clear();
this.reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("land_useowner_db_FarmerReportClass", GetList())); //显示报表
this.reportViewer1.RefreshReport();
} /// <summary>
/// 获取打印的数据源(CBF表中)
/// </summary>
/// <returns></returns>
private List<FarmerReportClass> GetList()
{ //取得数据集
string sql = "select * from CBF where CBFLX='1' ";
sql += "and CBFBM= '" + strCBFBM + "'";
// 连接数据库
OleDbConnection connct = new OleDbConnection();
string oleDB = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath;
connct.ConnectionString = oleDB;
//创建命令
OleDbCommand command = new OleDbCommand(sql, connct);
//执行命令
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(command);
DataTable table = new DataTable();
try
{
connct.Open();
dataAdapter.Fill(table); List<FarmerReportClass> list = new List<FarmerReportClass>();
FarmerReportClass stu = null;
foreach (DataRow row in table.Rows)
{
stu = new FarmerReportClass();
if (row.Table.Columns.Contains("CBFBM") && row["CBFBM"] != null && row["CBFBM"].ToString() != "")
{
stu.farmerBM = row["CBFBM"].ToString();
}
if (row.Table.Columns.Contains("CBFMC") && row["CBFMC"] != null && row["CBFMC"].ToString() != "")
{
stu.farmerMC = row["CBFMC"].ToString();
}
if (row.Table.Columns.Contains("LXDH") && row["LXDH"] != null && row["LXDH"].ToString() != "")
{
stu.farmerLXDH = row["LXDH"].ToString(); ;
}
if (row.Table.Columns.Contains("CBFZJLX") && row["CBFZJLX"] != null && row["CBFZJLX"].ToString() != "")
{
string zjlx = row["CBFZJLX"].ToString();
switch (zjlx)
{
case "": zjlx = "居民身份证"; break;
case "": zjlx = "军官证"; break;
case "": zjlx = "行政、企事业单位机构代码证或法人代码证"; break;
case "": zjlx = "户口簿"; break;
case "": zjlx = "护照"; break;
case "": zjlx = "其他证件"; break;
}
stu.farmerZJLX = zjlx;
}
if (row.Table.Columns.Contains("CBFZJHM") && row["CBFZJHM"] != null && row["CBFZJHM"].ToString() != "")
{
stu.farmerZJHM = row["CBFZJHM"].ToString(); ;
}
if (row.Table.Columns.Contains("CBFDZ") && row["CBFDZ"] != null && row["CBFDZ"].ToString() != "")
{
stu.farmerCBFDZ = row["CBFDZ"].ToString(); ;
}
if (row.Table.Columns.Contains("YZBM") && row["YZBM"] != null && row["YZBM"].ToString() != "")
{
stu.farmerYZBM= row["YZBM"].ToString(); ;
}
if (row.Table.Columns.Contains("CBFCYSL") && row["CBFCYSL"] != null && row["CBFCYSL"].ToString() != "")
{
stu.farmerCBFCYSL = row["CBFCYSL"].ToString(); ;
}
list.Add(stu);
}
return list;
}
finally
{
connct.Close();
command.Dispose();
connct.Dispose();
} }
4、在新建好的报表中就可以通过拖动相应的控件等来设计报表,简单的说就是画报表,安装需求画好相应的报表内容,比如:

C#制作RDLC报表的更多相关文章
- 微软RDLC报表打印
关于微软RDLC报表打印时文字拉伸问题(Windows server 2003 sp2) 最近我们开发的打印服务频频出现打印文字拉伸问题,客户意见络绎不绝,最为明显的是使用黑体加粗后 “2.0份” 打 ...
- RDLC报表学习
RDLC报表由以下三部分构成: 1.制作自己的DateSet集合(就是报表的数据集): 2.制作自己的报表文件.rdlc文件,用于画做报表样式,里面有微软自带的导出和打印功能,其实就为了少做这2个功能 ...
- 利用General框架开发RDLC报表
RDLC是微软推出的自家的报表软件,虽然没有一些第三方的报表软件强大好用,但是作为VisualStudio集成的报表工具,在客户要求不高的情况下还是非常值得一用的,本文将介绍通过General代码生成 ...
- RDLC报表总结
这2天纠结的报表基本上已近完成大部分功能.现在总结一下自己近期的学习成果 首先制作微软RDLC报表由以下三部分构成:1.制作自己的DateSet集合(就是报表的数据集):2.制作自己的报表文件.rdl ...
- [转]RDLC报表格式化format表达式
本文转自:http://www.cnblogs.com/samlin/archive/2012/04/17/FormatDateTime.html 刚开始接触RDLC报表,觉得RDLC报表提供的格式化 ...
- 关闭rdlc报表打印预览后,关闭客户端,抛出异常“发生了应用程序级的异常 将退出”
问题:关闭rdlc报表打印预览后,关闭客户端,抛出异常“发生了应用程序级的异常 将退出” 办法:在容纳ReportViewer的窗体后台代码中,添加如下代码即可 protected override ...
- rdlc报表DEMO
rdlc报表demo .net 4.0 vs2013 文本框,图像控件,checkbox样式的打印 下载链接
- rdlc报表大小设置
参考:http://stackoverflow.com/questions/427730/how-to-limit-rdlc-report-for-one-page-in-a-pdf 主要设置为:报表 ...
- 基于MVC4+EasyUI的Web开发框架经验总结(15)--在MVC项目中使用RDLC报表
RDLC是一个不错的报表,有着比较不错的设计模式和展现效果,在我的Winform开发里面,使用RDLC也是一个比较方便操作,如可以参考文章<DevExpress的XtraReport和微软RDL ...
随机推荐
- 我所理解的OOP——UML六种关系
最近由于经常给公司的小伙伴儿们讲一些OOP的基本东西,每次草纸都被我弄的很尴尬,画来画去自己都乱了,有时候也会尝试使用UML表示类之间的关系,但UML从毕业后就再也没接触过了,经常会被小伙伴儿们指出继 ...
- xamarin UWP平台下 HUD 自定义弹窗
在我的上一篇博客中我写了一个在xamarin的UWP平台下的自定义弹窗控件.在上篇文章中介绍了一种弹窗的写法,但在实际应用中发现了该方法的不足: 1.当弹窗出现后,我们拖动整个窗口大小的时候,弹窗的窗 ...
- Java连接Oracle数据库开发银行管理系统【一、需求篇】
此系统开发共分为三篇完成. 第一篇[需求篇]:效果展示图,也就是需求部分的展示 第二篇[设计篇]:需求分析和类,接口的设计 第三篇[实现篇]:具体代码实现
- 你可能不知道console强大
写在前面 大家都有用过各种类型的浏览器,每种浏览器都有自己的特色,本人拙见,在我用过的浏览器当中,我是最喜欢Chrome的,因为它对于调试脚本及前端设计调试都有它比其它浏览器有过之而无不及的地方.可能 ...
- Jquery 选择器 详解
在线文档地址:http://tool.oschina.net/apidocs/apidoc?api=jquery 各种在线工具地址:http://www.ostools.net/ 一.基本选择器 $( ...
- Android 4.2版本以下使用WebView组件addJavascriptInterface方法存在JS漏洞
JS注入漏洞存在的Android版本:Android < 4.2 综述:Android的SDK中提供了一个WebView组件,用于在应用中嵌入一个浏览器来进行网页浏览.WebView组件中的ad ...
- 【WP 8.1开发】推送通知测试服务端程序
所谓推送通知,用老爷爷都能听懂的话说,就是: 1.我的服务器将通知内容发送到微软的通知服务器,再由通知服务器帮我转发消息. 2.那么,微软的推送服务器是如何知道我的服务器要发消息给哪台手机呢?手机客户 ...
- 深入理解PHP内核(九)变量及数据类型-静态变量
原文链接:http://www.orlion.ga/251/ 通常静态变量是静态分配的,他们的生命周期和程序的生命周期一样长,只有在程序退出后才结束生命周期,这和局部变量相反,有的语言中全局变量也是静 ...
- 【Discuz】关闭QQ互联插件提示信息:系统繁忙,请稍后再试
版本:X3.2.20160601 提示信息 系统繁忙,请稍后再试 解决方案 Step1.删除QQ互联插件目录 网站的根目录\source\plugin\qqconnect Step2.上传原始QQ互联 ...
- [Node.js] 使用node-forge保障Javascript应用的传输安全
原文地址:http://www.moye.me/2015/12/19/protect_jsapp_tsl_by_using_node-forge/ 引子 半年前的最后一次更新(惭愧 ),提到了对称与 ...