这篇文章教您如何在.net web应用中使用水晶报表,也能够让您在学习过程中少走一些弯路。为了得到最好的效果,读者最好需要有一些基础的asp.net访问数据库的知识连同使用vs.net的研发经验。
简介
水晶报表能够由很多的方法得到,其中一个就是使用vs.net来创建,他提供了很丰富模型以使我们能够在运行时操作属性和方法。假如您正在使用vs.net研发.net程式,那么您就无需再安装其他软件了,因为他已内嵌在vs.net中了。
长处:
vs.net水晶报表有下面一些主要的长处:
快速的报表研发
能够导出成为复杂的交互性图表
能够和其他控件一起在webform中使用
能够动态地将报表导出成为.pdf,.doc,xls,html,rtf等多种格式
结构:
一些组件组成了水晶报表的二层结构,需要的web应用有:
客户端 :
客户端仅需要一个能够访问嵌入aspx页面报表的游览器就能够了
服务器 :
水晶报表引擎(crystal report engine (crengine.dll))
通过他能够完成一些任务,如在报告文档中合并数据,转换报告为其他格式等。也正是因为报告引擎的作用,才能够将asp.net中的水晶报表转换成为普通html格式
水晶报表设计器(crystal report designer (crdesigner.dll))
水晶报表就是在设计器中创建的,在设计器中您能够设计标题,插入数据,公式,图表,子报表等。
.rpt报表文档
执行报表中的第一步就是在水晶报表设计器接口创建此报表,在默认安装中微软已提供了一些现成的.rpt例子。
data source
.rpt文档取得数据库的方法取决于您方法的选择,您能选择让水晶报表自己选择数据而不使用任何代码或也能够选择手动的组装dataset,然后再将其传送到报表文档。
水晶报表查看控件(crystal report viewer web form control (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工具栏中拖动水晶报表查看器控件(crystal report viewer)至.aspx页面中。
2) 调出水晶报表查看器控件的属性窗口
3) 点击[...]按钮查看"data binding"属性,并弹出了databinding窗口。
4) 从左边的"bindable属性”区中选择“report source”
5) 选中"自定义绑定表达式"单选按钮,在右边的底部的窗口中指定.rpt文档的文档名和路径,例如:"c://program files//microsoft visual studio.net//crystal reports//samples//reports//general business//world sales report.rpt",然后”确定“
注意:文档”world sales report.rpt“文档是在vs.net安装时创建的。假如您在安装过程中指定了其他目录,此时您最好确认一下路径的正确性。
上面的步骤中实际上是插入了下面这些代码至asp.net文档中: <%@ register tagprefix="cr" namespace="crystaldecisions.web" assembly="crystaldecisions.web" %>
连同: <cr:crystalreportviewer>
id="crystalreportviewer1"
runat="server" width="350px" height="50px"
reportsource= <%# "c://program files//microsoft visual studio.net//crystal reports//samples//reports//general business//world sales report.rpt" %>>
</cr:crystalreportviewer>
注意:在飞刀我的vs.net正式版中自动生成的代码中reportsource产生的样式不是这样子的,他是: reportsource=" <%# c:/xxxxx/xxx.rpt %>"
这样是错误的,会出现错误信息,有两处错误:
databind中要有双引号,因此外部只能用单引号
目录分隔符号不能使用"/",必须使用"//"
必须按照使用本文介绍的格式来手动修改,这也算是vs.net的一个bug吧。
6) 在page_load方法中调用databind方法。(代码为vb.net)
private sub page_load(byval sender as system.object, byval e as system.eventargs)
databind()
end sub
7)保存并编译您的页面。 现在,您就有一个内嵌水晶报表的webform页面了。
注意:实际研发中,一开始会出现无法访问inetsrv目录的错误,解决的办法是改变其目录的安全属性,使user用户有可写的权限。飞刀我发现.net系统自已给出的解决方法是没有用的,也可能是我使用的是windows.net操作系统的原因
简介
水晶报表能够由很多的方法得到,其中一个就是使用vs.net来创建,他提供了很丰富模型以使我们能够在运行时操作属性和方法。假如您正在使用vs.net研发.net程式,那么您就无需再安装其他软件了,因为他已内嵌在vs.net中了。
长处:
vs.net水晶报表有下面一些主要的长处:
快速的报表研发
能够导出成为复杂的交互性图表
能够和其他控件一起在webform中使用
能够动态地将报表导出成为.pdf,.doc,xls,html,rtf等多种格式
结构:
一些组件组成了水晶报表的二层结构,需要的web应用有:
客户端 :
客户端仅需要一个能够访问嵌入aspx页面报表的游览器就能够了
服务器 :
水晶报表引擎(crystal report engine (crengine.dll))
通过他能够完成一些任务,如在报告文档中合并数据,转换报告为其他格式等。也正是因为报告引擎的作用,才能够将asp.net中的水晶报表转换成为普通html格式
水晶报表设计器(crystal report designer (crdesigner.dll))
水晶报表就是在设计器中创建的,在设计器中您能够设计标题,插入数据,公式,图表,子报表等。
.rpt报表文档
执行报表中的第一步就是在水晶报表设计器接口创建此报表,在默认安装中微软已提供了一些现成的.rpt例子。
data source
.rpt文档取得数据库的方法取决于您方法的选择,您能选择让水晶报表自己选择数据而不使用任何代码或也能够选择手动的组装dataset,然后再将其传送到报表文档。
水晶报表查看控件(crystal report viewer web form control (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工具栏中拖动水晶报表查看器控件(crystal report viewer)至.aspx页面中。
2) 调出水晶报表查看器控件的属性窗口
3) 点击[...]按钮查看"data binding"属性,并弹出了databinding窗口。
4) 从左边的"bindable属性”区中选择“report source”
5) 选中"自定义绑定表达式"单选按钮,在右边的底部的窗口中指定.rpt文档的文档名和路径,例如:"c://program files//microsoft visual studio.net//crystal reports//samples//reports//general business//world sales report.rpt",然后”确定“
注意:文档”world sales report.rpt“文档是在vs.net安装时创建的。假如您在安装过程中指定了其他目录,此时您最好确认一下路径的正确性。
上面的步骤中实际上是插入了下面这些代码至asp.net文档中: <%@ register tagprefix="cr" namespace="crystaldecisions.web" assembly="crystaldecisions.web" %>
连同: <cr:crystalreportviewer>
id="crystalreportviewer1"
runat="server" width="350px" height="50px"
reportsource= <%# "c://program files//microsoft visual studio.net//crystal reports//samples//reports//general business//world sales report.rpt" %>>
</cr:crystalreportviewer>
注意:在飞刀我的vs.net正式版中自动生成的代码中reportsource产生的样式不是这样子的,他是: reportsource=" <%# c:/xxxxx/xxx.rpt %>"
这样是错误的,会出现错误信息,有两处错误:
databind中要有双引号,因此外部只能用单引号
目录分隔符号不能使用"/",必须使用"//"
必须按照使用本文介绍的格式来手动修改,这也算是vs.net的一个bug吧。
6) 在page_load方法中调用databind方法。(代码为vb.net)
private sub page_load(byval sender as system.object, byval e as system.eventargs)
databind()
end sub
7)保存并编译您的页面。 现在,您就有一个内嵌水晶报表的webform页面了。
注意:实际研发中,一开始会出现无法访问inetsrv目录的错误,解决的办法是改变其目录的安全属性,使user用户有可写的权限。飞刀我发现.net系统自已给出的解决方法是没有用的,也可能是我使用的是windows.net操作系统的原因