快速掌握 CrystalReport for .net

来源:互联网 发布:属于数据库系统的是 编辑:程序博客网 时间:2024/05/17 07:04

                             快速掌握 CrystalReport for .net

本文转自http://blog.csdn.net/billzhangmingming/archive/2004/12/17/220019.aspx

几乎在所有的应用程序中报表都是程序员头疼的问题。在.net环境下包含了功能强大的报表工具: Crystal Report。它能很好的与数据库交互,做出各种漂亮的报表和分析图表(具体功能下边文章会更详细的介绍).
        事实上,今天的这篇文章是我前段时间为一家公司的讲课的课件,经过改版发表了出来希望能对所有在.net环境下开发报表的程序员一些帮助。由于我公司是做电子政务系统,所以严重的“中国式报表”巨多,所以我为为公司自己封装了一个报表控件,实现了报表单据中数据的录入、删除、显示、打印等功能。如有朋友预见类似的问题,我很乐意与你交流,共同学习。
e-mail:billzhangmingming@sina.com.cn
 
         从1993年开始,Crystal Report 就是Visual Studio 套件中的一部分。目前实际上已成为Visual Studio.NET 中的报表标准,在Windows 报表编写领域中居于领先地位,推动着Web报表的未来发展。
         最新的Visual Studio.NET 以集成开发环境(IDE)中整和了Crystal Report9.0,从而增强了Visual Studio.NET 的开发功能, Crystal Report 为开发人员提供了尽可能的API。

                         Crystal Report for .NET 的功能简介
        通过将Crystal Report 的报表处理功能整和到自己的数据库应用程序中,应用程序和Web开发人员可以节省开发时间来满足用户的需求。Crystal Report 支持大多数流行的开发语言,可以方便的在任何应用程序中添加报表。
        不论是IT行业的站点管理员,还是金融业、电信业的数据库管理员,Crystal Report 都堪称是一个功能强大的工具,它可以帮助每个人对数据进行分析和解析。
 具体来说,Crystal Report的功能有以下几点:
 **全面的数据库访问:
  Crystal Report 中包括了超过35中数据源驱动,可以访问一种XML、企业和关系型数据库。
 **广泛的设计格式与设计:
  通过Crystal Report,用户可以将数据库转换为高度交互性内容。可以从100多中格式选项中进行选择、包括参数、映射、
  交叉表和超级链接、用以强化报表的冲击力。
 **强大的图表设计功能:
  Crystal Report 可以在报表中包含多彩的、易读的图表(提供了非常丰富的报表类型,如:条形图、折线图、面积图、
  饼图、干特图、股票图等)。
 **灵活的应用集成技术:
  Crystal Report 带有灵活的Java、COM和.NET SDK,以及可内嵌的Report Application Server,可将报表与企业Web应用
  紧密地集成在一起。通过使用Crystal Report 的“零”客户端浏览器控制,能够为最终端拥护提供丰富的报表交互、创建
  和修改功能。
 **强大的报表导出:
  Crystal Reprort 的所有的报表都可以导出多种不同的格式:包括XML、PDF、HTML、和Microsoft Excel。
 
     Crystal Report 设计器的布局
 **字段资源管理器:
  列出该报表所有的字段,如:使用的数据库字段、参数字段、公式字段等。可以在此修改和删除字段对象。
 **主报表窗口:
  用来在报表窗口中显示主报表。对于包含子报表的报表,有主报表窗口和对每个的深化(通过双击)的子报表有一个子报
  表窗口。可以通过右击报表窗口的任何空白位置来启动报表快捷菜单。
 **水晶报表主工具栏:
  包括记录选择、分类和文本对象格式化图标。可以对整个工具栏移动或改变大小。
 **水晶报表插入工具栏:
  可以插入汇总字段、组、子报表、图表和图片的图标。也可以在Crystal Report工具栏中单击鼠标来选择“插入”。
    
                               Crystal Report 的具体实例
    **Crystal Report viewer(水晶报表查看器)
 
  Crystal Report Viewer是在Visual Studio.NET中Windows 应用程序来访问和查看水晶报表的Windows窗体控件。类似其
  他的Windows 窗体控件,增加Windows 窗体查看器可以非常方便的从Visual Studio.NET工具箱中拖动水晶报表查看器控件到Windows窗体设计试图。之后再指定水晶报表查看器中的水晶报表。
 ***一个使用Crysatl Report Viewer创建报表的Demo:
  要在 Visual Basic 或 C# 项目中向 Windows 窗体添加 Windows 窗体 Viewer,请执行下列操作:
  打开“工具箱”,并将一个 CrystalReportViewer 拖到窗体上。
  通过拖放操作将 Windows 窗体查看器调整到希望的大小并将其移动到所需位置。
  当运行应用程序时,报表将显示在查看器中。
  与“工具箱”中的任何其他控件一样,如果想向 Windows 窗体查看器控件添加代码,请双击该控件以显示“代码”视图。
  接下来,将报表绑定到 Windows 窗体查看器。
  具体关于本Demo,我在Wiki上写了有关如何操作的一篇非常详细的文章,建议大家去看看。
 
         **ReportDocument对象简介:
       Crystal Reports 对象模型的顶级是 ReportDocument 对象。ReportDocument 包含与报表对接及自定义报表所需的所有 属性和方法。您既可使用其 Load 方法打开报表文件,也可为其分配一个强类型报表。
  要使用 ReportDocument,您首先必须引用 CrystalDecisions.CrystalReports.Engine 命名空间 (可在 CrystalDecisions.CrystalReports.Engine.dll 中找到)。如果您已将报表插入应用程序中,则会自动添加此引用。
 
 ***一个具体使用ReportDocument对象创建动态加载报表的Demo:
 
  向 CrystalDecisions.CrystalReports.Engine 添加引用
  在代码编辑器中打开 Form1.cs。
  在Form1窗体上添加一个Button.
  向 Form1.cs 添加下列命名空间:
  using CrystalDecisions.CrystalReports.Engine;
  创建一个报表对象,作为 Form1() 中的公共 ReportDocument 变量:
  public ReportDocument oRpt=null;
  在函数 button1_Click() 中,使用“报表文档”对象加载 MyReport.rpt,并将该对象绑定到 Windows 窗体查看器:
              private void button1_Click(object sender, System.EventArgs e)
              {
                   rpt=new ReportDocument();
                   rpt.Load("..//..//MyReport.rpt");
                   crystalReportViewer1.ReportSource=rpt;
              }

 
 
      **使用DataSet创建主从表报表的Demo:
  在报表中,有许多表是主从结构,比如:订单与订单细节,每个订单是一个“订单”表中的一条记录,而其细节是另个一  个“订单 细节”表中的多条记录,两个表通过一个字段"订单ID"关联起来,这种报表可利用其分组功能实现,下面对其进行具体的介绍。
 
  在From1.cs上添加“CrystalReportViewer”控件。
  在“解决方案资源管理器”中,右击项目,指向“添加”,选择“数据集”,单击确定。
  在“服务器资源管理”器中,添加连接,本示例使用"Crystal Report for .NET"中的示例数据库Xtreme.mdb,默认的安装
  目录在
  “F:Program Files/Microsoft Visual Studio.net/Crystal Reports/Samples/Database/chs”下,单击确定。
  将“订单”表和“订单细节”表拖到”DataSet“中。
  新建一个Crystal Report文件,起名为"MyReport".
  使用报表专家,在”项目数据“中选择”ADO。NET数据集“,插入”订单“和”订单明细“表,在字段选择器上选择要在报表上
  显示的数据
  字段。有两个字段是必须的({客户.客户ID}和{产品细节.产品ID})。在”组“选项卡中选择分组依据为”订单“表的”订单ID“。
  单击”完成“。
  回到Form1.cs下进行编码。
  在Form1的命名空间的开始地方输入:
  using System.Data.OleDb;
  在Form1的类定义开始地方输入:
  private MyReport report=null;
  在Form1_Load()中输入:
   report=new MyReport();
   Dataset1 dataSet=new Dataset1();
   OleDbConnection conn=new OleDbConnection
    ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F://Visual Studio.net//Crystal Reports//Samples//Database//chs//Xtreme.mdb");
   OleDbDataAdapter oleAdapter=new OleDbDataAdapter("SELECT * FROM 订单",conn);
   oleAdapter.Fill(dataSet,"订单");
   OleDbDataAdapter oleDetailsAdapter=new OleDbDataAdapter("SELECT * FROM 订单细节",conn);
   oleDetailsAdapter.Fill(dataSet,"定单细节");
   report.SetDataSource(dataSet);
   crystalReportViewer1.ReportSource=report;
  产生两个OleDbDataAdapter类的对象,并分别使用填充Fill方法可以连接到被指定的数据库获取数据。
 
 
 
 
 **图表: 
  Crystal Reports 使您可以在报表中包含复杂的、多彩的图表。绘制图表不仅是一种表示数据的方法,也是一种分析工具。
 用户可以在图表或图表的图例上深化以获取详细信息。
 
  可以根据以下内容绘制图表:
   摘要和小计字段
   详细信息、公式和运行总和字段
   交叉表摘要
 
  **如何在报表中插入图表的具体步骤:
   在 Report Designer 中右击,指向“插入”,并单击“图表”。
  在“类型”选项卡中,选择图表类型。
  如果希望“图表专家”使用“坐标轴”和“选项”选项卡上的默认选项,请选择“自动设置图表选项”。
  单击“数据”选项卡。
  在“位置”区域,指定图表在报表中出现的频率,然后单击“页眉”或“页脚”指定放置图表的位置。
  在“布局”区域,选择图表布局。
  在“数据”区域,指定要作为条件使用的数据库字段。
  如果“坐标轴”和“选项”选项卡出现,则可以自定义某些图表属性,如轴的缩放比例、图例和数据点。
  单击“文本”选项卡。接受默认标题信息或将新标题添加到图表。
  单击“确定”按钮。
 
 **使用公式
  公式概述:
   在许多情况下,报表所需的数据以存在与数据库表字段中。例如:若要准备一份订单列表,应将适当的字段放置在表内。
  但是,有时需要在报表中放置不存在与任何数据字段中的数据。在这种情况下,便需要创建公式。例如:若要计算处理每
  份订单所需花费的天数,则需要一个可确定的订购日期和发货日期之间天数的公式。利用Crystal Report可以轻松地创建
  此类公式。
 
  使用“公式编辑器”创建和编辑公式。
   当通过右击“字段资源管理器”中的“公式字段”并选择“新建”来编辑现有的公式字段或创建新的公式字段时,
  出现该对话框。在为公式命名之后即会出现该对话框。

  **子报表:
  子报表是报表中的报表。使用子报表,可以幌喙氐谋ū砗喜⒌揭桓霰ū碇小?梢孕鞅疚薹唇拥氖荩蛘咴诘ジ?BR> 报表中显示相同数据的不同视图。
  创建子报表的过程与创建常规报表的过程相似。字报表有报表大多数的特性,包括他自己的记录选择条件。子报表月报表之间
 唯一的区别是子报表:
  * 是作为对象插入到主报表中,它不能独立存在(但可以将子报表另存为主报表)。
  * 可以放置在报表的任何一节内,整个子报表将在该节中打印。
  * 子报表中不能包含另一个子报表。
 
 **如何创建子报表的具体步骤:
   在 Report Designer 中右击,指向“插入”,单击“子报表”。
   将子报表对象拖动到报表上。
   选择项目中的一个报表、另一个现有报表或为子报表创建一个新报表。
   选择“按需要显示子报表”以便能够在需要时检索子报表上的数据。否则,所有子报表数据将与报表一起出现。
    注意   使用按需要显示子报表将提高包含子报表的报表的性能。
   如果需要将子报表链接到主报表中的数据上,请单击“链接”选项卡。
   从“可用字段”列表中选择要在主(包含)报表中用作链接字段的字段。
   使用“字段链接”部分(只有在选定了链接字段后才会出现)为每个链接字段设置链接:
   从“使用的子报表参数字段”中选择要链接到主报表的字段;
   选择“基于字段选择数据”复选框,并从相邻的下拉列表中选择字段,以便基于特定的字段组织子报表数据(这相当于快速使用“选择专家”
   )。如果没有在这里指定字段,子报表将采用主报表的结构。
   单击“确定”按钮。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 录微课时忘词怎么办 微课掌上通看不到信息怎么办 五年级学生上课很吵新老师怎么办 跟财务老师吵起来怎么办 qq把微信冻结了怎么办 微信给封号了怎么办 微信久了没登录冻结了怎么办 换手机号了微店怎么办 ai文件置入后都是字怎么办 excel加载项被禁用了怎么办 被期刊网骗了怎么办 发表的文章不想被收录怎么办? 农村长说的眼睛害了怎么办 普通党员不认同领导的决定怎么办 大学读不下去了怎么办 教师因病长期不能上班怎么办 长按win键黑屏了怎么办 巡视组巡视出问题后续怎么办 货运资格证两次没继续教育怎么办 电子注册备案表学信网查不到怎么办 学信网学籍档案没照片怎么办 信访局不给答复怎么办 发票跳了一个号怎么办 报税用的ca证书怎么办 报税u盘丢了怎么办 地税ca证书丢了怎么办 深圳ca证书丢了怎么办 武汉国税报税证书过期怎么办 江苏大学专业选修课挂了怎么办 电信翼企享福卡怎么办 教育部学籍在线验证报告过期怎么办 身份证被别人注册了学信网怎么办 大专文凭查不到学籍该怎么办 学信网上查不到学历怎么办 学信网上没有学历照片怎么办 学信网上没照片怎么办 学历认证报告丢了怎么办 学历认证弄丢了怎么办 手机系统安全证书有问题怎么办 台式电脑的浏览器证书出错怎么办 网上银行k宝密码忘了怎么办