Crystal Report.net Web报表开发日记

原创 2007年10月11日 10:22:00

使用Crystal Report.net进行开发的一些预备知识:

执行模式

水晶报表取数据可以使用下面的方法实现:

Pull 模式:

被请求时,水晶报表直接根据指定的驱动连接数据库然后组装这些数据。

<script type="text/javascript"><!-- google_ad_client = "pub-8451177669974482"; google_ad_width = 728; google_ad_height = 90; google_ad_format = "728x90_as"; google_ad_type = "text_image"; google_ad_channel = ""; google_color_border = "FFFFFF"; google_color_bg = "267362"; google_color_link = "FFFF00"; google_color_text = "FFFF00"; google_color_url = "FFFF00"; //--></script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>  

Push 模式 :

此时开发表不得不自己编写代码连接数据并组装DataSet,同时将它传送至报表。在些这种情况下,通过使用连接共享以及限制记录集合的大小,可以使用报表性能最大化。

报表类型:

水晶报表设计器能够直接包含报表至工程也能够使用独立的报表对象。

Strongly-typed 报表 :

当你将报表文件加入到项目中去时,它就变成了一个了“ strongly-typed“报表。在这些情况下,你将拥有直接创建报表的对象的权力,这将减少一些代码并且能够提供一些性能。

Un-Typed 报表 :

这里的报表并不直接包含在项目中,因此称为‘un-typed’ 报表。在这种情况下,你不得不使用水晶报表的”ReportDocuemt“对象建立一个实例,并且”手动“地凋用报表。

其它注意事项

尽管水晶报表查看器拥有一些很酷的功能,如缩放、页面导航等。但是他不提供打印功能,你不得不调用游览器的打印功能。

VS.Net中的水晶报表如果没有注册,那么它只能使用30次,30次后,”保存“功能就不能再使用了。为了避免这个,你不是不在 http://www.crystaldecisions.com/这里注册此产品。 (好像不是这样子的,不注册也好像能用很长的时间,只是不能提供支持)

默认安装的水晶报表只能支持5个用户,为了支持更多的用户,你不得不在 http://www.crystaldecisions.com/中购买许可证。

我在实际开发应用中使用的是Push 模式 : , 因为一般表格模式比较简单,在Web开发上完全可以用其他方式替代,因此,我使用的是实际开发中的图形报表做为例子。

开发步骤如下:

1、在项目中创建一个数据集,然后右键->选择“新建element”,element的名称就是数据表的名称。

数据集名称暂时定为:ReportData,element相当于一个数据表,名称暂定为:DataTable,下一步是给element

增加字段,也就是我们报表中要使用的数据。注意字段类型。

2、绘制一个空的Crystal Report的报表文件(*.rpt),然后,在报表绘制界面上右键->选择“数据库->添加/删除数据库”打开“数据库专家”,选择“项目数据->ADO.net数据集”,你会看到刚才创建的element数据集ReportData,选用DataTable做为报表数据。下一步,通过报表专家插入“图表”,使用DataTable中的数据字段

来生成报表的数据。

3、创建一个Web窗体,在窗体上放一个CRYSTALREPORTVIEWER控件!写代码获取填充一个定义的数据集DataSet,然后,生成一个“报表文件的对象”,把该对象的数据源指向已经填充数据的DataSet,对CRYSTALREPORTVIEWER控件的ReportSource属性赋值等于生成的“报表文件的对象”,CRYSTALREPORTVIEWER控件的Visible属性设置为true ;

代码注意事项:

1、DataSet中填充数据的表的名称必须和原来定义的element一致,否则报表出来会是空白

2、用于填充DataSet数据表的字段也要和element定义的字段属性,名称一致!

比如:

element中定义字段有两个:EntryName string, EntrySales decimal

填充DataSet的SQL语句,

Select B.Item_Name as EntryName ,Sum(A.Expend_Money) AS EntrySales From T_Ware_Sales .......

完成以上3个步骤,你就可以在IE上看到你的Web图形报表了,其实就是Crystal生成的一张图片!

大功告成!

 

 

在我们对VS.Net中的水晶报表(Crystal Reports)进行研究之前,我和我朋友对如何将这个复杂的东东加入我们的Web应用有着非常的好奇心。一周以后,在阅读了大量的“HOWTO”文档之后,我们成功地将一些简单的报告加入到了我们的Asp.net程序中,并得到了一些小决窍。
  这篇文章教你如何在.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 %>"

<script type="text/javascript"><!-- google_ad_client = "pub-8451177669974482"; google_ad_width = 728; google_ad_height = 90; google_ad_format = "728x90_as"; google_ad_type = "text_image"; google_ad_channel = ""; google_color_border = "FFFFFF"; google_color_bg = "267362"; google_color_link = "FFFF00"; google_color_text = "FFFF00"; google_color_url = "FFFF00"; //--></script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>  这样是错误的,会出现错误信息,有两处错误:
  • 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操作系统的原因。  

Crystal Report开发报表

    最近研究了Crystal Report的报表开发,感觉非常好用。特将开发要点小结如下:    一、Crystal Report的几个重要组件    1、Crystal Report Desig...
  • nileel
  • nileel
  • 2007-09-13 08:21:00
  • 3241

Crystal Reports 本地方式Web端显示

1.安装Crystal Reports XI。2.从以下两个目录下复制JAR包到你开发的Web程序里面    从目录1::/Program Files/Common Files/Crystal Dec...
  • lddongyu
  • lddongyu
  • 2008-01-11 10:13:00
  • 1067

JavaWeb报表开发

  • 2010年04月26日 13:47
  • 12KB
  • 下载

Business Objects BI及Crystal Reports 培训教程

  • 2010年12月13日 16:00
  • 759KB
  • 下载

利用JasperReport+iReport进行Web报表开发(java)

(1)使用iReport-4.8.0版本; (2)JasperReport也是用配套的4.8.0版本的jar包; (3)报表中 中文 设置: (4)java代码网址:http://blog.c...
  • u010720985
  • u010720985
  • 2017-04-20 11:44:34
  • 1320

Web报表开发:ireport

Web报表开发 序言 在很多实际的项目里,报表都是其中十分重要的组成部分,例如把查询结果以报表的形式呈现出来。这里所提到的报表可不是简单的二维表,而是拥有复杂表头的、多维的、可以在运行期从...
  • yu452148611
  • yu452148611
  • 2015-09-01 09:39:42
  • 1134

Crystal Reports for java jsp web 案例

  • 2012年04月27日 08:19
  • 16MB
  • 下载

crystalreport打印

总结以后,共有以下几个步骤:1、添加新项,新建一个Crystal报表。2、需要在web.config上加一段配置的代码                               http://loc...
  • tao19840705
  • tao19840705
  • 2011-06-13 14:18:00
  • 1213

Crystal Report RAS9 Java Web开发总结

1.引入Crystal Report SDK的Jar文件到工程中。导入C:/Program Files/Common Files/Crystal Decisions/2.0/jars目录下的Jar文件...
  • wuder
  • wuder
  • 2004-12-21 10:46:00
  • 1387

Eclipse 操作 Crystal Report 笔记

关于Eclipse 操作 Crystal Reporte笔记
  • u011910756
  • u011910756
  • 2014-06-16 15:20:46
  • 2861
收藏助手
不良信息举报
您举报文章:Crystal Report.net Web报表开发日记
举报原因:
原因补充:

(最多只允许输入30个字)