当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > ASP.NET中水晶报表的使用

ASP.NET
FreeTextBox(版本3.1.6)在ASP.Net 2.0中使用方法
.NET 常用功能和代码小结
在 .NET Framework 2.0 中未处理的异常导致基于 ASP.NET 的应用程序意外退出
asp.net IList查询数据后格式化数据再绑定控件
asp.net sql存储过程
asp.net 简单实现禁用或启用页面中的某一类型的控件
asp.net(c#)获取内容第一张图片地址的函数
The remote procedure call failed and did not execute的解决办法
ASP.NET 在线文件管理
asp.net 读取并修改config文件实现代码
ASP.NET Cookie 操作实现
asp.net Silverlight中的模式窗体
Silverlight中动态获取Web Service地址
asp.net Silverlight应用程序中获取载体aspx页面参数
asp.net 水晶报表隔行换色实现方法
asp.net 获取Gridview隐藏列的值
手动把asp.net的类生成dll文件的方法
asp.net 使用ObjectDataSource控件在ASP.NET中实现Ajax真分页
动态指定任意类型的ObjectDataSource对象的查询参数
asp.net Md5的用法小结

ASP.NET中水晶报表的使用


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 66 ::
收藏到网摘: n/a

在我们对VS.Net中的水晶报表(CrystalReports)进行研究之前,我和我朋友对如何将这个复杂的东东加入我们的Web应用有着非常的好奇心。一周以后,在阅读了大量的“HOWTO”文档之后,我们成功地将一些简单的报告加入到了我们的Asp.net程序中,并得到了一些小决窍。
这篇文章教你如何在.NetWeb应用中使用水晶报表,也可以让你在学习过程中少走一些弯路。为了得到最好的效果,读者最好需要有一些基础的Asp.Net访问数据库的知识以及使用VS.Net的开发经验。
简介
水晶报表可以由很多的方法得到,其中一个就是使用VS.Net来创建,它提供了非常丰富模型以使我们能够在运行时操作属性和方法。如果你正在使用VS.Net开发.Net程序,那么你就不需要再安装其它软件了,因为他已经内嵌在VS.Net中了。
优点:
VS.Net水晶报表有下面一些主要的优点:


快速的报表开发

能够导出成为复杂的交互性图表

可以与其它控件一起在WebForm中使用

能够动态地将报表导出成为.pdf,.doc,xls,html,rtf等多种格式

结构:
一些组件组成了水晶报表的二层结构,需要的Web应用有:
客户端:
客户端仅需要一个可以访问嵌入aspx页面报表的游览器就可以了
服务器:
水晶报表引擎(CrystalReportEngine(CREngine.dll))
通过它可以完成一些任务,如在报告文件中合并数据,转换报告为其它格式等。也正是因为报告引擎的作用,才可以将Asp.Net中的水晶报表转换成为普通HTML格式
水晶报表设计器(CrystalReportDesigner(CRDesigner.dll))
水晶报表就是在设计器中创建的,在设计器中你可以设计标题,插入数据,公式,图表,子报表等。
.rpt报表文件
执行报表中的第一步就是在水晶报表设计器接口创建此报表,在默认安装中微软已经提供了一些现成的.rpt例子。
DataSource
.rpt文件取得数据库的方法取决于你方法的选择,你能选择让水晶报表自己选择数据而不使用任何代码或者也可以选择手动的组装DataSet,然后再将其传送到报表文件。
水晶报表查看控件(CrystalReportViewerwebformControl(CRWebFormViewer.dll))
水晶报表查看控件是一个WebForm控件,可以将它看成是一个在.aspx页面中存放报表的容器。注意:在一些复杂的操作中,报表服务器与Web服务器可能不在同一物理主机上,Web服务器将HTTP请求传送到报表服务器上去。水晶报表也可以当做WebService来执行。
执行模式
水晶报表取数据可以使用下面的方法实现:
Pull模式:
被请求时,水晶报表直接根据指定的驱动连接数据库然后组装这些数据。
Push模式:
此时开发表不得不自己编写代码连接数据并组装DataSet,同时将它传送至报表。在些这种情况下,通过使用连接共享以及限制记录集合的大小,可以使用报表性能最大化。
报表类型:
水晶报表设计器能够直接包含报表至工程也能够使用独立的报表对象。
Strongly-typed报表:
当你将报表文件加入到项目中去时,它就变成了一个了“strongly-typed“报表。在这些情况下,你将拥有直接创建报表的对象的权力,这将减少一些代码并且能够提供一些性能。
Un-Typed报表:
这里的报表并不直接包含在项目中,因此称为‘un-typed’报表。在这种情况下,你不得不使用水晶报表的”ReportDocuemt“对象建立一个实例,并且”手动“地凋用报表。
其它注意事项
尽管水晶报表查看器拥有一些很酷的功能,如缩放、页面导航等。但是他不提供打印功能,你不得不调用游览器的打印功能。
VS.Net中的水晶报表如果没有注册,那么它只能使用30次,30次后,”保存“功能就不能再使用了。为了避免这个,你不是不在http://www.crystaldecisions.com/这里注册此产品。(好像不是这样子的,不注册也好像能用很长的时间,只是不能提供支持)
默认安装的水晶报表只能支持5个用户,为了支持更多的用户,你不得不在http://www.crystaldecisions.com/中购买许可证。
让我们感受一下----在Asp.net中使用一个现成的水晶报表文件

让我们先感受一下在WebForm中使用水晶报表的感觉。
1)从WebForm工具栏中拖动水晶报表查看器控件(CrystalReportViewer)至.aspx页面中。

2)调出水晶报表查看器控件的属性窗口 
3)点击[...]按钮查看"DataBinding"属性,并弹出了DataBinding窗口。
4)从左边的"Bindable属性”区中选择“ReportSource”
5)选中"自定义绑定表达式"单选按钮,在右边的底部的窗口中指定.rpt文件的文件名和路径,例如:"C:\\ProgramFiles\\MicrosoftVisualStudio.NET\\CrystalReports\\Samples\\Reports\\GeneralBusiness\\WorldSalesReport.rpt",然后”确定“

注意:文件”WorldSalesReport.rpt“文件是在VS.Net安装时创建的。如果你在安装过程中指定了其它目录,此时你最好确认一下路径的正确性。
上面的步骤中实际上是插入了下面这些代码至Asp.Net文件中:<%@RegisterTagPrefix="cr"Namespace="CrystalDecisions.Web"Assembly="CrystalDecisions.Web"%>


以及:<CR:CRYSTALREPORTVIEWER>
id="CrystalReportViewer1"
runat="server"Width="350px"Height="50px"
ReportSource='<%#"C:\\ProgramFiles\\MicrosoftVisualStudio.NET\\CrystalReports\\Samples\\Reports\\GeneralBusiness\\WorldSalesReport.rpt"%>'>
</CR:CRYSTALREPORTVIEWER>


注意:在飞刀我的VS.Net正式版中自动生成的代码中ReportSource产生的样式不是这样子的,它是:ReportSource="<%#C:\xxxxx\xxx.rpt%>"


这样是错误的,会出现错误信息,有两处错误:
DataBind中要有双引号,因此外部只能用单引号
目录分隔符号不能使用"\",必须使用"\\"

必须按照使用本文介绍的格式来手动修改,这也算是VS.Net的一个Bug吧。
6)在Page_Load方法中调用DataBind方法。(代码为VB.Net)


PrivateSubPage_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)
DataBind()
EndSub


7)保存并编译你的页面。现在,你就有一个内嵌水晶报表的WebForm页面了。
注意:实际开发中,一开始会出现无法访问inetsrv目录的错误,解决的办法是改变其目录的安全属性,使User用户有可写的权限。飞刀我发现.Net系统自已给出的解决方法是没有用的,也可能是我使用的是Windows.Net操作系统的原因。