通用动态报表工具的设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通用动态报表工具的设计与实现
通用动态报表工具的设计与实现
1 引言
在计算机信息技术飞速发展、信息化系统广泛应用的今天,报表是办公自动化及管理信息系统,专家系统,决策支持系统等中信息处理和交互的主要方法、主要手段之一。
本文所介绍的动态报表工具的最大特点是将数据检索规则交给用户,由用户根据自身的需求自由进行检索,按照自己的需要进行报表样式的设计,突破了传统系统将查询功能和报表样式定死的设计,从而使通用数据库系统报表的动态实现变成了可能。
即满足了用户对报表灵活多变,自由控制,实时准确的需求,也极大的降低了系统运行和维护的成本。
2 通用动态报表工具系统结构设计
报表生成工具的体系结构由三大部分组成:第一部分是数据提取部分:主要实现从各业务处理系统生成的数据库中访问数据的功能;第二部分是业务处理或商业规则层,主要完成在数据提取获得的数据的基础上进行各种处理;第三部分是界面设计部分:主要实现界面的设计功能。
因此报表系统的设计可以从以下几个方面来展开。
2.1 数据提取部分的设计
2.1.1 数据存取技术
对数据库的数据访问技术有很多,我们就其中有代表性的进行一下介绍并对其行简单的比较。
方法一:直接调用SQL API。
这种方法要求程序设计人员对SQL API函数的功能相当熟悉,因为不同数据库的API并没有对不同的数据库访问方法进行封装,可以称作是数据库级的数据库访问接口,因此调用以及调试都相当困难,但这种方式运行速度快。
方法二:通过ODBC或者BDE的方式访问数据。
这种方式是对要SQL API方式的改进,这样就可以使用一个通用的API(ODBC或者BDE)来访问不同的数据库,也是一种好的访问远程数据方法。
通过
ODBC进行的编程方法相对于SQL API可以说比较容易也比较方便,但是每次使用,都需要手工配置,相对来说比较麻烦,并且由于ODBC增加了转换的层数,效率也不高。
方法三:ADO技术,随着COM技术应用获得成功,Microsoft 开始用OLE DB代替ODBC。
OLE DB被Microsoft归类为系统级的接口,它被设计用来给系统级的程序员,然而虽然它的内容非常复杂,功能非常强大,但容错性差,并且对程序员的要求很高,需要较高水平的知识,因此生产力较低,因而Microsoft 又推出了一种新的数据存取方式,Active Data Objects也就是ADO技术,ADO可以说是在OLE DB之上的一个层面,被认为是应用程序员级别的接口。
它比OLE DB要简单的多,而且容错性更好,此外,它还有更多的优势:首先不仅可以通过ADO对象对数据库进行查询,作增加修改数据库的记录等操作,而且可以调用SQL SERVER,Oracle等大型数据库系统的存储过程增强对数据库的操作控制能力,极大地提高数据库操作的效率。
其次,在ADO技术中加入并且增强了对XML技术的支持,为数据的处理和转换提供了强大的支持。
因此ADO技术一出现,就被广大程序员所接受和喜爱。
成为当前数据存取的主流技术。
本工具采用的就是ADO技术,做为数据库访问技术。
2.1.2 动态SQL语言技术
传统报表工具,之所以不具有动态性,是因为在实现过程和技术上,通常都是将SQL
语言根据报表的数据要求,固化在程序之中,因而报表数据就成了死数据,达不到动态的功能。
在本文介绍的动态报表工具中,为了能达到动态获取数据的功能,以ADO技术为基础,采用了动态SQL 语言技术。
也就是说,在本工具中,数据操作语言不是固化在程序中的,而是根据用户的实际操作来动态生成的,这也是本工具实现的关键基础技术。
2.2业务处理部分的设计
2.2.1表格设计知识及报表模型
报表主要可以分为两类,一类是静态格式报表,例如财务报表、
专用票据等等,其主要特点是格式固定,并且形式要求严格,不可随意改变;另一类是动态格式报表,例如统计报表,这类报表的特点是报表数据量可能很大,报表格式会随数据内容的变化而变化。
尽管表格千变万化,但只要仔细探究便会发现表格组成的一些有规则的东西,它们是人们在长期表格设计中所形成的经验,这是一种专门的知识,人们称为表格设计知识。
通过对报表的分析可以对报表进行抽象,通常可以将报表抽象分解成为标题、表头、表体、表尾等几部分。
标题和表头主要用于标明报表内容信息或者打印日期等附加信息的处理。
表体就是报表的主体部分,也是报表的核心部分,通常是报表用户最关心的数据所在,本部分一般包括数据字段名称,数据主体,小计等等的处理。
表尾一般就是报表日期,报表总计,打印日期等附加信息。
2.2.2报表业务处理过程
本系统的业务处理流程如图1所示
1)系统启动后,首先进行数据源的选择,根据系统的提示,进行选择操作。
比如说选择SQL SERVER2000中的某一数据库,某一表的数据。
或者选择ORACLE中的某一数据库。
2)数据按照需要来进行选择,过滤,运算,排序等等操作。
3)对完成数据操作的报表格式和样式进行调整和设置。
比如说设置报表标题,设置报表内容的字体,设置网格的风格。
4)输出报表的结果,可以预览,打印报表和图表,也可以将报表以文本,EXCEL文档,HTML文档,XML文档等多种格式输出。
图表也可以用JPEG,BMP等格式进行输出。
2.3界面设计
传统报表的界面样式也是在报表的设计过程中设定完成,不可改变的,本工具的一大特色就是用户可以对界面样式进行动态的设定,比如说可以设定报表头,报表体等的颜色,可以设置是否显示成为表格状态,可以设置表格线的颜色,可以设定报表各个部分的文字样式等。
使用户设计的报表更加直观和美观。
3通用报表工具的具体实现
下面就按照操作流程对报表工具的设计和实现进行进一步的介绍:首先按照数据库连接向导的提示,选择所要操作的数据库,系统就会自动生成动态SQL 语句连接相应的数据库,并由数据库的安全性对用户的身份进行验证,与此同时,就会利用系统的存储过程,自定义的存储过程,对系统进行系统的初始化动作,并取回数据库系统的信息,包括数据库中所包含的数据库信息、表信息、数据视图的信息及表之间的关系等信息,为后续的操作奠定基础,同时,根据所选定的数据库类型确定后续动态SQL语句的语法和解析格式。
因为不同数据库的SQL语法,所支持的函数,操作是不尽相同的。
在确定了数据库类型之后,下面就是选择具体的数据表和数据等确定数据源的操作了,当操作者选定某一表或视图后,报表工具系统会自动过滤出与之相关联的表或视图,减少操作人员出错的机会。
然后可以对得到的数据进行进一步的操作,以得到所需要的数据信息,比如说可以对数据进行一些过滤,选择出满足一定条件的数据,或者创建新的计算而得到新的字段,或者对数据进行动态分组或分组计算等等。
这样,就将数据库数据转化为我们所需要的报表数据。
这部分功能的实现,主要依靠动态SQL语句来实现。
报表数据处理完毕后,以后要进行的操作就主要集中在报表样式和输出方式上。
在报表样式上,本系统进行了比较细致的控制,如报表标题,字段名,分组计算的组脚,数据部分
的表格线是否显示等等,报表各部分文字的字体,字号以及报表各部分所要的底色等等,都可以进行控制和设置。
这部分我们可以通过面向对象工具的强大功能,通过编程来实现。
本系统采用的是Delphi作为开发工具。
在完成了报表数据及报表样式等的操作和设定后,就要将操作结果进行输出,比如说进行打印,或者以其它格式进行输出。
这些输出需要通过编程来实现。
另外,本系统比较传统报表工具的进步之处在于,在本系统中,还利用XML技术,加强了对输出样式的控制,通过XSLT样式表对从数据库得到的XML数据的操作,得到最后想要得到
的输出结果样式。
3 结束语
一个报表生成工具的数据访问能力,报表界面的可设计性,业务处理、数据分析能力,界面、数据访问,数据绑定的可分离性等,是报表生成工具的重要指标,是衡量一个报表工具的好坏的重要方面。
通过对数据库以及报表相关技术的深入研究,开发了通用报表生成工具。
该工具在以上方面基本都达到了设计要求,充分表现出灵活实用的特点。
本文介绍的动态报表以Sql server 2000和Oracle为例,进行了设计,本动态报表只与数据库有关,与基于数据库的应用程序无关,因此,本工具的应用,也可以为已经应用的系统作为独立的报表工具来使用,能有效的保护原有投资,本文作者介绍了动态报表工具的设计与实现方法,希望对广大读者有所借鉴,能起到抛砖引玉的作用。