RDLC报表详细讲解与分析报告

合集下载

使用RDLC报表(三)--向RDLC报表传入参数

使用RDLC报表(三)--向RDLC报表传入参数

使⽤RDLC报表(三)--向RDLC报表传⼊参数在使⽤报表向客户展⽰结果数据时,实时的在报表中显⽰某些特定的数据是必需的,如:显⽰的部门、打印的⽇期等。

本⽂只简单的演⽰向报表内传⼊⼀个字符值。

如有其它问题,欢迎讨论。

1、新建⼀个⼯程TestReport,⼀个Form窗体,放⼊⼀个TextBox、⼀个Button按钮,再放⼊⼀个ReportViewer控件。

2、在ReportViewer上选择新建⼀个报表3、在打开的报表设计器中,选择⼯具栏的“报表”中的“报表参数”,新加⼀个参数,名称为content,数据类型为string,确定。

4、在报表设计器的页⾯上放⼊⼀个⽂本框,在⽂本框上按⿏标右键->属性,在“⽂本框属性”窗⼝中,选择“常规”选项卡内下部的“值”后⾯的“编辑表达式”按钮(就是那个Fx),在此窗⼝内,左下框内选择参数,在右下框将会出现在上⼀步中设置的参数,双击此参数,在上⾯的框内将出现所需要的表达式:=Parameters!content.Value。

保存此报表。

报表默认名称为Report1.rdlc。

5、在Form窗体内双击按钮,编写如下代码:this.reportViewer1.LocalReport.ReportEmbeddedResource = "TestReport.Report1.rdlc";ReportParameter rp = new ReportParameter("content", this.textBox1.Text);this.reportViewer1.LocalReport.SetParameters(new ReportParameter[] { rp });this.reportViewer1.RefreshReport();6、运⾏⼯程,在⽂本输⼊框内输⼊数据,按下按钮,数据是不是已经传⼊报表了?。

关于VS2010RDLC报表的详细使用说明

关于VS2010RDLC报表的详细使用说明

关于VS2010RDLC报表的详细使⽤说明各位技术屌丝们好,之前我⽤了很长⼀段时间通过不断的研究揣摩,终于把RDLC报表给搞透了,今天跟⼤家做个总结,希望能够帮助到⼤家。

需求分析我想把datagridview 中的数据打印出来。

⾸先新建⼀个winfrom 窗体第⼆部将数据填充到datagridview中现在我要做的是把datagridview中的数据打印出来。

打印之前⾸先建⽴⼀个窗⼝,专门⽤于存放打印控件注意红⾊标记的地⽅,尤其是访问级别处最好给public 避免出现访问不了现象。

图解:新建俩个⽂件夹。

report存放报表⽂件。

RDataSource存放数据源图解:新建⼀个数据源及⼀个报表⽂件。

新建⼀个数据表,主要⽤于报表上的传值。

由于我的数据源中只有俩个字段,所以在这⾥对于新增相同名称的字段,需要注意的是datatype这个地⽅,对于设置的数据类型新增表后会出现需要你选择数据源的地⽅,这个地⽅默认是引导新建,我们刚刚⼿动新增了我们的数据源所以这⾥我们选择以下图。

注意这是关键,不然你的数据获取不到。

⽤对象类型。

我们新增的数据源在对象⾥⾯会体现出来,需要注意的是只选择Rdataset (左)下⾯的不需要选择。

点击完成这⾥为了⽅便起见我起了跟数据源相同的名称。

这⾥数据源已经出来了,还有我们只新增了⼀个数据集(可⽤数据集)在dataset⾥⾯可以新增多个数据集,不过引⽤的时候需要注意下这⾥的可⽤数据集。

因为我们刚刚引⽤了数据源,所以在这⾥也已经有了。

报表的设置基本好了,这边报表的设计好不好看,完全取决于你的审美啦。

这⾥我们在datagridview中新增⼀个事件需要引⽤using Microsoft.Reporting.WinForms;基本到这⾥就算完成了,试着F5下吧。

直接打印即可啦!!!!花了⼀中午的时间做的教程,希望能够帮助到各位苦逼的程序员屌丝們,如果你看了对你有帮助的话同事也希望帮助到其他新⼿的话,请加⼊我们的群:28851380问题及处理⽅法找不到报表解决办法如果报表设置不是很⼤的话可以采⽤始终复制哦,如果很⼤的话就使⽤复制最新的。

关于Report.rdlc的使用

关于Report.rdlc的使用

最近在数据展示上用到报表,很多情况下我们都是动态生成数据,再将数据绑定到报表上。

下面是我的个人总结:1.首先我使用的是普通的报表,而不是水晶报表。

既使用的是rdlc类型的报表。

2.要将报表展示出来当然就离不开ReportViewer.在开发中经常会多个rdlc共用一个窗体中的ReportViewer来将数据展示。

而不同的rdlc的数据及字段都是各不相同的。

由于是动态生成的。

我们无法直接从数据库表中找到对应的表,因而在设计rdlc的时候我们通常采用两种方式。

一是在数据库中建立一个临时表,表所对应的字段就是我们的动态生成的数据中将包含的字段,注意这时表的字段一定要与动态生成的数据中的字段一至,否则在编译的时候就会出错。

二是直接通过添加数据集来实现,在项目解决方案中添加新项:数据集(DataSet),再给数据集添加表,给表添加列,这时候也要保证列名与动态生成的数据的列名字段一至,采用这种方式我们可以将所有报表中将要动态生成的数据中的字段都添加过来。

这样只需一个数据集一个表就可以实现,从而不必要在数据库中创建临时表。

虽然数据库中的临时表我们会删除。

有了数据源我们在设计报表的时候就可以直接从数据源中将想要的列直接拉到报表设计器中既可。

这样动态生成的数据对应的字段值将绑定到此处。

这时候我们会看到类似Fields! 字段1.Value的表达式。

当然我们也可以在此基础上对报表进行更进一步的处理。

比方设置表头表尾,并给出一些求和的值。

3.报表设计好了,下一步就是给ReportViewer绑定这张报表了。

由于我的ReportView在每次用于选择不同的分类时绑定不同的rdlc,因而我们可以在代码中将要绑定的报表通过参数传入,再过rptViewer.LocalReport.ReportEmbeddedResource = "";或rptViewer.LocalReport.ReportPath="" 为ReportViewer提供报表数据。

报表设计器RDL报表操作指南

报表设计器RDL报表操作指南
报表设计器 RDL 报表操作指南
葡萄城报表提供了一个高度集成的设计器,并以可视化、代码、脚本或表达式的方式来编 辑报表。它包括一个属性窗口,可以在该窗口中设置每个元素的属性。
设计器支持三种类型的报表:RDL报表、页面报表、区域报表。本章介绍RDL报表的具体 操作。
1. RDL 报表
Rdl报表给我们提供了最大限度的报表交互能力。可以放大和缩小控件,设置交互式排序, 设置钻取报表,还可以添加指向其它报表的钻取链接和指向报表内其它区域的书签链接。下面 详细介绍RDL报表。
文本框 文本框用于显示报表数据,Table 和 Matrix 单元格中默认显示的是文本框控件,当您从报 表资源管理器中将数据字段拖拽到报表界面时,生成的也是文本框控件。您可以通过表达式来 修改数据的显示行为。
1.5 属性窗口
在设计报表时,属性窗口是非常重要的工具。可以选择任何数据区域、控件或报表本身并 在属性窗口中查看其属性。默认情况下,此窗口位于报表设计区域的右侧。您可以通过单击属 性窗口顶部的“按字母顺序”或“按类别顺序”显示属性列表。
列表 列表中可以放置其他报表控件。它会根据数据集中的数据重复地显示区域内的控件。 距表 距表支持动态数量的行和列。此功能与交叉表和数据透视表类似。 形状 形状不与具体的数据关联。可用于显示一个控件的边界,或者高亮显示报表中特定区域的 数据,支持的形状有矩形,圆角矩形和椭圆。与Container不同的是,该控件内不能放置其他 控件。 迷你图 迷你图以一个很小的图像来展示数据的趋势,支持折线、面积、堆积条形、柱状和须状图 表类型。 子报表 子报表以子报表的形式显示其他报表的内容。可以从主报表中将参数传递给子报表以实现 数据过滤。需要注意的是每个子报表都以单独的报表运行,当处理大数据报表时,这种方案可 能会影响到运行的速度,这种情况下,数据区域是更为合理的选择。 表格 表格以行为单位进行数据显示。默认情况下,表格有三行、三列。表格列的设置是在设计 时完成,行会根据数据集中的数据进行重复显示。表格默认会显示表头、明细和表尾,表头和 表尾和删除,此外您还可以添加/删除分组头和分组尾,表格的单元格默认包含一个文本框控 件,不过您可以将文本框控件替换为其他任意类型的报表控件。 文档目录 用于制作报表目录。 地图 用于制作地图报表。

[原创]RDLC报表系列(五)RDLC报表分组-大熊的空间-博客园

[原创]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报表一、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报表

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)的功能,在一个复杂的交叉表中可以进行时间和商品两个维度的向下钻取。

VS2010RDLC报表的使用心得

VS2010RDLC报表的使用心得

VS2010RDLC报表的使用心得VS2010 RDLC 报表的使用心得2012-10-29 08:38 3346人阅读评论(0) 收藏举报分类:Report(16) VS(43)在哪个WORD文件里看到的,不得不说微软的东西很傻瓜化,但是个人感觉用之前一头雾水,费了九牛二虎之力搞清楚了之后发现只不过如此。

为了让新入手VS2010 报表的朋友少走些弯路,也为了帮助记忆,特此写下一些东西。

一、报表绑定的数据集是一个带参数的结构化存储过程怎么办?在添加了一个一个带参数的结构化存储过程(该存储过程暂且叫SP)后,会发现如下提示:向导在配置TableAdapter检测到以下问题:"SP":详细信息:已生成SELECT语句。

Invalid object name '#临时表名'.要将这些组件添加到数据集中,请单击"完成"。

看到上面的错误提示,怎么办?不用管,直接完成(该数据集暂且叫DS)。

这时候来到报表设计,添加数据集会发现刚才建好的数据集DS没有字段。

解决办法是打开报表的XML格式,找到数据集,添加字段。

如下:1. <DataSets>2. <DataSet Name="DS">3. --开始添加4. <Fields>5. <Field Name="字段名">6. <DataField>字段名</DataField>7. <rd:TypeName>System.String</rd:TypeName >8. </Field>9. </Fields>10. --结束添加11. <Query>12. <DataSourceName>ReportsDataSet</DataSourc eName>13. <CommandText>/* Local Query */</CommandT ext>14. </Query>15. <rd:DataSetInfo>16. <rd:DataSetName>ReportsDataSet</rd:DataSet Name>17. <rd:SchemaPath>...</rd:SchemaPath>18. <rd:TableName>TableName</rd:TableName>19. <rd:TableAdapterFillMethod>Fill</rd:TableAdap terFillMethod>20. <rd:TableAdapterGetDataMethod>GetData</rd: TableAdapterGetDataMethod>21. <rd:TableAdapterName>T ableAdapter</rd:Table AdapterName>22. </rd:DataSetInfo>23. </DataSet>24. </DataSets>添加完以后,把RDLC报表关了重新打开,就能看到数据集的字段了。

RDLC报表详细讲解与分析报告

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报表随笔心得,基本结构和一些表达式。

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和ReportViewer

真正地全动态报表RDLC和ReportViewer

阅读本文需要有XML解析及 相关经验。

本文编译器使用Visual Studio 2005数据库采用XML格式ReportView 版本为 版本为2.0一、水晶报表的缺陷Crystal Repotrs的功能固然很强大,但是对我们写程序的人来说,是否支持动态生成才是最重要的。

如果报表只能静态生成再嵌入到程序中,实在有些没意思。

不巧的是强大的水晶报表这一点做的很不好,我们可以在程序中动态修改数据源,也可以动态修改文本和字段,但是报表的一大特色,数据图表,却只能静态生成。

也就是说,假如我设计报表时添加了一个图表,用户希望能在多个字段中选择自己想显示的,动态显示到图表中,水晶报表就做不到。

对它来说,我们至多只能在程序中得到一张位图,这样就没有意义了。

这个时候我发现了ReportViewer,它用来显示RDLC语言表述的报表。

RDLC最初被用在SQL Server for XML上。

它实际上是一个XML文本,这就意味着我们在程序中很容易更改它的构架。

ReportViewer是RDLC的浏览器,本身没什么好说的,需要注意的是它的数据源必须是DataTable对象。

二、结构模型猛的一看有点复杂呵呵,其实还是挺简单的。

数据源可以是传统数据库,也可以是XML表格Data Adapter 及Connection 等用来连接传统的数据库DataSet用来存储数据,同时可以直接操作XML文件BindingSource利用DateSet来填充BindingSource,这一步数据中转逻辑上有点多余,但是必不可少ReportDataSource利用BindingSource来填充ReportDataSource,......-_-!!ReportViewer利用ReportDataSource填充的数据及指定给它的RDLC报表文件来显示报表三、示例代码请大家注意:1.这里我呈现给大家的只是如何实现报表,报表本身的制作及RDLC描述语言不在讨论范围。

csdn rdlc报表使用手册

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属性,将控件与数据集中的字段进行绑定。

微软rdlc报表

微软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报表使用步骤主要介绍使用业务对象数据进行报表设计的过程。

(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中。

[原创]RDLC报表系列(四)子报表的使用-大熊的空间-博客园

[原创]RDLC报表系列(四)子报表的使用-大熊的空间-博客园

[原创]RDLC报表系列(四)⼦报表的使⽤-⼤熊的空间-博客园[原创] RDLC 报表系列(四)⼦报表的使⽤本⽂只代表作者在⼀定阶段的认识与理解⼀.写作前提前⾯⼏篇中我讲了如何去实现⼀个RDLC报表、插⼊图⽚、参数传递及常⽤表达式的使⽤。

这⼀节我们将focus on⼦报表的使⽤。

假设有⼀天,你的⽼板和你说,公司需要做所有员⼯的出出差记录,这时⼦报表的应⽤关于怎样创建⼀个RDLC报表等相关内容,前查看我之前的⽂章,这⾥就不在阐述了。

[原创] RDLC 报表系列(⼀)创建⼀个报表[原创] RDLC 报表系列(⼆)报表中插⼊图⽚ [原创] RDLC 报表系列(三)参数、常量及常⽤表达式的使⽤⼆.本⽂内容1. RDLC报表模板的设计2. Base的修改3. 调⽤⽣成报表4. 总结5. 代码下载(下载)三.RDLC报表模板设计本篇要做的是⼀个含有⼦报表的报表,所以,最少我们需要两个报表模板,⼀个是Master.rdlc,另外⼀个是Sub.rdlc。

Ok,下⾯我们就来啰嗦⼀下怎么设计模板⽂件吧。

1. 在VS(本⼈⽤的是2008的Version,⾃从⼩2003之后都⽀持.rdlc报表)中创建⼀个新的web application项⽬。

2. 新增两个新的报表⽂件,⼀个名叫master.rdlc,⼀个名叫sub.rdlc(在选择的时候要注意选择如下)。

3. 现在我们已经有报表模板⽂件了,再创建主报表和⼦报表所需要使⽤的数据类型(所需要的DataSet类型,具体可参阅[原创] RDLC 报表系列(⼀)创建⼀个报表),这⾥并不多做解释了。

4. 打开style="mso-bidi-font-weight:bold">master.rdlc⽂件,从⼯具箱中拖⼊⼀表格控件,设计你所需要的格式,选择所需要的数据源类型,然后在你需要使⽤⼦报表的地⽅从⼯具臬中插⼊⼀上SubReport控件,如5. 然后右击这个SubReport控件,在属性中选择这个⼦报表指向哪个⽂件,我们可以选择刚才创建的那个sub.rdlc⽂件。

RDLC报表系列(一)简单的动态数据绑定和配置

RDLC报表系列(一)简单的动态数据绑定和配置

RDLC报表系列(⼀)简单的动态数据绑定和配置RDLC系列链接最近新换了⼯作,终于从单纯的开发中脱离出来,换成主运维和偶尔开发了,但还没有转⾏。

本来打算找⼯作是想转⾏的,毕竟三线城市搞IT,以后真的不好说。

最近经理让给财务做⼀个报表展⽰系统。

由于之前⼀直都是做B2C的⽹站,流程和报表⽅⾯⼏乎没有涉猎。

只能从博客园和csdn上来查找资料,由于⼤部门⼈都是⽤的⽔晶报表,RDLC的资料挺少。

所以找了好久,也⾃⼰实验了好久,终于项⽬第⼀期做的项⽬差不多了,今天在家休息,就拿出点时间来整理⼀下。

这个项⽬分两期,第⼀期主要是数据表的展⽰,第⼆期会有矩阵,折线图和柱状图的使⽤。

所以,⽂章先把⾃⼰使⽤到的整理出来。

参考的⽂章链接如下: 下⾯就按照我的步骤先来个简单的栗⼦吧。

1.新建项⽬,这个⼤家都会了吧。

就不唠叨了,按照⾃⼰的习惯命名就好,我这⾥是demo1 2.然后是新建数据源,在⽹站或者项⽬上右击,添加—>新建项—>数据—>数据集,命名为demo1.xsd,点击确定 3.在数据源页⾯拖⼊DataTabel,按照下图设计表结构 4.新建报表,在⽹站或者项⽬上右击,添加—>新建项—>Reporting—>报表,命名为demo1.rdlc,点击确定 5.下⾯是重头戏,设计报表,在左侧的报表项中选择表,拖到右边的⽩⾊区域,会弹出如下对话框,输⼊名称选择数据源以及数据集,点击确认然后将需要显⽰的字段添加到表中即可。

6.新建⼀个页⾯,名称demo1.aspx,在页⾯设计中拖⼊ScriptManager和Reportview控件 7.然后开始写后台绑定数据的代码了,如下 demo.aspx.cs1using System;2using System.Collections.Generic;3using System.Linq;4using System.Web;5using System.Web.UI;6using System.Web.UI.WebControls;7using System.Data;8using System.Data.SqlClient;9using Microsoft.Reporting.WebForms;1011namespace rdlc112 {13public partial class demo11 : System.Web.UI.Page14 {15protected void Page_Load(object sender, EventArgs e)16 {17if (IsPostBack == false)18 {19 FillDataToReport();20 }21 }2223private void FillDataToReport()24 {2526// DataTable dt1 = GetDataTabel();2728//if (dt1.Rows.Count > 0)29//{3031//}3233 DataTable dt = new DataTable();34 dt.Columns.Add("Dept", typeof(string));35 dt.Columns.Add("CostCenter", typeof(string));36 dt.Columns.Add("SalePrice", typeof(decimal));37 dt.Rows.Add("IT", "810", 867);38 dt.Rows.Add("IT", "811", 877);39 dt.Rows.Add("E", "710", 867);40 dt.Rows.Add("E", "711", 877);41 dt.Rows.Add("L", "710", 867);42 dt.Rows.Add("L", "711", 877);434445 ReportViewer1.LocalReport.ReportPath = "demo1.rdlc";4647//显⽰报表48 ReportViewer1.LocalReport.DataSources.Clear();49 ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("dtDemo", dt));//要和设计报表时指定的名称⼀致,这⾥是dtDemo50 ReportViewer1.LocalReport.Refresh();515253 }5455 }56 }View Code 8.⼀切貌似都⼤功告成,F5运⾏,弹出如下报错。

RDLC报表使用手册

RDLC报表使用手册

RDLC使用手册1、为什么要使用RDLC报表为什么要使用RDLC报表,蜡人张在其博文“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报表速成指南

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)); }} 浏览⼀下页⾯,就能看到在线报表了:。

RDLC报表(同时支持WebForm和WinForm,有图有源码)-Vincent.Q-博客园

RDLC报表(同时支持WebForm和WinForm,有图有源码)-Vincent.Q-博客园

RDLC报表(同时⽀持WebForm和WinForm,有图有源码)-Vincent.Q-博客园RDLC报表(同时⽀持WebForm和WinForm,有图有源码)五⼀放假,研究了下RDLC,之前⼀直有⼈说如何强⼤?研究之后才发现,确实很强⼤.微软的这套东西,感觉是借鉴了Sybase的数据窗⼝,配置⽅式⼤同⼩异咯.我们现在看看这套东西如何使⽤?有句话叫:别看⼴告看疗效,这⾥我在举两个简单的例⼦,如图-1和图-2所⽰.⽰例⼀:点击功能系统名称链接字段,会跳转到图-2所⽰的功能系统下所包含的功能模块列表.图-1图-2我们看看是如何制作出来的?这⾥我使⽤的是VS05版本,VS08当然也可以的.新建报表⽂件,如图-3所⽰图-3创建之后,如图-4所⽰,之后,报表需要⼀个数据源.在左侧可以新建数据源的,这⾥有必要说明⼀下,数据源⽀持3种类型,除了⾮常常⽤Db表之外,还包括 WebService和对象另外两种,WebService不必过多解释,对象是指某个Class类,对,没错.就是某个Class.图-4如图-5所⽰,是我根据对象创建好的报表⽂件图-5说明1. 这是如图-2所⽰的设计⽂件,它需要根据ModuID字段过滤,也就是说,我点击moduname2进⼊,只过滤出moduid2的功能模块列表;点击moduname3进⼊,只过滤出moduid3的功能模块列表.2. 这需要设置过滤参数,我原以为会有代码实现.结果只是配置下就可以了.配置⽅式如图-6所⽰图-63. 选择”报表”,在右侧下⾯⾥可以找到.然后设置ReportParameters属性,设置弹出的页⾯增加参数即可4. 看图-6的截图,包括两个部分,第⼀部分是标题,是⼀个textbox,第⼆部分其实是⼀个table,与⽔晶报表相⽐,它是⼀个整体.我们也需要对它进⾏设置过滤参数.这个过滤,我找了半天才找到的图-75. 设置好之后,这个⼦表的设计⼯作就结束了.我们再看看图-1所⽰的报表⽂件如何改动?既然要点击moduname栏⽬值就要跳转,⾃然要设置它的导航功能.如图-8图-86. 选中这列,属性中,切换到”导航”tab页⾯,超链接操作⾥,跳⾄报表选择刚才那个功能模块⽂件就可以了.之后,还要设置传⼊参数就可以了7. 我们看看代码是如何实现的,如图-9和图-10所⽰图-9图-10⽰例⼆:图表展⽰,看下最终效果图,如图-11所⽰图-11OK,我们还是看看如何制作出来的,数据源的创建和加载和前⾯⼀样,不再描述.1. 先看图表的数据源是什么?即⽉份,计划投资额,实际投资额,如图-12所⽰图-122. 再设置下图表的属性就可以了,如图-13所⽰图-133. 图表设置a) 常规页⾯中,可以设置图表的标题b) 数据页⾯中,”数据集名称”就是图表的数据源名称c) 数据页⾯中,”值”就是Y轴的数据,这⾥两个两个,如图-14所⽰d) 数据页⾯中,”类别组”就是X轴的数据,注意这⾥的标签配置项,如图-15所⽰图-14图-15上⾯的⽰例,在我提供的⽂件⾥都有下载,⽽且还有⼀个系列教程,也不错.这⾥还有两篇推荐博⽂⽰例代码,⾥⾯还包括⼀个教程,推荐⼤家参考RDLC报表.Files分类: 经验技巧标签: RLDC。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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的一些相关操作,如何自定义纸等等,欢迎大家提出参考意见。

(二)需要说明的是,现在关于VS. NET 2005中的Report Viewer Con trol的容非常少,我只能按照自己的理解来说一些东西,这其中肯定会有一些偏差,欢迎各位的批评指正。

另外,我所涉及的容都是关于LocalReport的,对于ServerReport没有进行研究。

在这篇随笔中,我主要分析一下GotReportViewer上的几个经典例子,我们可以从中看到R eportViewer Control的强大功能:1、Web Log Analyzer这是一个比较典型的OLAP应用,我们可以看到RDLC报表强大的Ch art和Navigation功能。

当然了,例子中解析W3C标准日志文件的代码也非常有借鉴意义。

这个Starter Kit在我的随笔blogs./archive/2006/01/19/320280.htm l中曾经提到过,不再详述。

2、子报表展示如何使用子报表显示主记录的详细信息,这种应用很像Access中的子报表功能。

主要使用SubreportProcessing事件为子报表提供数据。

3、钻取报表钻取报表是通过设置Navigation(HyperLink)和Parameters来实现的,通常在OLAP应用程序中很有用。

4、具有子报表的钻取报表这个例子实现的功能类似Excel中数据透视表(Pivot Table)的功能,在一个复杂的交叉表中可以进行时间和商品两个维度的向下钻取。

这在别的报表中恐怕是很难实现的。

如图所示,5、引用外部代码块此示例演示从另外一个类Util中读取函数返回值到报表中:首先,使用LocalReport的AddTrustedCodeModuleInCurrentAppDomain方法允许Util类中的方法在R eport Viewer中执行,然后在报表中使用TextBox控件的Value节点调用Util中的静态方法Factorial在报表中显示其返回值。

另外一个相关的示例基本上与此相同,只不过在Util类中访问一个文本文件并将该文本文件中的字符显示在报表中6、导出到ExcelRDLC报表导出到Excel中的效果非常好,曾经看到另外一个报表设计器(好像就是Crystal Report)导出为Excel文件后的效果非常差,单元格根本不对齐,用户无法在其基础上进行二次操作,而RDLC报表导出的Excel文件就没有这个缺点,而且基本上完全保留了原报表设置的格式。

如图所示,可以直接使用Report Viewer控件自带的按钮生成Excel文件,也可以使用如下代码来完成操作:Microsot.Reporting.WinForms.Warning[] Warnings;string[] strStreamIds;string strMimeType;string strEncoding;string strFileNameExtension;byte[] bytes = this.rptViewer.LocalReport.Render("Excel", null, out str MimeType, out strEncoding, out strFileNameExtension, out strStreamIds, o ut Warnings);string strFilePath = "D:\report.xls";using (System.IO.FileStream fs = new FileStream(strFilePath, FileMode.C reate)){fs.Write(bytes, 0, bytes.Length);}对于LocalReport的Render方法,以后的随笔中将进行详细阐述。

7、交互排序在RDLC报表的众多交互功能中,这个功能是比较新颖的,终端用户可以通过报表中列标题上的图标进行数据的排序,而预览及打印的效果完全取决于用户的排序。

[此处好像有一个Bug,即对数据进行一种排序后的预览效果会保持不变,除非再次开启这个应用程序并重新排序。

]而这一切不需要在代码中做任何操作,只需要在报表定义文件中添加< UserSort>节并指定相应的SortExpression和SortExpressionScope。

8、RSS新闻阅读器用ReportViewer实现RSS新闻阅读器?是的!如图所示,当然这个sample是为了展示对Object类型数据源的支持,报表参数Repo rtParameter的使用也在其中得到体现。

9、允许钻取的主子表另外一种允许向下钻取的主子报表。

如图所示,10、从命令行中打印报表RDLC报表允许用户不通过ReportViewer图形界面直接使用代码控制输出和打印,还是使用LocalReport的Render方法,以后的随笔中将参照这个示例介绍一个如何自定义纸的方法。

11、票据生成这个示例允许用户输入一个单据及其明细后直接生成一个可供打印的票据。

如图所示,12、动态生成一个RDLC文件这可能是一个最最重要的示例了,RDLC文件是用XML来描述的,可以直接使用代码生成之,这样的报表就可以非常灵活了。

像网上比较流行的从DataGridView直接预览、打印数据的程序完全可以用这种方法来替代;进一步引申的话,完全可以实现一个自己的基于RDLC的报表设计器,这样可以让终端用户参与到报表的设计中,至少可以使他们能够修改报表中一些标题、表头等。

GotReportViewer还提供了几个其他的例子,如设置报表参数、通过Emai l邮寄报表等,由于不是非常典型,不再赘述。

GotReportViwer不知道为什么最近上不去了,有需要这些例程的朋友可以留下Email。

(三)仔细想了一下,我觉得一篇step by step的随笔似乎是不必要的,由于RDLC报表设计时的简易性,任何有报表经验的人都可以在摸索后很容易就掌握其报表的设计方法。

本来在这篇随笔中想谈一下对RDLC报表文件的解析,但是MISGoldPrinter的作者flygoldfish(长流支流)已经对这方面进行了详细的总结(见/flygoldfish/archive/ 2005/12/16/554035.aspx),长江支流对报表非常有研究,建议大家到他的Blog上看看,不过我觉得他实现的金质打印通完全可以用RDLC报表中的容所替代,这只是个人意见,希望以后能见到他的更多作品。

另外,我手头有一份RDL规(Report Definition Language Specificati on),非常值得阅读,推荐给大家.cnblogs./Files/waxdoll/RDLCS.rar。

两幅截图:MatrixTable本来打算不要这篇随笔了,因为没有什么具体的容,但为了保证完整性,还是放在这吧,不过我不放在首页了,免得污染大家的视线,呵呵……下一篇随笔可能是关于Table和Matrix这个两个控件的,不过我还没具体想好。

(四)....RDLC 报表中有一个概念叫数据区域(Data Region),数据区域是数据绑定的报表项目,在 数据区域中可以显示来自数据集的多行数据。

RDLC 报表设计器中的数据区域包含控件面板 上的一系列控件:List、Table、Matrix、Chart,如图所示,List 控件的用处在于这是一个在其中可以自由安排像 TextBox、Image 等 控件;Chart 控件用于显示图表,和 Excel 中的图表比较相似。

这篇随笔不会涉及到这两个 控件,主要讲一下 Table 和 Matrix 两个控件。

先来看 Table 控件。

Table 控件有多个部分组成,如标题行(header)、表 尾(footer)、数据行(detailed rows)、分组表头(group header)、分组表尾(group foote r)等,如图所示,.下载可编辑.....之所以设计这样一个控件,我想 Microsoft 一定是在简化报表的设计:在这个控件未出现之前,我们看一下一个具有 heaer、detailed rows 和带 统计信息的 footer 的报表时如何实现的。

相关文档
最新文档