RDLC报表总结

合集下载

关于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提供报表数据。

[原创]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报表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报表详细讲解与分析报告

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

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报表数据汇总分组展⽰1.从⼯具箱拉出表或者矩阵(本次使⽤的是矩阵)2.选择需要的数据集,没有就新建⼀个数据集,名称⾃⼰起好,下⾯有⽤到3.将⾏组和⾏列显⽰出来(右击报表--试图=>)4.双击⾏组下的RowGroup组=>常规=>组表达式=>分组⽅式,点击FX 选择类别=>字段(DbSetName)=>双击右边的值(选择你要的分组依据),或者直接点击页⾯矩阵上⾏右上⾓的图标添加分组依据(第3步图)。

5.右击⾏组--RowGroup组,添加组=>⼦组,同第3步⼀样fx 之后的步骤6.如果在这个组下有其他数据要展⽰,右击你添加好的⾏组所在视图的⽂本框=>插⼊列=>组内部-右侧(位置左右⾃⼰挑)7.后台代码var list=XXX,在数据层拿到T-SQL数据直接输出为PDF下载到本地excel格式:var bytes = viewer.LocalReport.Render("Pdf")中把 “PDF”替换”EXCEL“;Response.ContentEncoding = Encoding.GetEncoding("GB2312"); 把 “GB2312”替换"application/vnd.ms-excel";1protected void Page_Load(object sender, EventArgs e)2 {34if (IsPostBack) return;5try6 {7var list = new reportBL().report();8if (list.Count == 0)9 {10 Response.Write("没有信息!");11return;12 }13 DataTable dt = ListToDataTable(list);14var viewer = new ReportViewer();15 viewer.LocalReport.ReportPath = @"Rpt\Rdlc\SampleForm.rdlc";16 viewer.ProcessingMode = ProcessingMode.Local;17//这⾥把建好的数据集的名称替换掉DataSetName18var rds = new ReportDataSource("DataSetName", dt);19 viewer.LocalReport.EnableExternalImages = true;20 viewer.LocalReport.DataSources.Clear();21 viewer.LocalReport.DataSources.Add(rds);22 viewer.LocalReport.EnableExternalImages = true;23 errCode = 8;24 viewer.LocalReport.Refresh();25var bytes = viewer.LocalReport.Render("Pdf");26 errCode = 10;27 Response.ContentType = "application/pdf";28//设定编码⽅式,若输出的excel有乱码,可优先从编码⽅⾯解决29 Response.Charset = "gb2312";30//Response.Charset = "utf-8";31 Response.ContentEncoding = Encoding.GetEncoding("GB2312");32//关闭ViewState,此属性在Page中33 EnableViewState = false;34//filenames是⾃定义的⽂件名35 Response.AppendHeader("Content-Disposition", string.Format("attachment;filename={0}.pdf", DateTime.Now.ToString("yyyyMMddHHmmssffff"))); 36//content是步骤1的html,注意是string类型37 Response.BinaryWrite(bytes);38 Response.End();394041 }42catch (Exception ex)43 {4445 Response.Write(ex.Message + ":" + errCode);46 }4748 }49public static DataTable ListToDataTable<T>(IList<T> list, params string[] propertyName)50 {51var propertyNameList = new List<string>();52if (propertyName != null)53 propertyNameList.AddRange(propertyName);54var result = new DataTable();55if (list.Count > 0)56 {57 PropertyInfo[] propertys = list[0].GetType().GetProperties(); 58foreach (PropertyInfo pi in propertys)59 {60if (propertyNameList.Count == 0)61 {62 DataColumn dc = new DataColumn();63 dc.AllowDBNull = true;64 dc.ColumnName = ;65 dc.DataType = pi.PropertyType;66 result.Columns.Add(dc);67 }68else69 {70if (propertyNameList.Contains())71 result.Columns.Add(, pi.PropertyType);72 }73 }7475for (var i = 0; i < list.Count; i++)76 {77var tempList = new ArrayList();78foreach (PropertyInfo pi in propertys)79 {80if (propertyNameList.Count == 0)81 {82object obj = pi.GetValue(list[i], null);83 tempList.Add(obj);84 }85else86 {87if (propertyNameList.Contains())88 {89var obj = pi.GetValue(list[i], null);90 tempList.Add(obj);91 }92 }93 }94object[] array = tempList.ToArray();95 result.LoadDataRow(array, true);96 }97 }98return result;99 }View Code。

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报表

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和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报表系列(四)⼦报表的使⽤-⼤熊的空间-博客园[原创] 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 报表(原创)因为公司需求研究微软的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报表系列(⼀)简单的动态数据绑定和配置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报表(同时支持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。

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

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

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语句、新建存储过程、使用现有存储过程。

根据需求选择一种配好自己的数据源。

6.设计报表(绑定数据集)打开建好的rdlc报表文件,双击添加的图表,会看到下图几个区域:工具栏—数据—显示数据源找到刚刚创建的数据集,将对应的字段方别拖放到数据字段区、类别字段区。

序列图例会根据数据字段自动生成。

现在可以修改图表的属性来修改柱形图的配色、X和Y轴的间距、示例序列的文字、网格线的显示样式等丰富的设置来设计自己的图表。

7.打开新建的aspx页面,在ReportViewer任务窗口中,选择刚才建立的rdlc文件如下图:选择报表中选择刚刚新建的ReportDemo.rdlc报表8.保存,编译如果配置的数据源为Sql语句方式,或者是不带参数的存储过程,此时就可以浏览一下aspx 页面,不用写一句代码就可以看到一个柱形图的报表。

三、动态生成报表实际项目开发中,我们多会采用带参数的存储过程来获得想要的数据,这样就能根据条件有选择的查看数据,而不是每次都查看全部,这就涉及到传递参数,动态生成报表。

可以在前台页面设置查询条件,然后获取条件后重新为报表绑定数据源。

后台代码如下:当然,也可以不配置数据集,而是在后台代码通过或者企业库等获得DataSet,然后再动态绑定到报表。

示例后台代码:四、控制报表自带的导出格式RDLC自带丰富的导出格式,导出的Excel文件格式非常完美,任何其它报表在这方面都不能与之比拟。

但是有时候我们不需要一些格式,比如不需要pdf等格式,怎么实现?另外:ReportViewer的一些属性可以控制工具条上一些按钮的显示ShowFindControls 是否显示查找ShowPageNavigationControls 是否显示分页ShowPrintButton 是否显示打印ShowRefreshButton 是否显示刷新ShowZoomControl 是否显示调整大小五、ReportViewer control - Choosing between LocalReport andServerReportThere was a similar discussion in this group previously. You can refer the same: /Forums/en/vsreportcontrols/thread/1b06b84a-3c6e-40f1-908e-07 e332a45a04 [ReportViewer control local and remote mode differences]Both Local Mode and Remote mode has their own advantages.. This is completely based on your requirement you can choose Local mode or remote mode of report processing.When to Use Local ProcessingLocal processing mode is recommended for applications that include small to medium-sized reports and datasets. Because all data and report processing is performed on the client, you might encounter performance degradation or memory limitations if you attempt to process large or complex reports and queries.Local processing mode is less scalable than remote processing and is intended for standalone applications that do not require a report server. Users who are familiar with server reports that run on a remote SQL Server Reporting Services report server should note the following differences: In remote processing mode, the report server both retrieves the data and processes the report, whereas in local processing mode, the ReportViewer control processes the report only, and the the host application must retrieve the data and supply it to the ReportViewer control.Client report definitions do not include query information.Report parameters in client report definitions (.rdlc) do not map to data source query parameters.There is no parameter input area for a client report definition that accepts values that are subsequently used in a queryWhen to Use Remote ProcessingServer-based reporting lets you centralize report storage and management, set policies and secure access to reports and folders, control how reports are processed and distributed, and standardize how reports are used in your business. Reporting Services can be installed in single-server, distributed, and clustered configurations. Consider using remote processing if your report has the following characteristics:Report will be accessed by many users.Report has a very complex query or contains a very large amount of data, resulting in system resource overload on the computer that hosts the application.Report is already published on a report server, and you want to include it an application that you create and deploy.Reference articles:/en-us/library/ms251704.aspx [Configuring ReportViewer for Local Processing]/en-us/library/ms252075(VS.80).aspx [Configuring ReportViewer for Remote Processing]Hope this helps!本地报表模式和远程模式各有各的优点,到底选择本地模式还是远程模式完全取决于你的需求。

何时选用Local Report?当应用中涉及到的报表较简单,处理的数据集较小时推荐使用Local Report,因为Local Report模式所有的数据和报表处理都在本地执行。

当处理数据量大、逻辑复杂的报表时就可能遇到性能下降和内存不足的问题。

相关文档
最新文档