RDLC+存储过程报表设计方法
动态创建rdlc报表,绑定任意Dataset
需求是这样的:我有一个DataSet,其中有一个DataTable,这个DataTable是根据调用存储过程不同的参数而生成的数据集,其列是可变的。
现在需要为这样的数据集做一个简单的报表。
你不可能为一个可变列的DataTable设计一个固定的rdlc报表文件,因为column是动态的,可能是2列,可能是3列,可能是10列,列名也不同,
目前的办法也只能是根据DataSet,动态创建rdlc,然后再绑定到ReportViewer上。
不知道还有其他更方便的方法。
下面两篇文章介绍了动态创建rdlc报表,绑定任意Dataset的方式,并结合xslt控制显示的样式外观,感觉还是很不错的
第二个链接是修正版本。
Generate a RDLC dynamically for the VS 2005 Report Viewer Control
Revised Dynamic RDLC Generation
我自己做了一个demo试了一下
效果还是不错的。
关于VS2010RDLC报表的详细使用说明
关于VS2010RDLC报表的详细使⽤说明各位技术屌丝们好,之前我⽤了很长⼀段时间通过不断的研究揣摩,终于把RDLC报表给搞透了,今天跟⼤家做个总结,希望能够帮助到⼤家。
需求分析我想把datagridview 中的数据打印出来。
⾸先新建⼀个winfrom 窗体第⼆部将数据填充到datagridview中现在我要做的是把datagridview中的数据打印出来。
打印之前⾸先建⽴⼀个窗⼝,专门⽤于存放打印控件注意红⾊标记的地⽅,尤其是访问级别处最好给public 避免出现访问不了现象。
图解:新建俩个⽂件夹。
report存放报表⽂件。
RDataSource存放数据源图解:新建⼀个数据源及⼀个报表⽂件。
新建⼀个数据表,主要⽤于报表上的传值。
由于我的数据源中只有俩个字段,所以在这⾥对于新增相同名称的字段,需要注意的是datatype这个地⽅,对于设置的数据类型新增表后会出现需要你选择数据源的地⽅,这个地⽅默认是引导新建,我们刚刚⼿动新增了我们的数据源所以这⾥我们选择以下图。
注意这是关键,不然你的数据获取不到。
⽤对象类型。
我们新增的数据源在对象⾥⾯会体现出来,需要注意的是只选择Rdataset (左)下⾯的不需要选择。
点击完成这⾥为了⽅便起见我起了跟数据源相同的名称。
这⾥数据源已经出来了,还有我们只新增了⼀个数据集(可⽤数据集)在dataset⾥⾯可以新增多个数据集,不过引⽤的时候需要注意下这⾥的可⽤数据集。
因为我们刚刚引⽤了数据源,所以在这⾥也已经有了。
报表的设置基本好了,这边报表的设计好不好看,完全取决于你的审美啦。
这⾥我们在datagridview中新增⼀个事件需要引⽤using Microsoft.Reporting.WinForms;基本到这⾥就算完成了,试着F5下吧。
直接打印即可啦!!!!花了⼀中午的时间做的教程,希望能够帮助到各位苦逼的程序员屌丝們,如果你看了对你有帮助的话同事也希望帮助到其他新⼿的话,请加⼊我们的群:28851380问题及处理⽅法找不到报表解决办法如果报表设置不是很⼤的话可以采⽤始终复制哦,如果很⼤的话就使⽤复制最新的。
基于RDLC的报表系统的设计和实现_孙鹏(1)
Computer Knowledge and Technology 电脑知识与技术本栏目责任编辑:谢媛媛软件设计开发第8卷第19期(2012年7月)基于RDLC 的报表系统的设计和实现孙鹏,徐美红,谢国雄,李泽杰(广东省气象信息中心,广东广州510080)摘要:该文介绍了目前市场上的主流报表工具,在进行了综合分析的基础上,提出了基于RDLC 技术的报表系统的设计和实现,该平台运行于微软.NET 平台,支持C#, 开发语言,它的优点是免费、能制作各种样式复杂的报表、同时支持BS 和CS 模式、实现简单、易于部署等。
关键词:报表;RDLC ;.NET ;导出;Excel中图分类号:TP315文献标识码:A 文章编号:1009-3044(2012)19-4624-03Design and Implementation of Reporting System Based on RDLCSUN Peng,XU Mei-hong,XIE Guo-xiong,LI Ze-jie(Guangdong Provincial Meteorological Information Center,Guangzhou 510080,China)Abstract:This paper introduces the current market mainstream reporting tools,on the basis of comprehensive analysis,proposed design and implementation of reporting system based on RDLC.the platform running on the Microsoft .NET platform,support C#, de ⁃velopment language,it has the advantages of free,can make a variety of styles complex statements,support BS and CS mode at the same time,the realization of a simple,easy to deploy.Key words:Report;RDLC;.NET;Export;Excel目前市面上主要的报表软件、工具和插件不少,最主流的有水晶报表(Crystal Report ),其应用非常广泛,在不同行业、规模的应用里都可以看到它的身影。
报表设计器RDL报表操作指南
葡萄城报表提供了一个高度集成的设计器,并以可视化、代码、脚本或表达式的方式来编 辑报表。它包括一个属性窗口,可以在该窗口中设置每个元素的属性。
设计器支持三种类型的报表:RDL报表、页面报表、区域报表。本章介绍RDL报表的具体 操作。
1. RDL 报表
Rdl报表给我们提供了最大限度的报表交互能力。可以放大和缩小控件,设置交互式排序, 设置钻取报表,还可以添加指向其它报表的钻取链接和指向报表内其它区域的书签链接。下面 详细介绍RDL报表。
文本框 文本框用于显示报表数据,Table 和 Matrix 单元格中默认显示的是文本框控件,当您从报 表资源管理器中将数据字段拖拽到报表界面时,生成的也是文本框控件。您可以通过表达式来 修改数据的显示行为。
1.5 属性窗口
在设计报表时,属性窗口是非常重要的工具。可以选择任何数据区域、控件或报表本身并 在属性窗口中查看其属性。默认情况下,此窗口位于报表设计区域的右侧。您可以通过单击属 性窗口顶部的“按字母顺序”或“按类别顺序”显示属性列表。
列表 列表中可以放置其他报表控件。它会根据数据集中的数据重复地显示区域内的控件。 距表 距表支持动态数量的行和列。此功能与交叉表和数据透视表类似。 形状 形状不与具体的数据关联。可用于显示一个控件的边界,或者高亮显示报表中特定区域的 数据,支持的形状有矩形,圆角矩形和椭圆。与Container不同的是,该控件内不能放置其他 控件。 迷你图 迷你图以一个很小的图像来展示数据的趋势,支持折线、面积、堆积条形、柱状和须状图 表类型。 子报表 子报表以子报表的形式显示其他报表的内容。可以从主报表中将参数传递给子报表以实现 数据过滤。需要注意的是每个子报表都以单独的报表运行,当处理大数据报表时,这种方案可 能会影响到运行的速度,这种情况下,数据区域是更为合理的选择。 表格 表格以行为单位进行数据显示。默认情况下,表格有三行、三列。表格列的设置是在设计 时完成,行会根据数据集中的数据进行重复显示。表格默认会显示表头、明细和表尾,表头和 表尾和删除,此外您还可以添加/删除分组头和分组尾,表格的单元格默认包含一个文本框控 件,不过您可以将文本框控件替换为其他任意类型的报表控件。 文档目录 用于制作报表目录。 地图 用于制作地图报表。
[原创]RDLC报表系列(五)RDLC报表分组-大熊的空间-博客园
[原创]RDLC报表系列(五)RDLC报表分组-⼤熊的空间-博客园[原创] RDLC 报表系列(五) RDLC报表分组本⽂只代表作者在⼀定阶段的认识与理解。
⼀、写作前提在我的博客园中我写了关于⼀些RDLC报表的使⽤,请参考这⾥。
因为没有时间,所以没有导⼊到我的个⼈博客中。
在博客园中相关⽂章如下:[原创] RDLC 报表系列(⼀)创建⼀个报表[原创] RDLC 报表系列(⼆)报表中插⼊图⽚[原创] RDLC 报表系列(三)参数、常量及常⽤表达式的使⽤[原创] RDLC 报表系列(四)⼦报表的使⽤⼆、本⽂内容1. 加载RDLC报表数据2. 实现数据分组3. 总结4. 代码下载(下载)三、加载RDLC报表数据我们的⽰例是要从学⽣表中,取出200条学⽣信息,然后加载到RDLC报表中。
01using System;02using System.Collections;03using System.Configuration;04using System.Data;05using System.Linq;06using System.Web;07using System.Web.Security;08using System.Web.UI;09using System.Web.UI.HtmlControls;10using System.Web.UI.WebControls;11using System.Web.UI.WebControls.WebParts;12using System.Data.SqlClient;13using System.Collections.Generic;14using System.Xml.Linq;15using Microsoft.Reporting.WinForms;16using RCLC.DataEntity;1718namespace RCLC19{20 public partial class_Default : CustomPageBase21 {22 protected void Page_Load(object sender, EventArgs e)23 {2425 }2627 protected void ButtonReportGenerate_Click(object sender, EventArgs e)29 List<ReportDataSource> reportDataSource = new List<ReportDataSource>();30 RportDataSet ds = new RportDataSet();31 string templatePath = string.Empty;32 string totalRecords = string.Empty;3334 //获得数据35 SqlConnection conn = newSqlConnection(ConfigurationManager.ConnectionStrings["LoggingConnectionString"].ConnectionString);36 SqlCommand command = conn.CreateCommand();37 mandType = CommandType.Text;38 mandText = "SELECT TOP 200 * FROM T_STUDENT";39 SqlDataAdapter da = new SqlDataAdapter(command);40 da.Fill(ds.T_STUDENT);4142 //指定报表模板43 templatePath = "ReportTemplate/StudentReport.rdlc";4445 //把获取的数据集合提供给在报表中名为RportDataSet_T_STUDENT数据集46 reportDataSource.Add(new ReportDataSource("RportDataSet_T_STUDENT", ds.T_STUDENT));47 List<ReportParameter> parameterList = new List<ReportParameter>();48 ////Generate Report,报表可以⽣成PDF,EXCEL及以其它形式,根据需求去设置49 GetReportMultipleDataSourceFile(reportDataSource, templatePath, parameterList, "pdf");50 }51 }52}上⾯的代码已经获取到200条学⽣的信息,然后把数据从数据库中取出然后加载到StudentReport.rdlc 报表中,下⾯要做的事情就是对数据进⾏分组了。
RDLC报表总结
RDLC报表一、RDLC介绍在VS2005之前,SQL Server Reporting Services中已经提供了一种被称为报表定义语言(Report Definition Language, RDL)的语言;在VS2005中,Microsoft提供了针对这种报表的设计器,并提供了在WinForm和WebForm中使用这种报表的能力。
RDL是Report Definition Language的缩写,C代表Client-side processing,凸显了它的客户端处理能力。
从SQL Server2005开始,微软提供了一个报表服务,即Reporting Service,利用该服务部署在服务器端的报表扩展名为rdl;而通过自主生成一些数据源,在本地展现出来的报表扩展名为rdlc,这种方式称之为Local Report。
二、如何开发下面是LocalReport的开发步骤,对于ServerReport还没有进行研究。
1.新建一个Web工程,新建一个aspx页面。
2.将ReportViewer控件添加到新建的aspx页面中。
(视图—工具箱—数据—ReportViewer)VS2005的数据控件中有名为ReportViewer的控件,用于展现报表。
该控件即可以展现rdl 报表也可以展现rdlc报表。
3.新建报表文件选中web工程—右键添加—新建项—选中报表(如下图)4.创建自己的报表布局(以柱状图为例)工具箱—图表—拖放到报表文件主体中选中图表—右键—图表类型—柱形图—简单柱形图可以直接修改属性调整布局,也可以利用工具栏中的布局按钮布局(包括水平居中、垂直居中、对齐网格等)5.创建数据集(选中web工程—右键添加—新建项—选中数据集)在新建的数据集面板右键—添加—TableAdapter配好数据库连接之后,下一步,有三种选择方式:使用sql语句、新建存储过程、使用现有存储过程。
根据需求选择一种配好自己的数据源。
RDLC报表
RDLC报表1.1简介在visual studio 2005之前,微软提供了一个报表服务(Reporting Service),其中也提供了报表自定义语言Report Definition Language, RDL语言),其报表定义为.rdl文件;Microsoft提供了针对这种报表的设计器,并且提供了在并提供了在WinForm和WebForm中使用这种报表的能力.微软定义了RDLC (Report Definition Language Client)也就是报表定义语言的客户端也称本地报表,该报表的后缀为.rdlc.本地报表和服务器报表存在一定的区别。
服务器报表rdl是指那些针对报表服务部署在服务器端的报表。
当报表被许多用户访问、报表以发布在报表服务器上,将其包含在所创建和部署的应用程序中、报表中有复杂的查询或者包含数据量大导致应用程序所在计算机的系统资源超载时,用报表的远程处理比较合适。
本地报表rdlc是指在本地的一些报表,在使用报表不一定要依赖于SQL Server,而是可以自主生成一些数据源然后以报表的方式显现出来。
本地处理模式的功能不及远程处理功能强大,适合中小型好报表和数据集的应用程序。
如果和rdl比较,rdlc可以看成是一个轻量级的报表。
在展现报表的时候我们需要使用到的一个控件叫ReportViewer,这种控件可以展现rdl报表,也可以展现rdlc报表。
从其属性可以看出,ReportView.ServerReport是针对rdl报表的,而ReportViewer.LocalReport是针对rdlc报表的。
1.2RDLC功能RDLC报表提供了以下主要功能:1、含有简单易用尤其是Table控件,非常方便字段在报表上的排列。
2、灵活的可定制性,用XML来实现通用的报表打印,可以用XML完全可以实现一个基于RDLC的报表设计器,这样可以让终端用户参与到报表的设计中,至少可以使他们能够修改报表中一些标题、表头等3、高度可编程性,在你的项目中,甚至不需要有一个报表文件,通过代码就可以实现报表生成、预览和打印等一系列操作;4、支持数据钻取功能;钻取报表是通过设置Navigation(HyperLink)和Parameters 来实现的,而具有子报表的钻取报表实现的功能类似Excel中数据透视表(Pivot Table)的功能,在一个复杂的交叉表中可以进行时间和商品两个维度的向下钻取。
rdlc报表制作详细步骤
使用RDLC报表(一)1 建立数据源启动VS2005新建一个窗体项目,命名为TestProj在左边的窗体内选择“添加新数据源”或在菜单上操作“添加新数据源”:选择后出现对话窗体,选择“数据库”,进入“下一步”:本数据源以SqlServer2000所提供的Northwind数据库为例,因此在数据库内选择驱动程序为SqlServer,具体操作视所用数据库而定(如果连接为Oracle,建议用Oracle所提供的ODP for .NET,地址:/technol ogy/global/cn/software/tech/windows/odpnet/index.html)。
选择数据源后,指定数据库文件,并进行测试,如果连接不通,请检查你的软件设置。
进行下一步,至显示出库文件内的表及视图,然后打开表,并选择其中的Employ ees,选择完成。
在数据源窗口中显示出所选择表及表内的字段,以备使用。
同时在资源管理器中,也可以看到新增加的数据文件。
2 报表浏览器在新建的窗体内,放入报表浏览控件:此报表浏览控件集成了报表查看及打印预览的功能,可直接输出至打印机,也可直接输出至Excel文件或PDF文件,对于喜欢看Excel表格的客户来说,这个报表控件非常不错。
关于此报表的来源及台前幕后的各种说法,请自己查询相关的网站。
3 建立报表文件选中报表浏览器控件后,在控件的右上角会出现一个小三角,点击后,出现一个菜单,选择“设计新报表”或在解决方案资源管理器中添加一个新的报表文件:双击“报表项”内的“表”,则设计空白表内生成一个表格,我们可以在表格内添加数据项。
此报表的设计方式类似于MS以前的VB下报表设计环境。
在报表设计器中,我将一份报表分为五个部分,从上至下为:报表标题区、列标题区、数据显示区、合计及页脚。
如果将报表的设计形式显示出页眉及页脚,报表的形式会看得更清楚些:选择页眉及页脚:显示结果:现在开始设计报表:在“页眉”区内放入一个文本框,将内容更改为“测试报表”,居中,字体放大加粗:从数据源窗口中选择合适的列,用鼠标拖到报表内的“详细信息”表格上,数据会自动填入:将设计的报表保存后,返回报表浏览窗口,并为报表浏览器选择我们设计的报表:选中报表文件后,菜单也有所改变:再为此报表文件指定数据源,选择数据源:确定,保存文件并运行测试文件。
RDLC报表详细讲解与分析报告
RDLC报表随笔……(,感谢网友”蜡人”)(一)VS .NET开发中,用什么做报表?可能的回答是Crystal Report,自.NET“紧密”集成Crystal Report后,这可能是开发人员比较单一的选择。
但是,这种集成似乎并不非常紧密,网络上充斥着关于使用Crystal Report的抱怨,太复杂也许是其最为令人诟病的地方,自定义性比较差也不能为程序员们所容忍。
当然,必须承认Crystal Report的功能还是非常强大的,被Business Ob ject收购以后,商业职能的成分也在逐渐增加,也形成了一定规模的用户群。
Visual Studio .NET进入2005版本以后,Crystal Report与IDE的结合更“紧密”了,至少我们看不到那个讨厌的注册窗口了。
但是,Microsoft似乎并不容忍在自己的超级工具中竟然没有报表工具,于是Report Viewer Control出现了,我把它的报表称为RDLC报表。
在VS .NET 2005之前,SQL Server Reporting Services中已经提供了一种被称为报表定义语言(Report Definition Language, RDL)的语言;在VS .NET 2005中,Microsoft提供了针对这种报表的设计器,并提供了在WinForm和WebForm中使用这种报表的能力。
Microsoft将这种报表的后缀定为RDLC,RDL仍然是Report Definition Lan guage的缩写,那么C代表什么呢?C代表Client-side processing,凸显了它的客户端处理能力。
这种报表的易用性和可定制性让我们完全有理由放弃Crystal Report,让我们来看看它的强大功能吧:1、简单易用的控件,特别是Table控件,非常方便字段在报表上的排列;2、灵活的可定制性,用XML来描述一个报表相关的一切,不用说了吧?3、高度可编程性,在你的项目中,甚至不需要有一个报表文件,通过代码就可以实现报表生成、预览和打印等一系列操作;4、支持DrillThrough数据钻取功能;5、导出的Excel文件格式非常完美,任何其它报表在这方面都不能与之比拟,而且并不需要安装Excel;……[偷偷懒,其实我并不擅长总结某某的特点,我只能从实际经验中得到一点点结论,而且我也不原意去抄袭帮助中的New Features,呵呵……]在以后的几篇随笔中,我将结合最近一段时间使用RDLC报表的经验继续探讨相关的一些问题,大致容包括:报表设计器的使用、LocalReport的一些相关操作,如何自定义纸等等,欢迎大家提出参考意见。
RDLC报表使用手册
RDLC使用总结1、为什么要使用RDLC报表(简介)VS .NET开发中,用什么进行报表设计?可能的回答是Crystal Report,当然,必须承认Crystal Report的功能还是非常强大的,被Business Object收购以后,商业的成分也在逐渐增加,也形成了一定规模的用户群。
Visual Studio .NET进入2005版本以后,Crystal Report与IDE的结合更“紧密”了,至少我们看不到那个讨厌的注册窗口了。
但是,Microsoft似乎并不容忍在自己的超级工具中竟然没有报表工具,于是Report Viewer Control出现了,我把它的报表称为RDLC报表。
在VS .NET 2005之前,SQL Server Reporting Services中已经提供了一种被称为报表定义语言(Report Definition Language, RDL)的语言;在VS .NET 2005中,Microsoft提供了针对这种报表的设计器,并提供了在WinForm和WebForm中使用这种报表的能力。
Microsoft将这种报表的后缀定为RDLC,RDL仍然是Report Definition Language的缩写,那么C代表什么呢?C代表Client-side processing,凸显了它的客户端处理能力。
这种报表的易用性和可定制性让我们完全有理由放弃Crystal Report,让我们来看看它的强大功能吧:1)简单易用的控件,特别是Table控件,非常方便字段在报表上的排列;2)灵活的可定制性,用XML来描述一个报表相关的一切,不用说了吧;3)高度可编程性,在你的项目中,甚至不需要有一个报表文件,通过代码就可以实现报表生成、预览和打印等一系列操作;4)支持DrillThrough数据钻取功能;5)导出的Excel文件格式非常完美,而且并不需要安装Excel;6)数据源处理极其方便,开发人员可以自己接管数据库连接、取数,然后将数据结果赋值给RDLC的数据集即可。
rdlc报表制作详细步骤
使用RDLC报表(一)1 建立数据源启动VS2005新建一个窗体项目,命名为TestProj在左边的窗体内选择“添加新数据源”或在菜单上操作“添加新数据源”:选择后出现对话窗体,选择“数据库”,进入“下一步”:本数据源以SqlServer2000所提供的Northwind数据库为例,因此在数据库内选择驱动程序为SqlServer,具体操作视所用数据库而定(如果连接为Oracle,建议用Oracle所提供的ODP for .NET,地址:/technol ogy/global/cn/software/tech/windows/odpnet/index.html)。
选择数据源后,指定数据库文件,并进行测试,如果连接不通,请检查你的软件设置。
进行下一步,至显示出库文件内的表及视图,然后打开表,并选择其中的Employ ees,选择完成。
在数据源窗口中显示出所选择表及表内的字段,以备使用。
同时在资源管理器中,也可以看到新增加的数据文件。
2 报表浏览器在新建的窗体内,放入报表浏览控件:此报表浏览控件集成了报表查看及打印预览的功能,可直接输出至打印机,也可直接输出至Excel文件或PDF文件,对于喜欢看Excel表格的客户来说,这个报表控件非常不错。
关于此报表的来源及台前幕后的各种说法,请自己查询相关的网站。
3 建立报表文件选中报表浏览器控件后,在控件的右上角会出现一个小三角,点击后,出现一个菜单,选择“设计新报表”或在解决方案资源管理器中添加一个新的报表文件:双击“报表项”内的“表”,则设计空白表内生成一个表格,我们可以在表格内添加数据项。
此报表的设计方式类似于MS以前的VB下报表设计环境。
在报表设计器中,我将一份报表分为五个部分,从上至下为:报表标题区、列标题区、数据显示区、合计及页脚。
如果将报表的设计形式显示出页眉及页脚,报表的形式会看得更清楚些:选择页眉及页脚:显示结果:现在开始设计报表:在“页眉”区内放入一个文本框,将内容更改为“测试报表”,居中,字体放大加粗:从数据源窗口中选择合适的列,用鼠标拖到报表内的“详细信息”表格上,数据会自动填入:将设计的报表保存后,返回报表浏览窗口,并为报表浏览器选择我们设计的报表:选中报表文件后,菜单也有所改变:再为此报表文件指定数据源,选择数据源:确定,保存文件并运行测试文件。
VS2010_RDLC自带报表使用手册
RDLC使用总结1、为什么要使用RDLC报表(简介)VS .NET开发中,用什么进行报表设计?可能的回答是Crystal Report,当然,必须承认Crystal Report的功能还是非常强大的,被Business Object收购以后,商业的成分也在逐渐增加,也形成了一定规模的用户群。
Visual Studio .NET进入2005版本以后,Crystal Report与IDE的结合更“紧密”了,至少我们看不到那个讨厌的注册窗口了。
但是,Microsoft似乎并不容忍在自己的超级工具中竟然没有报表工具,于是Report Viewer Control出现了,我把它的报表称为RDLC报表。
在VS .NET 2005之前,SQL Server Reporting Services中已经提供了一种被称为报表定义语言(Report Definition Language, RDL)的语言;在VS .NET 2005中,Microsoft提供了针对这种报表的设计器,并提供了在WinForm和WebForm中使用这种报表的能力。
Microsoft将这种报表的后缀定为RDLC,RDL仍然是Report Definition Language的缩写,那么C代表什么呢?C代表Client-side processing,凸显了它的客户端处理能力。
这种报表的易用性和可定制性让我们完全有理由放弃Crystal Report,让我们来看看它的强大功能吧:1)简单易用的控件,特别是Table控件,非常方便字段在报表上的排列;2)灵活的可定制性,用XML来描述一个报表相关的一切,不用说了吧;3)高度可编程性,在你的项目中,甚至不需要有一个报表文件,通过代码就可以实现报表生成、预览和打印等一系列操作;4)支持DrillThrough数据钻取功能;5)导出的Excel文件格式非常完美,而且并不需要安装Excel;6)数据源处理极其方便,开发人员可以自己接管数据库连接、取数,然后将数据结果赋值给RDLC的数据集即可。
RDLC报表实例
RDLC 报表开发一、打开Visual Studio 2005,新建 网站,添加数据集,会自动调出数据集配置窗口TableAdapter如果上面的窗口没有自动调出,可以如下图可以调出上面的TableAdapter 窗口二、新建立数据库连接下面的这一步会将数据库连接保存到config 文件中下面的这一步可以,选择生成SQL的方式让我们先回到SQL Server Query Analyzer打开SQL Server 查询分析器在SQL程序中创建如下图的存储过程然后回到V isual Studio 2005,选择使用现在的存储过程,下一步,在这里,我们只需要选择所需要的存储过程,如刚才建立的EmployeeReport 即可完成TableAdapter向导的配置三、添加报表项创建报表项后,从左边工具栏拖动一个Table 到报表设计器中,选择网站数据集中的字段,把它拖动到表格的列中,通过页眉页脚可以设置复杂的打印样式。
四、新建立一个ASPX页面,拖动一个Report V iewer控件到页面中,在ReportViewer任务窗口中,选择刚才建立的rdl c文件,生成解决方案,然后执行就完成了报表开发。
[ 注意:如果此处报“未能找到在ObjectDataSource ObjectDataSource1 的TypeName 属性中指定的类型”的错误,说明数据源配置不正确,可以选择正确的配置即可。
]五、注意1. 刚才的SQL 脚本CREA TE PROC EmployeeReportASSELECT * FROM EmployeeGO实际的报表开发中,一定不要用SELECT * ,只取报表中需要查看的字段。
2. 有时候,可能需要用户选择一些条件,有选择性的查看报表。
而不是全部绑定数据如上图,用户可能只需要查看2008-9-29至2008-9-30时间段之间的数据则作法如下:先建立好如上图的ASPX页面,在View Report 事件中写如下的程序ReportViewer1.LocalReport.ReportPath = AppDomain.CurrentDomain.BaseDirectory + "/Report/Request.rdlc";DateTime dtFrom =Convert.ToDateTime(txtDateFrom.Text);DateTime dtTo =Convert.ToDateTime(txtDateTo.Text);string requester = txtRequester.Text;string dept = txtRequestDept.Text;string material = ddlMaterial.SelectedV alue;string iprstatus = ddlStatus.SelectedV alue;DataTable reqrpt = ReportDB.RequestReport(dtFrom, dtTo, material, dept,requester, iprstatus);if (reqrpt != null){ReportViewer1.LocalReport.DataSources.Clear();ReportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("Request_RequestReport", reqrpt)); ReportViewer1.LocalReport.Refresh();}ReportViewer1.LocalReport.Refresh();根据用户所选的参数,把数据值传到SQL语句中即可.下面是RequestReport方法的源码DataTable RequestReport(DateTime dtFrom, DateTime dtTo, string pMaterial, string pDept, string pRequester, string pIPRStatus) {string MySQL = Purchase;string whDate = " RequestDate BETWEEN '{0}' AND '{1}' ";MySQL = MySQL + string.Format(whDate, dtFrom, dtTo);string whMaterial = " AND MaterialCode='{0}' ";if (pMaterial != "ALL"){MySQL = MySQL + string.Format(whMaterial, pMaterial);}string whDept = " AND RequestDepartment='{0}' ";MySQL = MySQL + string.Format(whDept, pDept);string whRequester=" AND Requester='{0}' ";if(pRequester!="ALL")MySQL = MySQL + string.Format(whRequester, pRequester);string whIPRStatus = " AND IPRStatus={0} ";if (pIPRStatus != "ALL"){MySQL = MySQL + string.Format(whIPRStatus, pIPRStatus);}IDataProvider privider = DataProvider.CreateDataProvider();DataSet ds = privider.RetriveDataSet(MySQL);if (ds != null && ds.Tables.Count > 0)return ds.Tables[0];elsereturn null;}const string Purchase="SELECT SerialNO,LedgerAcc,CostCenter,Requester,"+" RequestDate,RequestDepartment,MaterialCode, " +" Brand,Specifications,Unit,Quantity,Usage, "+" ExpectedDeliveryDate,Currency "+" ,Quotation1Supplier,Quotation1UnitPrice,Quotation1Amount, "+" Quotation2Supplier,Quotation2UnitPrice,Quotation2Amount, "+" Quotation3Supplier, Quotation3UnitPrice, Quotation3Amount, "+" ProposedQuotationSupplier, ProposedQuotationUnitPrice, "+" ProposedQuotationAmount,QuotationRemarks ,IPRStatus,QtyTo, UnitPriceTo FROM IPR WHERE ";3. 设计报表时,可以用上述的方法,实际运行时,可以替换成SQL 语句,传到ReportDataSource中即可,只要相应的表结构字段是存在的。
rdlc报表随笔心得,基本结构和一些表达式。
rdlc报表随笔⼼得,基本结构和⼀些表达式。
Dataset Form RDLC主要放数据集的⽂件夹存放窗体的⽂件夹存放各种报表的⽂件夹第⼀部,创建报表结构⾸先添加数据集项添加完成之后我们会看到这个页⾯之后我们在上⾯添加⼀些数据集数据源的连接要⾃⼰设定之后我们可以输⼊要编译的sql语句,因为是报表,主要⽤来查询,⼀般情况只⽤select语句就可以⽣成之后是这样的⼀些模型中间的灰⾊部分可以双击,进去之后我们能⾃定义编写⼀些⽅法//⽤这个⽅法查询时可以进⾏拼sql拼接查询,⼀般不写这个的话是不可以拼接查询的//加粗部分要根据你不同数据集下的⼩的数据模型名字不同进⾏变换partial class MemberTransferShopTableAdapter{internal int FillWhere(MC.MemberTransferShopDataTable dataTable, string whereSql, params SqlParameter[] commandParameters) {string sql = mandCollection[0].CommandText;sql = sql.Substring(0, stIndexOf("WHERE"));sql += " WHERE 1=1 " + whereSql;mandCollection[0].CommandText = sql;this.Adapter.SelectCommand = mandCollection[0];mandCollection[0].Parameters.Clear();foreach (SqlParameter p in commandParameters){mandCollection[0].Parameters.Add(p);}dataTable.Clear();int returnValue = this.Adapter.Fill(dataTable);return returnValue;}}下⾯展⽰两种Form中的连接数据的⽅法this.MemberTransferShopTableAdapter.Fill(this.cashier.MemberTransferShopDtl, A参数, A参数,A参数); //参数是你写语句时的参数,报表普遍⽤这种⽅法以下是Fillwhere拼接的⽅法,拼接⽅法省去了在数据库⾥判断的过程,可以减少where后查询的判断,从⽽加快⼀定速度。
RDLC报表
RDLC报表使用步骤主要介绍使用业务对象数据进行报表设计的过程。
(1)在项目上右击,添加报表。
(2)打开报表属性对话框(3)添加Model程序集引用(4)重新生成Model,这样的话,点击菜单上的“数据”,才会有添加数据新数据源和显示数据源项。
(5)若界面上没报表数据工具条,则点击菜单上的视图,报表数据,这样就调出了报表数据工具条。
若界面上有的话,此步省略。
(6)在菜单上选择数据,添加数据源,在弹出的对话框选择对象,然后即可选择Model 下的字段了。
(7)在报表工具表上,点击新建,添加数据集,弹出对话框,给数据集命名,并选择相应的Model。
(8)到此为止就可以报表的设计了。
报表的布局,想怎么弄就怎么弄吧。
(9)报表设计好了,需要给一个浏览报表的窗口,提供这个功能的就ReportView控件,在工具箱中可以找到,托到一个Web页面上即可。
还要加一个”ScripManager”控件,这个控件是在AJAX Extensions项下面,只要托到页面上即可,不用管它了。
(10)接下来需要给ReportView控件配置数据源了。
有两种方法。
一种是像给GirdView、FormView选择数据源一样,点击ReportView控件右侧的三角形符号,弹出一个小窗口,选择新建数据源,选择对象,然后选择BLL下的方法即,这将自动将ObjectDataSource加入到这个页面来。
第二种方法,是通过手写代码来配置数据源,这种方法适应比较复杂的情况,比如你需要对List集合下的字段进行改动,再配置给ReportView。
后面我给了一小段代码,这段代码是如何将报表按照数据库中的址将图片加载到报表中的,很典型。
(11)这样就做好了,接下来是发布了。
(12)注意,发布后,必须将RDLC报表拷到发布的目录下,覆盖掉发布过程中生成的RDLC 文件(这个文件只有1K)。
存在的问题RDLC这种报表,不支持直接打印。
必须将报表导出到PDF WORD EXCEL中。
csdn rdlc报表使用手册
csdn rdlc报表使用手册RDLC(Report Definition Language Client)是微软提供的一种报表定义语言,用于创建和部署本地报表。
RDLC报表使用基于XML的RDLC文件格式,可以在客户端应用程序中使用,不需要依赖于服务器端的报表服务。
RDLC报表使用手册一、RDLC报表的基本概念1.报表设计器:RDLC报表的设计工具,可以在Visual Studio中打开和编辑。
2.数据集:报表所需的数据源。
可以是数据表、数据集以及通过查询语句获取的数据。
3.数据源:报表绑定的数据源对象。
4.数据绑定:将报表中的控件与数据源中的字段进行关联。
5.表格:报表中用于显示数据的主要控件,可以设置列、行、组和总计等。
6.图表:报表中用于可视化数据的控件,可以用于展示柱状图、折线图、饼图等。
7.矩阵:报表中用于显示交叉表格的控件,可以实现多维数据的展示。
8.列表:报表中用于显示动态数据的控件,可以根据数据集的行数重复显示。
二、RDLC报表的创建和设计步骤1.打开Visual Studio,并创建一个新的Windows Forms项目。
2.在项目中添加RDLC报表文件,可以右键项目,选择添加->新建项,在模板中选择RDLC文件。
3.在报表设计器中,可以添加数据源和数据集。
选择数据源对象,并设置查询语句或连接字符串。
4.在报表设计器中,通过拖拽控件的方式添加表格、图表、矩阵或列表等控件。
5.设置控件的属性和样式,如字体、颜色、边框等。
6.设置数据绑定,将报表中的控件与数据源中的字段关联起来。
7.设置表格、图表、矩阵或列表等的相关属性,如分组、排序、总计等。
8.预览或发布报表,可以在报表设计器中预览报表效果,也可以在应用程序中调用报表进行展示。
三、RDLC报表的数据绑定和常用控件1.数据绑定:可以通过设置控件的Data Source属性,选择报表的数据集。
然后通过设置控件的Value属性,将控件与数据集中的字段进行绑定。
ReportView如何使用构造SQL语句带参数的存储过程创建报表以及为rdlc传递参数 .doc
ReportView如何使用构造SQL语句带参数的存储过程创建报表以及为rdlc传递参数最近要做报表,想使用MS的ReportView控件来实现,但后来的使用过程中才发现ReportView控件问题多多不够灵活,特别是在使用存储过程上,我看MSDN与网上的文章也都不够详细,所以我把我这几天研究的结果列表给大家看看。
先来看一个表结构Create Table Test(PID varchar(100),PNamevarchar(100),PQtyint,PPrice money)创建一个存储过程CREATE PROCEDURE procTest@condition varchar(1000)ASDECLARE @sqlvarchar(8000)SET @sql = 'SELECT PID, PName, PQty FROM Test 'IF @condition <> ''SET @sql = @sql + @conditionEXEC(@sql)这里需要说明的是,我看MSDN和网上的例子使用的都是直接SELECT语句带参数的存储过程,但很多时候都需要通过构造SQL语句进行查询,所以我这里主要讲的是如何使用EXEC这样构造SQL语句的存储过程。
建一 WebApplication,在App_Code目录(没有的话可以右键选择Add Folder新建此目录)里增加一个新项,并选择DataSet,填写DataSet名,点击确定。
在打开的窗口中右键选择Add再选择TableAdapter,弹出TableAdapter连接向导对话框,连接数据库(这个过程略),选择Use existing stored procedrues(已存在的存储过程),点击下一步,选择procTest,直接点完成,这样一个TableAdapter算是建好了。
如果那个存储过程直接是SELECT PID, PName, PQty FROM Test 那建好的TableAdapter就会直接把PID, PName, PQty当作列显示出来,但用的是EXEC所以要手工将PID, PName, PQty在右键->新建Column里把这几个加进去,加完后,存盘,然后新建一个Report文件,新建完后,在Report窗口左侧会把刚刚建的TableAdapter显示出来,把PID, PName, PQty列拖到Report窗口中,布局自己搞定,存盘。
微软rdlc报表
1.创建报表首先,创建数据源(连接数据库或者直接在工程添加DataSet),在此以DataSet 为例。
向工程添加数据集DataSet,再向数据集添加数据表DataTable,在表中添加字段(点击某一字段,选择属性可以修改字段类型)。
这样数据源就那立好了。
如下图所示:然后,在工程添加rdlc报表,在报表中添加表,在表中设置相应的显示字段如下图所示:最后,Form中添加报表浏览器ReportView,并且在ReportView对象的右上角点击小三角型,设置上面做好的rdlc报表如下图所示:如果数据源为DataSet,就要手动添加数据参考代码段如下:DataRow dr6 = ds1.Tables[0].NewRow();dr6.SetField("Name", "陈娇");dr6.SetField("Address", "广东增城新塘");dr6.SetField("Sex", "女");ds1.Tables[0].Rows.Add(dr6);this.reportViewer1.LocalReport.DataSources.Clear();this.reportViewer1.LocalReport.DataSources.Add(newMicrosoft.Reporting.WinForms.ReportDataSource("DataSet1", ds1.Tables[0]));this.reportViewer1.RefreshReport();2.添加字段(列)注意:在数据源的数据表中添加字段后,要在“视图”—“报表数据”弹出的界面中刷新数据源才能在报表只使用3.报表分组3.1基本分组在报表中右键点击数据单元格(设置好数据字段的单元格)选择“添加组”—“下方相邻”,如下图所示:然后就设置新添加的组,旧的字段就可以手动删掉了另外也可以右键点击行组,进行添加分组,如下图所示:3.2分组统计右键点击某一组的数据字段,操作界面如下图所示:然后在添加的行上右键点击“文本框属性”设置表达式,操作界面如下图所示:最终效果如下图所示:。
动态生成rdlc报表(原创)
动态生成rdlc报表(原创)动态生成rdlc 报表(原创)因为公司需求研究微软的Reportviewer 因为有许多特别要求所以动态调用比较灵活我的需求是根据数据不同的合并表头(参考了随心所欲的博客文档再次表示感谢)string cCount = "";string dCount = "";string jCount = "";protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){string id = Request.QueryString["OrderID"] == null ? "1" : Request.QueryString["OrderID"].ToString();SqlConnection con = new SqlConnection("server=CHEN ZQ;uid=sa;pwd=luca623;database=luca");SqlDataAdapter sda = new SqlDataAdapter("select * fro m view_Order where C_orderID='" + id + "'", con);DataSet ds = new DataSet();sda.Fill(ds);cCount = ds.Tables[0].Rows[0]["C_CTime"].ToString();dCount = ds.Tables[0].Rows[0]["C_TTime"].ToString();jCount = ds.Tables[0].Rows[0]["C_DTime"].ToString();复制代码//这段代码是最重要ReportViewer1.Reset();this.ReportViewer1.LocalReport.LoadReportDefinition(G enerateRdlc());ReportViewer1.LocalReport.DataSources.Clear();复制代码//Orders_DataTable1 数据源名字必须和此报表原绑定的数据源名相同this.ReportViewer1.LocalReport.DataSources.Add(new R eportDataSource("Orders_DataTable1", ds.Tables[0]));this.ReportViewer1.LocalReport.Refresh();}}//这个方法就是自定义报表的样式public MemoryStream GenerateRdlc(){XmlDocument sourceDoc = new XmlDocument();string path = AppDomain.CurrentDomain.BaseDirectory + "Orders.rdlc";//c_CTime = ds.Tables[0].Rows[0]["C_CTime"].ToString();sourceDoc.Load(path);//下面就是xml操作了没必要看我的根据自己的需求而做XmlNode xHeader = sourceDoc.ChildNodes.Item(1).Chil dNodes.Item(13).ChildNodes.Item(1).ChildNodes.Item(0).Chi ldNodes.Item(4);XmlNode xCells = xHeader.ChildNodes.Item(0).ChildNod es.Item(0).ChildNodes.Item(0);//建设期XmlNode xmlCell = xCells.ChildNodes.Item(1);XmlElement xeCol = sourceDoc.CreateElement("ColSpan ");xeCol.InnerText = cCount;xeCol.InnerXml = cCount;xmlCell.InnerXml += xeCol.OuterXml;XmlNode xmlCellValue = xmlCell.ChildNodes.Item(0).Chi ldNodes.Item(0).ChildNodes.Item(4);xmlCellValue.InnerXml = "建设期";xmlCellValue.InnerText = "建设期";XmlNode xnRemove;for (int i = 0; i <int.Parse(cCount) - 1; i++){xnRemove = xCells.ChildNodes.Item(2);xCells.RemoveChild(xnRemove);}//投产期XmlNode xmlCellT = xCells.ChildNodes.Item(2);XmlElement xeColT = sourceDoc.CreateElement("ColSpa n");xeColT.InnerText = dCount;xeColT.InnerXml = dCount;xmlCellT.InnerXml += xeColT.OuterXml;XmlNode xmlCellValueT = xmlCellT.ChildNodes.Item(0).C hildNodes.Item(0).ChildNodes.Item(4);xmlCellValueT.InnerXml = "投产期";xmlCellValueT.InnerText = "投产期";for (int j = 0; j < int.Parse(dCount) - 1; j++){xnRemove = xCells.ChildNodes.Item(3);xCells.RemoveChild(xnRemove);}//生产期XmlNode xmlCellC = xCells.ChildNodes.Item(3);XmlElement xeColC = sourceDoc.CreateElement("ColSpa n");xeColC.InnerText = jCount.ToString();xeColC.InnerXml = jCount.ToString();xmlCellC.InnerXml += xeColC.OuterXml;XmlNode xmlCellValueC = xmlCellC.ChildNodes.Item(0). ChildNodes.Item(0).ChildNodes.Item(4);xmlCellValueC.InnerXml = "生产期";xmlCellValueC.InnerText = "生产期";for (int j = 0; j < int.Parse(jCount) - 1; j++){xnRemove = xCells.ChildNodes.Item(4);xCells.RemoveChild(xnRemove);}MemoryStream ms = new MemoryStream();XmlSerializer serializer = new XmlSerializer(typeof(XmlD ocument));serializer.Serialize(ms, sourceDoc);ms.Position = 0;return ms;}复制代码技巧可以先在报表里自己设计好需要的格式用XmlDocument sourceDoc = new XmlDocument();string path = AppDomain.CurrentDomain.BaseDirectory + " Orders.rdlc";然后用sourceDoc .save()保存生成xml可以看到此xml你需要改的格式是哪个地方。
RDLC报表速成指南
RDLC报表速成指南RDLC报表是微软⾃家的报表,已经集成在vs2010中,相对⽔晶报表更轻量级,更重要的是:可直接在web项⽬中使⽤。
使⽤步骤:⼀、创建DataSet右击->Add New Item-> DataSet(本例中命名为DS_EMP),会出现以下界⾯:然后右击->Add->DataTable,添加⼀个表,命名为T_EMP,然后添加⼆个列EMPNO,EMPNAME均为String型,完成后的样⼦类似下现这样:注:如果机器上安装了BizTalk,DataSet打开后,可能是下⾯这样这种编辑⽅式我个⼈觉得不⽅便,可以通过在DS_EMP.xsd上右击-->Open With,然后在弹出界⾯中,把DataSet Editor设置成默认编辑器。
⼆、创建RDLC报表项⽬右击->Add New Item -> Report,添加报表,命名为Report_EMP.rdlc,这时会出现报表编辑界⾯,从⼯具箱中拖⼀个Table到报表空⽩区这时会弹出⼀个选择DataSet的界⾯:选择DS_EMP,然后点击"OK"关闭,这时报表布局上会出现⼀个⽹格注:通常这个界⾯在绝⼤多数情况下,Data Source下拉框⾥并不能识别出当前项⽬中的数据集。
这时,需要在解决⽅案rdlc⽂件上右击-->Open With-->XML(Text) Editor,直接编辑rdlc⽂件(报表rdlc⽂件其实就是⼀个xml),然后将以下内容插⼊到<Body>节点前<DataSources><DataSource Name="DS_EMP"><ConnectionProperties><DataProvider>System.Data.DataSet</DataProvider><ConnectString>/* Local Connection */</ConnectString></ConnectionProperties><rd:DataSourceID>d01eef15-1518-4df0-a45a-a17d24570e3a</rd:DataSourceID></DataSource></DataSources><DataSets><DataSet Name="T_EMP"><Fields><Field Name="EMPNO"><DataField>EMPNO</DataField><rd:TypeName>System.String</rd:TypeName></Field><Field Name="EMPNAME"><DataField>EMPNAME</DataField><rd:TypeName>System.String</rd:TypeName></Field></Fields><Query><DataSourceName>DS_EMP</DataSourceName><CommandText>/* Local Query */</CommandText></Query><rd:DataSetInfo><rd:DataSetName>DS_EMP</rd:DataSetName><rd:SchemaPath>App_Code\DS_EMP.xsd</rd:SchemaPath><rd:TableName>T_EMP</rd:TableName><rd:TableAdapterFillMethod /><rd:TableAdapterGetDataMethod /><rd:TableAdapterName /></rd:DataSetInfo></DataSet></DataSets>注:<rd:SchemaPath>App_Code\DS_EMP.xsd</rd:SchemaPath> 这个节点中的SchemePath最好设置成相对路径,否则多⼈团队开发时,如果其它⼈跟你本机的物理路径不⼀致,DataSet定义有变化后(⽐如新增加了字段),在报表设计的Report Data⾯板中,⽆法通过右键->Refresh刷新DataSet.然后再以正常⽅式双击rdlc报表打开即可看到左侧Report Data⾯板中多了⼀个数据集 ⿏标定位到单元格上,注意右上⾓有⼀个⼩图标(如上图),点击这个图标,能列出数据集中的字段 将需要打印的列依次添加进来再稍做些修饰,⼀个简单的报表设计就算完成了三、将报表嵌⼊到⽹页中创建⼀个aspx页,拖放⼀个ReportViewer到页⾯上,然后再拖放⼀个ScriptManager到页⾯上,最终的代码如下:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head runat="server"><title></title></head><body><form id="form1" runat="server"><div><rsweb:ReportViewer ID="ReportViewer1" runat="server" Width="100%" Height="100%"></rsweb:ReportViewer><asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager></div></form></body></html> 同时web.config中也会发⽣⼀些变化:<?xml version="1.0"?><!--For more information on how to configure your application, please visit/fwlink/?LinkId=169433--><configuration><system.web><httpHandlers><add verb="*" path="Reserved.ReportViewerWebControl.axd" type = "Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> </httpHandlers><compilation debug="true" targetFramework="4.0"><assemblies><add assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/><add assembly="mon, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/><add assembly="Microsoft.Build.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/><add assembly="System.Management, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/></assemblies></compilation><pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/></system.web></configuration> 主要是system.web/httphandlers 以及 assemblies节点下多了⼀些内容最后在default.aspx.cs⾥⽤代码弄点数据出来using System;using System.Data;using Microsoft.Reporting.WebForms;public partial class _Default : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){FillDataToReport();}}void FillDataToReport(){//造⼀些⽰例数据DataTable dt = new DataTable();dt.Columns.Add("EMPNO", typeof(string));dt.Columns.Add("EMPNAME", typeof(string));dt.Rows.Add("000", "菩提树下的杨过");dt.Rows.Add("001", "张三");dt.Rows.Add("002", "李四");dt.Rows.Add("003", "王五");//指定加载哪个报表,并填充数据this.ReportViewer1.LocalReport.ReportPath = "Report_EMP.rdlc";this.ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("T_EMP", dt)); }} 浏览⼀下页⾯,就能看到在线报表了:。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
RDLC+存储过程C# .Net报表设计方法
bdQuaker 2013-01-07
1RDLC+存储过程通用设计方法
测试数据库:OPMS_TEST;
存储过程:P_XXX_AliasPortCode;
RDLC+存储过程设计步骤如下:
把报表工具箱中的ReportViewer拖到WinForm窗体里;
选择“设计新报表”;
添加数据源;
在弹出的“数据源设计”窗口中,选择“数据库”,下一步;
“数据集”,下一步;
选择数据连接,下一步;
选择存储过程,在这步里我能看到我在数据库里写的存储过程selectib;
选择完成,返回选择数据源,为数据源命名DataSetHan;
为数据集命名:dsTestHan(解决方案中名称dsTestHan.xds);
在数据集设计器中,添加存储过程表适配器:添加TableAdapter;
选择数据连接;
选择命令类型:使用现有存储过程;
选择存储过程,insert、update、delete不用设置,下一步;默认设置,下一步;
完成;
报表数据窗口,新建“数据集”;
2RDLC设计原理流程图
3“Resources”参数中指定了多次
在resources 参数中指定了多次。
resources 参数不支持重复项—解决方法
做项目的时候,有时同一个项目的两个或多个窗体的功能,控件大部分都一样。
于是偷个懒,做好一个窗体后,其余的都复制过去。
到生成时会报个错误“Resources参数不支持重复项”“obj\Debug\****. ****. WinForms. ***. Frm**.resources”在“Resources”参数中指定了多次”。
本人最近也遇到了这个错误,总结了一下。
由于只是把窗体复制过去了,代码与原来的一样。
首先,要把复制的类名改成别的(public partial class和partial class两个),构造函数也要改过来,注意是自己改,不要用编辑器帮你改,不然编辑器会把原来的也改掉(包括引用),你还要把原来的再改过来。
然后是改由设计器产生的代码,修改复制的窗体下面“xxxxx.Designer.cs”文件里,“窗体设计器生成的代码”里的东西:“ ponentResourceManager resources = new
ponentResourceManager(typeof(原窗体名));”。
把里面的‘原窗体名’改为现窗体名。
(报错也就是由它引起的)。
现在重新生成是不是已经成功了。
接下来,就是把复制窗体里的一些窗体事件名修改过来。
记得把由设计器产生的添加事件的代码也改过来。
现在基本上就OK了。
如果重新生成还有错误,那就是窗体代码里或设计器产生的代码里某个地方没改过来,可以用查找找一下(ctrl+f),再改过来。
同样,复制的其他类.cs文件也需要通过这种方式手动更改名称和方法!!!。