FastReport在通用报表模块模型中的应用—通用报表模型的设计

2011-02-19 00:45张前程
中国科技信息 2011年24期
关键词:字段控件列表

张前程

北京青年政治学院,北京 100102

FastReport在通用报表模块模型中的应用—通用报表模型的设计

张前程

北京青年政治学院,北京 100102

本文简要介绍了FastReport报表组件,设计并实现了一个通用报表模块模型,此模型允许系统开发者或者系统管理员在不更改系统源代码的前提下对系统中的报表进行增加或者修改,并允许最终用户在打印输出时控制报表的数据和输出格式。此模型不依赖具体的应用,具有通用性,可以应用于其他的管理信息系统。

FastReport;报表;管理信息系统

引言

随着信息技术的发展,管理信息系统的应用范围越来越广泛,作为管理信息系统的一个重要组成部分,报表模块的功能和作用不容忽视。一般来说,报表的功能主要有两类:一是将管理信息系统中的数据以票据形式输出,作为交易或其他活动的凭证;二是将管理信息系统中生产层、市场层等管理活动过程中的原始数据经过信息加工后转换成有用信息以表格、图形等各种形式输出,提供给系统使用者,为决策者做出正确决策提供支持。

笔者基于FastReport设计了一个通用报表模块模型,此模型能够满足不同系统不同用户的需求,允许系统开发者或者系统管理员在不更改系统源代码的前提下对系统中的报表进行增加或者修改,并允许最终用户在打印输出时控制报表的数据和输出格式,十分灵活。模型成功应用于我们开发的一套电费管理信息系统中,取得了预期的效果。此模型不依赖具体的应用,具有通用性,可以应用于其他的管理信息系统。

1、FastReport简介

不同单位不同应用的使用需求具有较大的差异,最终用户在很大程度上是以生成系统报表的方便性和灵活性两个指标来评价系统的成功与否。对于管理信息系统的设计者和开发者来讲,需要选择一个简单易用并能够满足最终用户需求的报表组件。

FastReport是高弹性的报表设计器,用于报表的数据可以从任何类型的数据源获取,FastReport不仅包含最终用户更改报表设计的能力,而且能够适应查询和数据库的变化。另外,FastReport还包含自己的脚本语言,让应用程序和最终用户能够更容易地改变报表。

FastReport包含一组方便灵活的报表工具控件:报表引擎、报表设计器、报表预览控件。FR设计器提供了Text、Band、Picture、SupReport及Barodoe等对象,同时内嵌强大的类Pascal脚本语言解释程序,用户可以任意使用这个设计器,只需使用鼠标就可以创建大多数报表。

使用FastReport设计报表时至少要用到两个控件:

1.1 TfrxReport控件是主要的报表生成控件。用于编辑报表,在设计时双击这个控件打开报表设计器窗口。这个控件是所有报表都必需的,用于确定报表设计和版面。

1.2 TfrxDBDataSet控件为报表提供数据源连接。一般的管理信息系统报表的数据都是从数据库中取出来的,使用TfrxDBDataSet可以指定数据源,数据源可以是Ttable或TdataSource。在报表中的每个数据区域必须有一个这个控件的实例。

2、通用报表模块模型设计

一个通用的报表模块允许开发者或者系统管理员能够在不更改系统源代码的前提下,往系统中增加一些报表或者修改现有的报表。并允许系统最终用户在实际打印报表时对进行输出项目选择,并对数据进行筛选。一个典型的管理信息系统中,一般包含用户权限的管理,对于报表模块来讲,不同的用户角色,其使用报表的权限也是不同的。所以报表模块也应该具有权限管理的功能。

我们的模型在实现中主要包含两个表S-Report和S-ReportRight。其中SReport是这个模型的核心数据表,用于实现报表权限管理,该表结构为:Report-ID(报表的ID)、Type-ID(报表类别ID)、ReportName(报表名称,报表输出时的标题)、ReportDescription(报表描述,用于向最终用户介绍此报表的功能和使用方法)、TableName(表、视图名称,用于确定从那个表、视图中取数据)、FieldsName(候选字段名称列表:可以用于报表中输出的字段列表)、FieldsAlias(候选字段对应的中文名称列表:用于在报表中列的标题)、FieldsType(候选字段类型列表,用于报表输出时对数据进行格式化)、SqlField(用户选择的字段列表)、SqlWhere(数据筛选条件)、SqlGroup(数据分组条件)、SqlOrder(数据排序条件)AccountField(需要合计的字段列表)、ColWidt(报表输出列宽设置)、PaperType(纸张类型选择)、Orientation(打印方向)、frxFile(报表模板文件)。在实际的应用中,核心数据表中每一条记录对应一个报表,以Report-ID标识。其中序号5~12的字段用于生成从数据库中查询数据的SQL语句。序号14~16用于生成报表结果时的输出格式的限制。

TableName标明此报表的数据从哪一个数据表(视图)中查询,FieldsName是TableName中可以用于报表输出的所有字段列表,FieldsAlias是FieldsName中所列各个字段对应的中文名称列表,这个主要是因为数据库中一般使用英文字符作为字段名称,而在报表输出时,各列的标题一般使用中文。FieldsType是FieldsName中所包含的各个字段的类型的标识,用于报表输出时的格式控制,例如表示价格或者金额的数据,要输出一个人民币符号“¥”,并且精确到小数点后两位。SqlFields用于标识最终用户选择了TableName中的哪些字段进行报表输出。SqlWhere表示TableName中符合什么条件的数据才会被输出到报表,也是可以让最终用户设置的SqlGroup是数据分组条件,用于进行数据分组。SqlOrder用于把从TableName查询出来的数据排序。AccountField用于标识哪些字段需要进行合计。

S-ReportRight用于实现报表权限管理。报表权限管理数据表结构和各个字段的含义为Report-ID(报表ID)、UserGroup-ID(用户所属组ID)。一个属于用户组(G1)的用户(User1)拥有查看输出一个报表(Report1)的条件是当且仅当在报表权限管理数据表中存在一条记录(Report1,G1)。

在一个典型的报表使用过程中,用户进入报表选择界面,此界面上显示了当前用户拥有操作权限的报表列表,并按报表类别分类列出。用户选择任一报表,界面上列出此报表的标题(ReportName)和描述(ReportDescription)。用户确认之后,根据此报表对应的S-Report中的记录,生成一个SQL语句,并从数据库中获取数据,并将数据显示在报表打印界面中,在此界面上,用户可以进行数据列选择、数据筛选、纸张选择、打印方向设定、输出列宽设定等各项操作,这些操作的结果会保存到S-Report表中,以避免用户下次打印的时候重新设定。用户的这些操作将导致数据查询SQL语句的变化,报表打印界面将使用新的SQL语句查询数据并显示。之后在用户进行报表打印之前,系统根据SReport中frxFile字段打开报表模板文件,并使用查询出来的数据进行报表生成。

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

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

10.3969/j.issn.1001-8972.2011.24.043

猜你喜欢
字段控件列表
图书馆中文图书编目外包数据质量控制分析
学习运用列表法
基于.net的用户定义验证控件的应用分析
扩列吧
关于.net控件数组的探讨
列表画树状图各有所长
CNMARC304字段和314字段责任附注方式解析
无正题名文献著录方法评述
关于CNMARC的3--字段改革的必要性与可行性研究
2011年《小说月刊》转载列表