水晶报表

来源:互联网 发布:vb程序 编辑:程序博客网 时间:2024/05/21 14:04
 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次后,”保存“功能就不能再使用了。为了避免这个,你不是不在4)从左边的"Bindable属性”区中选择“ReportSource”
5)选中"自定义绑定表达式"单选按钮,在右边的底部的窗口中指定.rpt文件的文件名和路径,例如:"C:\\ProgramFiles\\MicrosoftVisualStudio.NET\\CrystalReports\\Samples\\Reports\\GeneralBusiness\\WorldSalesReport.rpt",然后”确定“
<IMGSRC=" upimg allimg 080910 0938261.jpg?>


以及:<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操作系统的原因。

原创粉丝点击