分享
 
 
 

快速掌握 CrystalReport for .net

王朝c#·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

几乎在所有的应用程序中报表都是程序员头疼的问题。在.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 中右击,指向“插入”,单击“子报表”。

将子报表对象拖动到报表上。

选择项目中的一个报表、另一个现有报表或为子报表创建一个新报表。

选择“按需要显示子报表”以便能够在需要时检索子报表上的数据。否则,所有子报表数据将与报表一起出现。

注意 使用按需要显示子报表将提高包含子报表的报表的性能。

如果需要将子报表链接到主报表中的数据上,请单击“链接”选项卡。

从“可用字段”列表中选择要在主(包含)报表中用作链接字段的字段。

使用“字段链接”部分(只有在选定了链接字段后才会出现)为每个链接字段设置链接:

从“使用的子报表参数字段”中选择要链接到主报表的字段;

选择“基于字段选择数据”复选框,并从相邻的下拉列表中选择字段,以便基于特定的字段组织子报表数据(这相当于快速使用“选择专家”

)。如果没有在这里指定字段,子报表将采用主报表的结构。

单击“确定”按钮。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有