这篇文章教你如何在
.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 中使用一个现成的水晶报表文件
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 文件中:
以及:
id="CrystalReportViewer1"
runat="server" Width="350px" Height="50px"
ReportSource=''>
注意:在飞刀我的 VS.Net 正式版中自动生成的代码中 ReportSource 产生的样式不是这样子的,它是:
ReportSource=""
这样是错误的,会出现错误信息,有两处错误:
必须按照使用本文介绍的格式来手动修改,这也算是 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 中使用一个现成的水晶报表文件
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 文件中:
以及:
id="CrystalReportViewer1"
runat="server" Width="350px" Height="50px"
ReportSource=''>
注意:在飞刀我的 VS.Net 正式版中自动生成的代码中 ReportSource 产生的样式不是这样子的,它是:
ReportSource=""
这样是错误的,会出现错误信息,有两处错误:
必须按照使用本文介绍的格式来手动修改,这也算是 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 操作系统的原因。
本文转自 qianshao 51CTO博客,原文链接:http://blog.51cto.com/qianshao/203446,如需转载请自行联系原作者