真正地全动态报表RDLC和ReportViewer.docx

真正地全动态报表RDLC和ReportViewer.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
真正地全动态报表RDLC和ReportViewer

阅读本文需要有 XML解析及 ADO.net 相关经验。本文编译器使用 Visual Studio 2005 数据库采用XML格式 ReportView 版本为2.0 .net版本为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描述语言不在讨论范围。ADO.net同样不在讨论范围,感兴趣的读者可以参考这篇文章:《用VC轻松实现 ADO.net》。2. 如果按照MSDN上介绍的步骤,可以在VB或C#等语言中实现报表显示,但不能用在VC中,因为向导可能产生中文变量,而VC目前还不支持中文变量。请使用VC的读者按照我介绍的步骤来实现。1.制作报表  新建一个空项目,在解决方案资源管理器中右键点项目名,添加新建项,找到Report,起个名字,点确定。  具体的制作不在这里说了,请参考相关的文章,或者下载我的示例代码,里面有两个做好的报表文件。  2.制作XML数据库文件  ADO.net连接传统数据库这里就不多说了,参见上面那篇链接文章。  方法1:   安装了SQL Server for XML的话,直接建立数据库模型生成XML文件即可。  方法2:  如果没有安装SQL Server for XML,需要绕个弯子:   1.先使用SQL Server 或其他数据库建立传统的数据库模型。   2.写个临时程序,利用ADO.net将数据库模型导入DataSet中。   3.利用DataSet::WriteXml(文件名);的方法生成XML数据库文件。  方法3:  同样没有安装SQL Server for XML时:   1.先写一个程序,在DataSet中建立数据库模型,当然编程建立要比方法1中的向导建立麻烦一些。   2.利用DataSet::WriteXml(文件名);的方法生成XML数据库文件。 3.连接数据库  ADO.net不再多说。//连接XML文件 DataSet^ DateSet1 = gcnew DataSet(); DataSet1-ReadXml(XML文件);4.一系列的数据填充BindingSource^ aBindingSource; ReportDataSource^ reportDataSource1; //根据DateSet1设置BindingSource aBindingSource = gcnew BindingSource(); aBindingSource-DataMember = Table1; //注意,表名要同创建报表时用的相同 aBindingSource-DataSource = DataSet1; //根据BindingSource设置ReportDataSource reportDataSource1 = gcnew ReportDataSource(); reportDataSource1-Name = DataSet1_Table1; reportDataSource1-Value = aBindingSource; //根据Re

文档评论(0)

vaxlv2 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档