基于FastReport图片报表的设计与实现

时间:2022-10-23 04:05:52

基于FastReport图片报表的设计与实现

摘要:简要介绍了FastReport报表设计器并重点讨论了其特点和设计步骤,同时在Microsoft Visual Studio 2005环境下,以FastReport设计的图片报表模板为例,详细描述了设计和实现报表的整个过程,最后给出了实例代码。FastReport是一组方便灵活的报表工具控件,它包含报表引擎、报表设计器、报表预览控件。因此使用FastReport制作的报表满足了报表的灵活性、可维护性等要求,同时解决了当前国内报表格式复杂多样、设计难度大等问题。

关键词:FastReport;图片报表; 报表模板;控件

中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)34-1653-02

Design and Implementation of Universal Report System Based on FastReport

HAN Yu, DONG Li-li

(Information & Control Engineering college, Xi'an University of Architecture & Technology, Xi'an 710055, China)

Abstract: FastReport and discusses principles emphatically and design steps were introduced. In the environment of Microsoft Visual Studio 2005, as an example of image report in the design of FastReport, it details how the process of designing and showing image report is realized in the system. The demo codes are provided in this paper. FastReport is a convenient and flexible control, which contains report engine, report designer, preview report control. So the solution project can meet the requirement of universal flexibility and maintenability of the report, and also solve all kinds of complex report and the difficulty of designing report in current.

Key words: FastReport; image report; report model; control

1 背景和意义

报表是管理信息系统的重要组成部分,其作用是将生产层、市场层等管理活动过程中的原始数据经过信息加工后转换成有用信息,为决策者做出的正确决策提供支持和帮助[1]。在系统运行中,用户在很大程度上是以生成系统报表的方便性和灵活性两个指标来评价系统的成功与否。针对传统报表系统格式复杂多样、设计难度大等方面的不足,本文引入了FastReport报表设计器,它包含一组方便灵活的报表工具控件,同时内嵌强大的类Pascal脚本语言解释程序,并且包含非常吸引人的用户界面等,从而在很大程度上弥补了传统报表的不足[2]。

2 FastReport的特点和设计步骤

2.1 FastReport的特点

FastReport(简称FR)是一组方便灵活的报表工具控件,它包含报表引擎、报表设计器、报表预览控件。FR设计器提供了Text、Band、Picture、Supreport、RIChText、CheckBox、OLE、Chart及Barodoe等对象,同时内嵌强大的类Pascal脚本语言解释程序,并且引入了非常吸引人的用户界面,使用最新的用户界面组件,例如可停靠的工具栏。用户可以任意使用这个设计器,只需使用鼠标就可以创建大多数报表[3]。

2.2 FastReport的设计步骤

创建和设计报表由下面几步构成,如图1所示:

图1 FastReport设计步骤[2]

2.2.1 数据

大多数报表是从数据库中查找数据。Delphi本身提供了高效地数据库访问机制。这些机制也同样适用于FastReport。TTable和TQuery组件也可以作为报表的数据源。总的来说它可以使用任何一个从TdataSet组件继承的子类。除了数据,存储在数据库中,FastReport事实上可以使用任何数据源(数组,文件,字符网格等等)。在这种情况下,程序必须自己控制非数据库源的存取。在FastReport中有一些事件集允许程序传递数据到FastReport的核心。

数据的存取与所有的报表生成器类似。所有的报表生成器都能处理放在项目窗体上的数据感知控件。除了存取数据,FastReport允许在运行时创建新的控件。在FastReport中,设计者可以放置控件在窗体上,并在对象观察器中改变它的属性。控件的感知是非常灵活的:它能够简单地创建新的对象用于支持不同的数据引擎。

2.2.2 参数

用户可以输入参数。例如用户可以输入这些:数据范围,一个学校名称,一个学校代号等等。少数报表不在所有的页中使用参数或使用固定的参数(不需要在对话框中取值)。参数的处理在报表生成器中有不同的实现。

FastReport允许最终用户开发对话框:有一组标准控件,并能被拖放到对话框窗体上。如果需要,也可以改变它们的属性。同样,FastReport内置语言允许使用伪Pascal脚本语言创建对话框,并输入变量到核心部分。

2.2.3 窗体

报表窗体本身就是描述怎样可以看到正确的报表。为了实现报表分组区域, FastReport引入了“区域”的概念。有两种类型的区域:服务器型区域(报表头,页码)和用于报表的多行格式化文件部门的区域(数据区域)。数据区域连接到数据源,内容是数据源中的记录。

报表开发的可视化环境――设计器――是用于构建报表的。设计器的界面由工具栏组成(Toolbars),而且可以根据需要改变它们的位置。

2.2.4 处理

在构建报表的时候,需要处理输入的数据,报表窗体或者控件的修改。例如这样一个处理,用红色来显示某些数据区域重要的数据。把这些数据区域的属性中的字体颜色设置成红色就可以实现了。

2.2.5 准备报表

准备报表是激活FastReport的核心处理并能在点击“预览”按钮后进行预览的过程。与大多数报表生成器不同,它们的报表页面内容保存在图元文件(EMF格式的图像),在FastReport中准备好的报表是一组对象的集合,描述报表处理后各页面所包含的内容。这允许可以修改生成的报表页面,通过在设计器中调用所需的页面[4]。

在FastReport的预览窗口中还有一点与其它报表生成器不同。在细节方面,FastReport预览文档类似于Microsoft Word:在一个窗口中可以立即看到多个页面。

3 基于FastReport的图片报表设计

下面以一个图片报表为例,在Microsoft Visual Studio 2005(VS2005)环境下,具体说明使用FastReport创建和实现图片报表的过程。

3.1 图片报表模板的设计

这个图片报表主要是用来显示每一种鱼的照片和信息等。要创建这样一个图片报表,首先,在报表设计器的左边一列有很多控件,用户可以直接选择“标题”、 “页标头”、 “主项数据”、 “页注脚”等控件band到页面上,然后在它上面放置所需的对象。在“页标头”上放置的对象在查询结果显示的每一页都会显示其信息。“主项数据”这一栏会显示查询的每一条信息,当数据量大时会自动进行分页处理。“页注脚”用来显示页码。这里需要注意的是:在“主项数据”这一栏中在属性中需要添加数据源,在图2中的“BioDS”就是数据源;在“主项数据”上面放置的“图片”控件是用于图片的显示,这个控件也是需要添加左边一列的控件band到页面上的。

设计完这些后,如果按设计器中的预览按钮,就会看到标题“Fishes”行在绿色的背景上,页面头“Fabourite fishes of Inprise Corp.”在标题“Fishes”下面显示,“页注脚”也会显示“1”。这是因为 “主项数据”区域虽然设置了数据源“BioDS”,但数据源“BioDS”没有数据。只有“主项数据”区域连接到有数据的数据源“BioDS”,“主项数据”区域才能显示信息。

3.2 在VS2005环境下的设置

在VS2005环境下,创建一个用来浏览这个图片报表的Web网站时,需要添加ReportMachine.webreport.dll控件到“工具箱” 的“.NET Framework 组件”中。完成以上步骤后,只需用鼠标拖动“工具箱”中的“RMWebReportEngine控件”到Web窗体页面就可以了,RMWebReportEngine控件是一个报表引擎。

3.3 实现报表的核心代码和图片报表的显示

下面是“主项数据”区域连接到有数据的数据源“BioDS”的核心代码,它经过VS2005环境调试通过。

RMEngine.InitEngine();//报表引擎初始化

RMEngine.AddDataSet("BioDS", ds.Tables[0]); //添加查询结果给数据源

RMEngine.SetReportFile((String)Application["RootPath"]+ "image.rmf", 1);

//链接到报表模板

RMEngine.ViewerVersion = (String)Application["ViewerVersion"];

//报表引擎版本号

RMEngine.ViewerFileName = (String)Application["ViewerFileName"];

//报表引擎版本名

这样“主项数据”区域就可以显示信息了。图3是在VS2005下生成的图片报表。

4 总结

利用FastReport设计器可以设计多种报表。本文以图片报表为例,详细地描述了FastReport的特点、设计思想、创建报表模板的过程,并在VS2005环境下实现了基于Web 服务器端的报表。

通过上述实例,可以看出FastReport强大的功能,可以快速灵活的使用,在很大程度上减少MIS系统开发和维护的工作量,减少报表设计人员的工作量,给系统开发人员和设计人员的工作提供了便利,大大地提高了系统开发和维护的效率。

参考文献:

[1] 张向群,张一品.基于FastReport组件的复杂报表的设计与实现[J].许昌学院学报,2005(9).

[2] 葛涛.Delphi中运用FastReport设计和制作报表[J].微型电脑应用,2004(3).

[3] 赵明炬,周柏青.FastReport分组报表开发技术研究[J].吉林化工学院学报,2006(8).

[4] FastReport设计器使用指南[S].天网软件2006:7-11.

上一篇:基于Web的企业办公自动化系统 下一篇:VRML在网络三维游戏设计中的应用