rdlc报表的制作

合集下载

RDLC报表---自定义数据集

RDLC报表---自定义数据集
//数据集 DataSet ds = new DataSet();
//查询并填充 try {
connection.Open(); adapter.Fill(ds); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { connection.Close(); command.Dispose(); connection.Dispose(); }
//新建数据源 ReportDataSource rs = new ReportDataSource(); = "EventHistory";//"EventHistory"是rdlc报表Tablib属性下的数据集名称 rs.Value = ds.Tables[0];
//添加数据源 this.reportViewer1.LocalReport.DataSources.Add(rs);
//新建连接 SqlConnection connection = new SqlConnection(connstr);
//查询命令 SqlCommand command = new SqlCommand(textBoxSQL.Text, connection);
//适配器 SqlDataAdapter adapter = new SqlDataAdapter(command);
//指定rdlc报表 this.reportViewer1.LocalReport.ReportEmbeddedResource = "FormReport.EventReport.rdlc";
//清空reportviewer先前的数据源 this.reportViewer1.LocalReport.DataSources.Clear();

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报表(一)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报表实例

RDLC 报表开发一、打开Visual Studio 2005,新建 网站,添加数据集,会自动调出数据集配置窗口TableAdapter如果上面的窗口没有自动调出,可以如下图可以调出上面的TableAdapter 窗口二、新建立数据库连接下面的这一步会将数据库连接保存到config 文件中下面的这一步可以,选择生成SQL的方式让我们先回到SQL Server Query Analyzer打开SQL Server 查询分析器在SQL程序中创建如下图的存储过程然后回到Visual Studio 2005,选择使用现在的存储过程,下一步,在这里,我们只需要选择所需要的存储过程,如刚才建立的EmployeeReport 即可完成TableAdapter向导的配置三、添加报表项创建报表项后,从左边工具栏拖动一个Table 到报表设计器中,选择网站数据集中的字段,把它拖动到表格的列中,通过页眉页脚可以设置复杂的打印样式。

四、新建立一个ASPX页面,拖动一个Report Viewer控件到页面中,在ReportViewer任务窗口中,选择刚才建立的rdlc文件,生成解决方案,然后执行就完成了报表开发。

[ 注意:如果此处报“未能找到在ObjectDataSource ObjectDataSource1 的TypeName 属性中指定的类型”的错误,说明数据源配置不正确,可以选择正确的配置即可。

]五、注意1. 刚才的SQL 脚本CREATE 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.SelectedValue;string iprstatus = ddlStatus.SelectedValue;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入门操作

1.新建一张rdlc报表,如下图
2.选择数据源
3.在弹出框中选择要加入的dataset
4.在报表项中选择你所需要的报表项,拖到报表主体中
5.在表头中输入列名,详细信息中帮定你要统计的数据明细(用sum(字段)),表尾中显示要统计的整列数据的总和(用sum(字段)),如果要对某一类进行统计,则选种详细信息列,右键,点击“插入组”,如下图
在组的分组中,设置要分组统计的字段。

如图:绿色的是插入的组统计,红色的是表尾统计
6.新建testReport.aspx 文件,在工具栏中,把报表控件MicrosoftReportViewer拖到该页面中,如下图:
7.在reportViewer 控件中,选择报表,选择上面建的报表testReport.rdlc
8.在testReport.cs文件中绑定数据代码如下:
9.效果图:
二.报表传参数
1.选择报表—>报表参数如下图:
2.弹出报表参数设置的窗口,添加参数BudgetIdPar,设置数据类型为Integer,具体如下图:
3.报表建好后,将报表设置到test.aspx页面中,在.aspx页面中加textbox ID为“txtParm”,确定按钮,如下图
4..cs文件中,确定按钮的事件如下:
5.运行界面如下:
三.子报表。

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 Step 1DrillThrough Report

RDLC Step 1DrillThrough Report

RDL(C) Report Design Step by Step 1: DrillThrough Report前一段时间,发了几篇关于RDLC报表的随笔,由于这些随笔中没有关于报表设计方面的内容,于是不少网友和我联系,问了一些关于报表设计方面的问题,最近准备写几篇关于RDLC报表设计的随笔。

这篇随笔主要描述实现钻取报表的步骤。

钻取报表的数据源应该是两个具有主子关系的表,在这篇随笔中以Northwind数据库中的订单和订单明细作为数据源。

1、在Visual Studio 2005中创建一个Windows应用程序RDLCDR。

2、在项目中添加数据源,数据源并不一定用来为报表提供数据(当然Visual Studio 2005提供的操作非常方便),主要是在报表设计时可以方便向报表中进行字段拖曳。

添加数据源意味着在项目中添加了一个数据集Orders.xsd文件,当报表的数据不是来源于关系型数据库(如Flat Files或Web Services等)时,我们可以自己定义一个xsd文件作为报表设计时的数据源,而在程序中重新为报表载入数据。

3、在项目中添加报表rptOrder.rdlc,这个报表非常简单,不具体介绍其设计步骤。

报表文件中将显示“订单”的内容,其结构如下图1所示:图1 “订单”报表的结构4、同上,添加报表rptOrderDetails.rdlc,其结构如下图2所示:图2 “订单明细”报表的结构5、在报表rptOrder.rdlc中,选中表控件的“表详细信息”行的第一列“=Fields!订单ID.Value”单元格,右键“属性”弹出“文本框属性”对话框(如图3所示),在“导航”选项卡的“超链接操作”中,选中“跳至报表”并在下拉列表中选择报表rptOrderDetails,单击下拉列表右边的“参数...”按钮,进行入图4所示的设置。

图3 “文本框属性”对话框图4 “跳至报表”参数设置6、在报表rptOrderDetails中,使用菜单“报表”→“报表参数”进入“报表参数”对话框,并如下图5所示设置参数orderid,这个参数主要用于从rptOrder接收传值。

微软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 报表(原创)因为公司需求研究微软的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报表速成指南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报表制作详细步骤

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报表系列(六)多图表-折线图和柱状图

RDLC报表系列(六)多图表-折线图和柱状图
美好的⼀天开始了,这篇是RDLC系列的最后⼀篇⽂章,我的⼩项⽬也已经release,正在测试中。

1.新建demo3.aspx和demo3.rdlc⽂件
2.往rdlc⽂件中拖⼀个图标控件,在弹出的窗⼝中选择某⼀类“柱状图”,点击确定
3.在底部的“将类别字段拖⾄此处”区域选择你要分类的字段,这⾥为【FiscalMonth】
4.在上⾯的“将数据字段拖⾄此处”区域选择你要显⽰的数据字段,并将函数Count改为Sum,这⾥[Sum(Actual)]和[Sum(Budget)].
5.在[Sum(Budget)]字段上右击->更改图标类型,弹出的窗⼝中选择希望显⽰的类型,这⾥为折线图。

6.这样就配置完成了,F5运⾏测试,可以了。

[原创]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报表随笔⼼得,基本结构和⼀些表达式。

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报表(同时支持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报表,动态加载图片文件(二维码)我是一个程序员,有时候莫名其妙的遇到一些不好解决的问题,于是我就记录了下来,希望对大家有用!开发环境:VS2010(中文),IIS7.0,IE8及以上1、首先讲一下,我的动态的图片是一个二维码。

(1)引用一下ThoughtWorks.QRCode.dll这个DLL,如果没有的话去网上下载一个。

或ThoughtWorks.QRCode.rar者我这个word文档里面是有一个的(2)然后呢,当然要有一个存放二维码的文件夹,用来存放生成之后的二维码,这个名字随便起(3)最后,当然是报表后台的代码了,不过RDLC报表是动态生成的,要写在aspx.cs 里面,写的这么清楚了,大家不会不明白吧:private void create_two(string nr)//nr 这个参数当然是需要生成二维码的文字或字段{Bitmap bt;string enCodeString = nr;QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();bt = qrCodeEncoder.Encode(enCodeString, Encoding.UTF8);string filename = nr;bt.Save(Server.MapPath("~/QRImage/") + filename + ".jpg");}(4)当然如果报错了,报红线了,那当然要去解析一下,system.drawing神马的,去引用一下吧,当然你加进来的ThoughtWorks也要去引用一下。

(例如using houghtWorks.QRCode.Codec;)2、当然是要把生成的这个二维码放到恶心的RDLC报表上,这里讲解的是VS2010,如果环境不对,请绕路。

(1)我觉得注解的够清楚了。

(2)(3)后台代码绑定protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){string sid = Request.QueryString["id"];ReportViewer1.ProcessingMode = ProcessingMode.Local;ReportViewer1.LocalReport.ReportPath =erver.MapPath("~/Report/Report/SDBXZ.rdlc");ReportViewer1.LocalReport.EnableExternalImages = true;StringBuilder sb = new StringBuilder();sb.Append("select * from SDBXZ_View where JGJSID='" + sid + "'");string con =System.Configuration.ConfigurationManager.ConnectionStrings["CostManagementSystem"].ToString();DataSet ds = new DataSet();SqlConnection sqlcon = new SqlConnection(con);SqlCommand sqlcom = new SqlCommand(sb.ToString(), sqlcon);SqlDataAdapter sqlad = new SqlDataAdapter();sqlad.SelectCommand = sqlcom;sqlad.Fill(ds, "sql");///取得一个字段,我取得是GUIDstring guid =ds.Tables["sql"].Rows[0]["JGJSID"].ToString().Replace("-","").Trim();///生成二维码,并保存到指定目录,在最上面这个方法已经写在那里了create_two(guid);///拼接一个URL(存放图片的URL)string url = "file:///" + Server.MapPath("~/QRImage/") + guid + ".jpg";LocalReport report = ReportViewer1.LocalReport;///把URL付给参数EWM(图片绑定的参数)report.SetParameters(new ReportParameter("EWM", url)); ReportViewer1.LocalReport.DataSources.Add(newReportDataSource("DataSet1", ds.Tables["sql"]));ReportViewer1.DataBind();this.ReportViewer1.ServerReport.Refresh();}}3、测试下吧,大功告成!。

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

在 VS .NET2005 之前,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
下面就开始制作一张分组统计的简单报表:
1打开 VS ,新建一个 WinForm 程序,添加一个新建项,选择报表
2报表是要数据绑定的,因此下一步添加数据源。

可以通过添加“添加数据源”来通过数据库连接字符串链接到一个表或视图,不过也不必通过数据库来给dataset,取消弹出的“配置数据适配器”界面。

打开 dataset 直接右键添加一个“table”
3从报表设计页的“工具栏”上拖一个“表”到报表上。

此表默认有三行,header、detail、footer,顾名思义:header 即是表头,detail 就是要显示的内容,footer为表尾,可以在这里进行一些统计信息。

并且对表格进行相应的格式设计,加上表格边宽,字体居中等。

把相应的数据字段绑定上去,直接把刚才建的 dataset 的字段拖进去,在序号列加入报表的一个函数“=RowNumber(Nothing)”,RDLC 中有许多函数可以用,右击某个单元格“属性”,在“value”中点“fx”会出现函数对话框。

再加入统计行,打开报表,在 footer 行收入那列中键入“=Sum(Fields!”即求和。

再加入分组统计,点击表格,在左侧上右键“inert group”,插入一个分组,如下设置:
4最后,报表的设计如下图:
5随便建一个 Fomr 窗体,从工具栏上拖入“ReportViewer”控件,点击该控件右上方三角,选择刚刚建立的那张报表。

接着我们手动在后台写上数据绑定的代码,如下:
using System;
using ;
using ;
using ;
using ;
using ;
using ReportView
{
public partial class FrmReportView : Form
{
public FrmReportView()
{
InitializeComponent();
}
private void FrmReportView_Load(object sender, EventArgs e)
{
DataTable dt = GetData();
// DataSetFirst_DataTableFirst 必须与 RDLC 报表中为表格配置的数据源名称相同
ReportDataSource rds = new ReportDataSource("DataSetFirst_DataTableFirst", dt); ();
}
private DataTable GetData()
{
DataTable dt = new DataTable("dataname");
DataColumn("name", typeof(string)));
DataColumn("income", typeof(decimal)));
DataColumn("dept", typeof(string)));
DataRow dr = ();
dr["name"] = "张三";
dr["income"] = ;
dr["dept"] = "人事";
dr = ();
dr["name"] = "李四";
dr["income"] = ;
dr["dept"] = "后勤";
dr = ();
dr["name"] = "XJ";
dr["income"] = ;
dr["dept"] = "技术";
dr = ();
dr["name"] = "CSC";
dr["income"] = ;
dr["dept"] = "技术";
return dt;
}
}
}
6
7现在直接运行能看见如下效果:。

相关文档
最新文档