Crystal Report开发报表

转载 2007年09月13日 08:21:00
    最近研究了Crystal Report的报表开发,感觉非常好用。特将开发要点小结如下:
    一、Crystal Report的几个重要组件
    1、Crystal Report Designer
         Crystal Report之所以“可见即所得”就是靠这个组件,Crystal Report Designer用于编辑.rpt报表文件。
    2、Crystal Report Viewer
        将Crystal Report Designer设计的报表展示在Web页面或Windows Form 上就是用到这个组件。
    3、Crystal Report Engine
         Crystal Report Engine允许开发人员在运行阶段对报表的结构与内容进行完整的控制,但是 Crystal Report Engine必须和Crystal Report Viewer一同使用。
    
   二、理解报表节(Report Section)
    1、报表页眉节
    报表页眉节中的数据在整份报表中只出现一次,而且只会显示在第一页的上方。  
    2、页眉节
    页眉节中的数据会固定显示在每一页的顶端。
    3、详细资料节
    显示报表实际信息,如果绑定的数据库表(DataSet)有多个记录,则这些记录都将显示在详细资料节中。
    4、报表页脚节
     报表页眉节中的数据在整份报表中只出现一次,而且只会显示在最后一页之详细资料节中最后一个数据记录的下方。
    5、页脚节
   页脚节中的数据会固定显示在每一页的尾端。
 
   三、水晶报表的执行模式
   1、Pull模式
   被请求时生成报表时,驱动程序自动连接数据库,并视需要提取数据。一般,简单的报表用Pull模式就可以了。
   2、Push模式
   使用Push模式,开发人员必须自行编写代码来连接数据库,运行SQL命令来创建DataSet,并将DataSet传递给报表。Push模式比较灵活,并且效率高。
 
   四、使用Push模式
   1、设计一个DataSet
   (1)“解决方案浏览器”,选择“添加”--“添加新项”--“数据集(DataSet)”--"命名为DSCustomer";
   (2)从“服务器资源管理器”中的SQL Server中拖放一个数据表到DataSet(如CustomerList表),此时在DataSet中就会有一个CustomerList表的结构图,保存DataSet(这步不能忘)。(当然一个DataSet中可以有多个数据表)
   2、创建.rpt文件
   (3)“解决方案浏览器”,选择“添加”--“添加新项”--“Crystal Report“;
   (4)建立.rpt文件之后,右击报表设计界面的空白处--"添加/删除数据库";
 (5)在"数据库专家"窗口中,展开"项目数据"-"展开ADO.NET数据集"--"DSCustomer(DataSet)"--"选择CustomerList表";
   (6)将"CustomerList"表填加到"选定的表中",点击"确定";
 (7)设计报表界面,这时可以在界面中拖放CustomerList表中的字段;
 3、建立一个Crystal Report Viewer控件,编写后台代码
 (8)在.aspx页面上建立一个Crystal Report Viewer,根据需要设置其属性;
 (9)在代码中访问数据库并把数据填充到DataSet;
  private void BindReport()
  {
   RptRenderContract ReportDoc = new RptRenderContract();//.rpt文件对应的类
   SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["connStr"]);
   DsCustomer ds = new DsCustomer();                             //创建DataSet对象ds
   string strSelect = "SELECT * FROM CustomerList ;
   SqlDataAdapter dadCustomer = new SqlDataAdapter(strSelect,conn);
   dadRender.Fill(ds,"CustomerList");                                  //向ds填充CustomerList表        
   ReportDoc.SetDataSource(ds);                                      //设置.rpt文件对应类的数据源
   CRVContract.ReportSource = ReportDoc;       //设置Crystal Report Viewer的报表源
  }
 (10)在Page_Load方法中使用BindReport()函数。
 
 五、Crystal Report的使用技巧
 1、使用公式字段
 Crystal Report的的公式编辑器,允许开发人员用Basic语法和Crystal(类Pascal)语法来编辑公式字段。Example,如下:
  Dim strCpuType As String
   Select Case {CpuLeaseList.CpuType}
    Case 1
        strCpuType = "惠普CPU"
    Case 2
        strCpuType = "曙光CPU"
    Case 3
        strCpuType = "苹果CPU"
   End Select  
  formula = strCpuType
   有点遗憾的是Crystal Report的公式编辑器没有提供函数的帮助说明,有些函数的用法需要猜了。比如获取日期字段中月份的公式为:
      formula = Month({CpuLeaseList.LeaseStartTime})
   总之,要开发出满足客户需求的复杂报表,必须熟练使用公式字段。
 
   2、数据的排序
   数据排序可以利用两种方式。
  方式1--用SQL语句先排序,然后把排序好的数据绑定到报表。
  方式2--利用Crystal Report的排序功能。右击报表设计界面的空白处--“报表”--“排序记录”--根据需要设置排序字段。
 
   3、分组报表数据
   个人认为,Crystal Report的分组报表的功能非常强大,内置了功能强大的根据字段分组的功能,这个功能非常好用,如果仅仅用SQL 语句的Group BY 有些功能是不能实现的。比如如下SQL 语句:
SELECT DateName(mm, LeaseStartTime) AS [Month], sum(datediff(hh,LeaseStartTime,LeaseEndTime)) AS [Hour] FROM CpuLeaseList where LeaseStartTime  
   BETWEEN '2006-1-1' AND '2006-12-31'
       GROUP BY DateName(mm,LeaseStartTime)
    SELECT 所能筛选出来的字段只能是和和 GROUP BY 跟这的相同字段或聚合函数运算的字段,但这个问题在Crystal Report分组报表中却很容易解决。
 
   4、使用图表和交叉表
   快速创建图表和交叉表也是Crystal Report的一大优点,只要在适当的节(sector)中插入图表或交叉表,然后设置一些要显示的字段就OK了。
 
   5、报表的导出和打印
   将报表集成在Web应用程序中,需要自己编写代码实现报表的导出和打印(报表在Windows应用中已经集成了导出和打印的功能).不过据说,在Visual studio 2005中Crystal report在Web中的应用也集成了导出和打印功能.
   遗憾的是,Visual studio2003下面用代码实现导出和打印时,Crystal Report不是很稳定,有时会出现莫名其妙的运行时错误: ( 这个问题让我郁闷了好多天)
   异常详细信息: CrystalDecisions.CrystalReports.Engine.LogOnException: 登录失败。
   报表的导出需要注意的是:1)必须设置导出目录相应的安全权限,否则是无法往本地计算机的磁盘上写文件的.   2)如果要实现打印和导出时,每次Page_Load()必须要绑定DataSet上的数据到报表上去.(这一点要非常注意!)
   导出代码如下:
     private void btnExport_Click(object sender, System.EventArgs e)
   {
        CrystalDecisions.Shared.DiskFileDestinationOptions DiskOpts = new  CrystalDecisions. Shared. DiskFileDestinationOptions();
   ReportDoc.ExportOptions.ExportDestinationType =  CrystalDecisions. Shared.ExportDestinationType.DiskFile;
      switch (ddlFormat.SelectedItem.Text)
     {
          case "Rich Text (RTF)":
       ReportDoc.ExportOptions.ExportFormatType =        CrystalDecisions.Shared.ExportFormatType.RichText;//
       DiskOpts.DiskFileName = "D://Output.rtf";
         break;

          case "Portable Document (PDF)":
       ReportDoc.ExportOptions.ExportFormatType =   CrystalDecisions.Shared.ExportFormatType.PortableDocFormat;//
       DiskOpts.DiskFileName = "D://Output.pdf";
          break;

          case "MS Word (DOC)":
       ReportDoc.ExportOptions.ExportFormatType =   CrystalDecisions.Shared.ExportFormatType.WordForWindows;//
       DiskOpts.DiskFileName = "D://Output.doc";
         break;

          case "MS Excel (XLS)":
       ReportDoc.ExportOptions.ExportFormatType =   CrystalDecisions.Shared.ExportFormatType.Excel;//
       DiskOpts.DiskFileName = "D://Output.xls";
         break;

        default:
        break;
   }
      ReportDoc.ExportOptions.DestinationOptions = DiskOpts;
    ReportDoc.Export(); 
  }

   

相关文章推荐

水晶报表(crystal report)--回忆

水晶报表(Crystal Reports)是加拿大Crystal Decisions公司创建的报表分析与生成软件,2003年被BO收购,而BO在2008年初又被SAP收购。水晶报表可谓是多次易主,但由...

水晶报表(Crystal Report)通过Visual Studio 2010的WPF实现

1,前言。      本文中采用的工具介绍: VS2010旗舰版,CrystalReport版本为13.0 。实现的方式是做一个简单demo,让初学者能够初步了解水晶报表的使用。     ...

水晶报表 Crystal Report 调用存储过程时出错 找不到表 ,解决方法。

用 CrystalReportViewer1 控件在asp.net的网页上显示报表,如果做报表时调用数据表数据的方式调用是可以成功的,但报表是用存储过程获取数据方式会出现以下错误: 找不到表...

Crystal Report水晶报表碰到的一些纠结问题

1.插入PNG文件时,透明的背景会变成黑色.试了矢量图WMF文件,是可以正常显示的,不过毕竟得到矢量图比较困难.   后来找到个方法,就是把JPG图片放在子报表里,调整子报表在父报表的位置并且保持JP...
  • sui84
  • sui84
  • 2014年01月17日 16:51
  • 2100

Crystal Report水晶报表教程

  • 2008年04月04日 20:04
  • 3.63MB
  • 下载

水晶报表Crystal Report 2008 用户指南

  • 2008年06月27日 21:26
  • 2.34MB
  • 下载

TEC1401.Report开发技术总结 - 第七章 使用BI Publisher开发报表-创建一个简单的RTF模板(2/5)

第一章    创建一个简单的RTF模板 安装好Oracle BI Publisher Desktop之后,可以使用Word中的BI Publisher插件来进行报表布局模板(RTF格式)设计。 1...

水晶报表Crystal Report .Net SDK

  • 2008年06月27日 21:47
  • 7.55MB
  • 下载

Eclipse 操作 Crystal Report 笔记

关于Eclipse 操作 Crystal Reporte笔记
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Crystal Report开发报表
举报原因:
原因补充:

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