Crystal Report开发报表

    最近研究了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(); 
  }

   
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Crystal Reports 9.2 中文版(水晶报表) 下载,,软件版本:9.2.0.448不过现已出了Crystal Reports Professional v9.2.2.634 (c) Crystal Decisions,有足够的空间就提供.这是一个很不错的报表控件,我相信很多朋友都听说过吧!Crystal Reports 用于处理数据库,帮助用户分析和解释重要信息。使用 Crystal Reports 可以方便地创建简单报表,同时它也提供了创建复杂或专用的报表所需的整套工具。 创建所能想象的任何报表 Crystal Reports几乎可以从任何数据源生成您需要的报表。内置报表专家在您生成报表和完成一般的报表任务过程中,会一步一步地指导您进行操作。报表专家通过公式、交叉表、子报表和设置条件格式帮助表现数据的实际意义,揭示可能被隐藏掉的重要关系。如果文字和数字确实不够充分,则用地理地图和图形进行形象的信息交流。 将报表扩展到 Web Crystal Reports 的灵活性并未停留在创建报表这一功能上 ?您可以用各种各样的格式发布报表,包括用 Microsoft 的 Word 和 Excel 发布、通过电子邮件甚至 Web 发布。高级的 Web 报表功能允许工作组中的其他成员在他们自己的 Web 浏览器中查看或更新共享报表。 将报表并入应用程序通过将 Crystal Reports 的报表处理功能整合到自己的数据库应用程序中,应用程序和 Web 开发人员可以节省开发时间并满足用户的需求。Crystal Reports 支持大多数流行的开发语言,可以方便地在任何应用程序中添加报表。 不论您是 IT 行业的站点管理员,还是营销推广经理,也无论您是金融业的数据库管理员还是 CEO,Crystal Reports 都堪称是一个功能强大的工具,它可以帮助每一个人分析、解释重要信息。感谢 revenant 上传!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值