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水晶报表无法实现的多数据源计算

项目背景:用户新上线了绩效考核系统,原本的工资算法需要相的调整。以前的工资表主要由员工的基本工资计算得到,基本工资存储在财务管理软件的MSSQL数据库中。新的工资表由基本工资+绩效工资组成。绩效工资由...
  • u012388497
  • u012388497
  • 2014年01月13日 13:54
  • 1605

Web报表开发:ireport

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

敏捷开发系列之旅 第四站(透明的Crystal水晶方法)

上一站,我们简单的谈了谈FDD,了解了什么是特征驱动开发,以及它核心的整体模型,在我看来,它是一种有效但有一些复杂的敏捷开发方法,对于小团队来说,实施起来有些困难。然而,今天我们要认识的是一种新的开发...
  • happylee6688
  • happylee6688
  • 2014年03月31日 00:56
  • 7235

大三前端实习日志

大三暑期选择实习:工作内容:前端web实习 实习地点:武汉光谷 公司规模:创业型公司,前端开发人数为9人,实习生5名1.实习内容总结:1.前端html+css页面结构培训实习内容:为完成UI设计稿...
  • qq1301709072
  • qq1301709072
  • 2016年08月17日 11:46
  • 2039

VS2010下水晶报表的使用总结-从安装到使用到部署,有图有真相

VS2010下水晶报表的使用总结-从安装到使用到部署,有图有真相。 公司要做一个有关水晶报表的打印,让我自己研究怎么使用,整整折磨我好几天。做了有关winform和Web两种方式的。我的开发环境是V...
  • ping0926
  • ping0926
  • 2013年05月31日 14:03
  • 2687

javaWeb+JasperReport报表开发简单实例

在网上搜索了很多JasperReport报表开发的例子,基本上都是说的一些理论知识,没有一个直接用代码直观表达的,想必大家想学习jasperReport报表的开始,都希望能够直观的看到代码,研究出代码...
  • xiaosheng_papa
  • xiaosheng_papa
  • 2015年03月13日 10:01
  • 4235

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

转载自:http://blog.csdn.net/kabini/article/details/1600073 序言 在很多实际的项目里,报表都是其中十分重要的组成部分,例如把查询结果...
  • u012377333
  • u012377333
  • 2015年11月10日 17:16
  • 3268

使用MyEclipse报表创建Web报表(上)

组织良好的业务数据可以显著改善关键的决策过程。使用MyEclipse Reports™工具来开发各种Web报表。在本教程中,您将学习到: 创建一个报表Web项目和数据源创建、布局和格式化的报表创...
  • AABBbaby
  • AABBbaby
  • 2015年03月30日 10:00
  • 864

常用的web前端框架 --- 图形报表

1 highcharts     http://www.highcharts.com/ Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web...
  • tianwei7518
  • tianwei7518
  • 2014年01月22日 11:28
  • 7363

日记——web前端(3)

css代码语法: css样式代码由选择符和声明组成,而声明又由属性和值组成。 例如: p{color:red}选择符:p,指明网页中要应用该样式的元素。 声明:{color:red},属性和值之间要...
  • zrh_lawliet
  • zrh_lawliet
  • 2016年02月05日 11:06
  • 130
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Crystal Report.net Web报表开发日记
举报原因:
原因补充:

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