RDLC+存储过程报表设计方法
- 格式:pdf
- 大小:538.96 KB
- 文档页数:8
需求是这样的:我有一个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报表的详细使⽤说明各位技术屌丝们好,之前我⽤了很长⼀段时间通过不断的研究揣摩,终于把RDLC报表给搞透了,今天跟⼤家做个总结,希望能够帮助到⼤家。
需求分析我想把datagridview 中的数据打印出来。
⾸先新建⼀个winfrom 窗体第⼆部将数据填充到datagridview中现在我要做的是把datagridview中的数据打印出来。
打印之前⾸先建⽴⼀个窗⼝,专门⽤于存放打印控件注意红⾊标记的地⽅,尤其是访问级别处最好给public 避免出现访问不了现象。
图解:新建俩个⽂件夹。
report存放报表⽂件。
RDataSource存放数据源图解:新建⼀个数据源及⼀个报表⽂件。
新建⼀个数据表,主要⽤于报表上的传值。
由于我的数据源中只有俩个字段,所以在这⾥对于新增相同名称的字段,需要注意的是datatype这个地⽅,对于设置的数据类型新增表后会出现需要你选择数据源的地⽅,这个地⽅默认是引导新建,我们刚刚⼿动新增了我们的数据源所以这⾥我们选择以下图。
注意这是关键,不然你的数据获取不到。
⽤对象类型。
我们新增的数据源在对象⾥⾯会体现出来,需要注意的是只选择Rdataset (左)下⾯的不需要选择。
点击完成这⾥为了⽅便起见我起了跟数据源相同的名称。
这⾥数据源已经出来了,还有我们只新增了⼀个数据集(可⽤数据集)在dataset⾥⾯可以新增多个数据集,不过引⽤的时候需要注意下这⾥的可⽤数据集。
因为我们刚刚引⽤了数据源,所以在这⾥也已经有了。
报表的设置基本好了,这边报表的设计好不好看,完全取决于你的审美啦。
这⾥我们在datagridview中新增⼀个事件需要引⽤using Microsoft.Reporting.WinForms;基本到这⾥就算完成了,试着F5下吧。
直接打印即可啦!!!!花了⼀中午的时间做的教程,希望能够帮助到各位苦逼的程序员屌丝們,如果你看了对你有帮助的话同事也希望帮助到其他新⼿的话,请加⼊我们的群:28851380问题及处理⽅法找不到报表解决办法如果报表设置不是很⼤的话可以采⽤始终复制哦,如果很⼤的话就使⽤复制最新的。
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 ),其应用非常广泛,在不同行业、规模的应用里都可以看到它的身影。
[原创]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介绍在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报表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报表(一)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报表随笔……(,感谢网友”蜡人”)(一)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使用总结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报表(一)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使用总结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 报表开发一、打开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报表随笔⼼得,基本结构和⼀些表达式。
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报表使用步骤主要介绍使用业务对象数据进行报表设计的过程。
(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报表使用手册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传递参数最近要做报表,想使用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+存储过程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文件也需要通过这种方式手动更改名称和方法!!!。