- 相关推荐
全通用关系型表格打印模块设计研究论文
打印的表格按栏目嵌套分类,一般有两种基本类型。一是关系型表格,即表格内各栏目之间是一种平行的关系,不存在栏目之间的嵌套;二是结构型表格,即表格内有的栏目有更下一级的小栏目,可能某些小栏目还会有更下一级的子栏目,从而形成表格中的栏目嵌套,反映栏目之间数据的包含与被包含关系。从这两类表格的应用频率看,关系型表格简便适用的优点更为人们所青睐,因而使用很普遍。本模块专门针对关系型表格打印而设计。
关系型表格全通用打印是指在指定的关系型数据表(指*.DBF文件,下同)文件中,可任意选择打印字段(形成表格中的栏目),任意筛选打印记录(形成表格中的各行),从而实现随心所欲的关系型表格打印,其通用性主要体现在适应任何数据表文件的表格打印方面。本设计就以会计软件中的打印功能为例。
一、设计的目的及意义
会计是一个专门处理一定时空范围内经济数据的信息系统,其数据量大、动态性强、结构复杂,表格在会计核算中被广泛使用,会计主要是利用表格形式定期和不定期地提供会计信息。实现会计电算化以后,很多各种格式的账表需要打印输出,其账表打印的工作量很大,一方面要满足会计档案存档保存的需要,另一方面又要满足各项经济管理的需要。因而表格打印始终是会计软件中一个十分重要的模块,尤其是全通用表格打印更具有十分重要的理论意义和实践意义。
从目前系统软件提供的表格样式看,一般主要有Vis-ualFoxPro(以下简称VFP)表格、Excel电子表格、Word表格、Html超文本表格4种。其中VFP表格是软件本身提供的一种表格,它的表格处理功能远不及Excel电子表格和Word表格,而Html超文本表格的优点是可以在网上发布,同时它本身还提供将超文本表格很方便的转换为Word表格的功能。VFP本身不能同时提供Excel电子表格、Word表格和Html超文本表格,但我们完全可以立足于VFP系统,借助于Windows的某些功能,从VFP的关系型数据表文件中采集数据,同时打印输出上述4种样式的表格,从而将数据交换和表格打印集于一身,实现全通用表格打印,弥补VFP系统本身报表设计器的不足.
因此,有必要设计一个全通用打印模块实现以下两个方面的功能:一是利用VFP系统报表设计器的某些功能,弥补该设计器的不足,实现VFP表格打印输出;二是实现上述4种样式表格的全通用打印输出,以VFP的*.DBF表文件为基础,实现各种表格的数据交换。顺利兑现这两大设计目前具有十分重要的积极意义。
不论是VFP,还是ORACLE、POWERBUILDER等等,它们自身都附带了报表设计器,用户可以根据需要灵活应用,设计出不同格式的报表。但由于VFP、ORACLE、POWERBUILDER等都是国外开发的系统软件,这些软件事先拟定好的报表格式一般都不符合中国人对表格的审美观,即打印输出的表格不具有中国特色。中国人普遍认同的报表格式即带有报表名称,左右标题,左右注脚,尤其是有网格型的表格。另外,VFP系统附带的报表设计器由于过度迁就操作性,以致不能满足使用者灵活多样的需要,报表一经定义好,格式基本上就已经定型,所有的信息都保存在,FRX和.FRT两个报表文件中,其中的字段个数、字段捧列顺序、源数据表、索引名称、栏目宽度、栏目标题、报表样式等都已经固化在文件中,若需修改则要进行繁琐的面向对象操作,使用起来很不方便。
VFP从DOS版本发展到现在,报表功能已经很强大了。过去在DOS状态下打印表格,其表格线是按特定的11个表格线符号,按字符控制的,DOS的这种设计方法由于Windows的象素控制原因已经很不适用。在DOS环境下,报表设计方式是将报表生成的各大要素保存在内存变量中,在需要时,可以恢复内存变量直接运行程序即可打印出自己事先定义好的报表。这种方式下,不存在Windows下象素的影响,打印的表格整齐美观,而且速度较快,但这种打印方式有个致命的缺点,就是每次都要自定义打印参数以及打印的五大要素,然后保存在内存变量文件中,这种打印方式增加了工作量,而且缺乏通用性和灵活性。PoxPro发展到Windows环境,由于象素的关系,原有报表设计方式显然有自身的缺点,因此报表的设计一直是困扰VFP开发者的一个难题。在VFP面向对象的编程环境下,为了体现面向对象的优点以及解决象索的问题,报表设计器由此诞生。报表设计器的原理就是提供一个面向对象的界面给操作者通过手工操作,然后将操作者的定义内容保存到.FRX/.FRT两个文件中,在生成报表时,再从报表文件.FRX/.FRT两个文件中取值从而生成报表。从报表生成的原理中我们可以看出,操作者定义的所有参数保存在.FRX/.FRT两个文件中,那么,我们只需研究.FRY/.FRT文件的结构,然后对其中的值根据自己的需要不就可以定义出我们所需的报表了吗,并且完全可以脱离报表设计器繁琐的操作和固定的格式,我们可以随心所欲地进行定义,从而一个全通用的报表设计方式变成了可行。利用VFP强大地数据处理能力,从而可以事先对选定数据表的任意字段、任意捧列顺序,按需要任意定义条件打印,利用VFP内存变量可以事先自定义大标题、小标题、左标题、右标题、左注脚、右注脚以及左页边距等等,利用微软产品集成的特点,可以灵括与我们常用的软件进行数据交换,实现优势互补。众所周知在微软产品中Excel具有强大的数据处理能力以及最强大的打印预览功能,WORD具有很强大的文字管理功能,对于表格WORD格式提供了许多的自动套用格式,从而可以打印出各种各样类型的报表,加上强大的文字处理功能,从而可以设计出各种各样所需的报表;在网络环境下,网络数据查询以及WEB发布必不可少,因此HTML超文本表格就极具实用价值。由于我国普遍使用的是网格型报表打印,因此本系统只有默认的网格型报表一种方式,但这种方式已经基本能满足各个企业不同财务报表打印的需要了。
二、模块组成及功能
(一)模块文件构成
本关系型表格全通用打印模块的系统磁盘文件有以下三个。
1.表单文件(KHLSC)(和KHI.SCT)两个,其中KHI.
SCX是表单的库文件,KHI.SCT是表单的备注文件。每设计一个表单均有这两个磁盘文件,利用表单设计器直接操作的是KHLSCX文件。众所周知,表单设计器中有很多控件可供使用,利用这些控件既可设计出较好的界面,又可由操作者现场指定打印参数。关系型表格全通用打印设计中,有很多与打印有关的参数,需要利用有关控件进行大量的人机交互来确定,因而必须利用表单进行设计,而不可只用命令文件来设计。
2.打印文件的登录表文件(DYMEM.DBF)一个。该表文件主要是为表单中的组合框控件赋值提供数据,它有三个字符型字段,即“数据源表”、“报表文件”、“报表名称”和一个“打印设置”备注型字段,它登记了当前目录所有打印文件及其相匹配的数据源表文件和报表名称,随着新建或删除操作的进行,该表文件中的记录会动态更新。
(二)模块主要功能
1.新建打印文件功能
(1)可以选择本机任意文件夹中的DBF文件,也可以选择网上邻居中计算机中的DBF文件,使打印不只限于本机当前目录的DBF文件,还可通过数据转换接口将其他软件的数据导入进行打印。
(2)打印任意字段任意排列顺序的功能。可以选择当前打开的数据表的任意字段打印,可以灵活地进行选择,操作在选择之后撤销选择也可以恢复字段初始的排列颐序。
(3)选择任意字段组合进行升序、降序撑列的功能。
(4)自定义表头大标题、小标题、左标题、右标题、左注脚、右注脚功能。系统默认大标题为当前打开数据表以绝对路径形式返回的文件名称,小标题赋值为空,右标题默认为打印带总页数的页码,操作者若不想打印页码也可以自定义右标题,左注脚默认为打印操作者,右注脚为打印日期,这些参数操作者都可以修改。
(5)自定义打印标题栏标题的功能,操作者可以修改打印栏目的标题和打印栏目的宽度,并且可以在原选定字段的基础上再次确认打印的字段,但是注意打印字段不要修改。
(6)由系统自动生成逻辑条件和操作者自定义逻辑条件的功能,既方便了专业操作者灵活操作又兼顾了普通操作者的简单使用。
(7)提供强大的各种不同方式的打印功能,包括VFP报表打印,Excel电子表格打印、Word表格打印、HTML超文本表格打印功能。可以充分利用Excel电子表格的数据加工能力和公认地最强大地打印预览功能,Word表格的表格样式及文字处理功能、HTML超文本表格的WEB发布功能既便于打印也便于数据的发布。
(8)操作者可以选择打印表头表尾,也可以直接打印表格的功能,以及各个打印参数的保存以备下次直接打印或编辑时使用.自定义打印左页边距的功能,可以使操作者根据表格的宽度和纸型根据需要自动进行调整。
(9)自定义表头字体和表体字体的功能,对打印机进行打印设置的功能。可以选择打印机,打印纸型,打印方向等等。该功能对HTML超文本表格不起作用。
2.编辑打印文件功能
此功能是将事先保存在打印内存变量中的文件参数赋值给表单中的各个控件,可以方便操作者修改和观察。该功能要用到一个报表登录文件DYMEM.DBF,该功能只对VFP报表起作用。操作者可以再次选择打印字段,若字段改变则初始化的打印栏目标题也随之改变,未被选中的事先选择的捧序字段将被过滤掉:也可以重新定义表体栏和栏目宽度等等,该功能是新建功能的重复,只是增加了对各个控件(包括初始打印字段,拌序字段、排序类型、表头表尾项目、左页边距、栏目标题、栏目宽度、是否打印表头表尾等)初始赋值的功能。
3.打印输出表格功能
此功能可以方便对原先定义好的报表文件(以下划线开头的内存变量文件,该文件中保存有以DY打头的22个内存变量)直接进行打印,并且该功能不会产生.FRX和.FRT文件,这种类型的文件由程序自动生成,系统仅作为临时文件使用。此功能只对VFP报表起作用。
4.查询打印信息功能
操作者可以查看已经建立的打印文件的己选字段、未选字段、源数据表以及系统定义的22个打印内存变量,和打印文件参数。
三、系统设计思路及数据流程图
(一)全通用关系型表格打印实现原理
1.报表的构成
一般情况下报表包含表头、表体和表尾三部分:
(1)表头。在每页的顶端,显示报表的标题及其他提示信息等。
(2)表体。包含报表的主体,是报表的关键部分,一般由循环数据项构成。
(3)表尾。出现在每页的底端,显示打印操作者、日期等文本信息等。
2.VFP报表信息库的结构
我们知道在VFP中,报表的信息是保存在以.FRX为扩展名的数据库文件中(备注文件以.FRT为扩展名),了解报表数据库的结构有助于问题的解决。报表库(.FRX)的结构有74个字段,各字段的主要参数摘录如表所示。
3.常用控制对象的特征
报表数据库的字段Objtype(对象类型)和Objcode(对象代码)的值确定了控制对象的类型。为节省篇幅仅把最常用制表控制对象(文字,直线,表达式等)的特征值如表2所示。
其他常用到的字段有:①水平坐标(Hposh②宽度(Wid-th);③表达式类型(Fillchar);④字体(Fontface);⑤对齐方式(Offset)。
4.全通用关系型表格打印的实现
从数据库中自动读取字段名、类型、宽度,通过修改报表库(.FRX)的内容达到动态制表的目的,其算法设计如下:
(1)栏目宽度:定义二维数组XMCD(NJSQ,4)用于存放中间打印结构表(TEMP STRU.DBF)的结构信息:
(2)打印栏目标题及字段变量名称:从中间打印结构表(TEMP STRU.DBF)获取打印栏目宽度存入数组MXZD(NJSQ,3),字段变量存入数组MXZD(NJSQ,1):
(3)获取打印表头表尾项目,通过自定义方法程序AP-PHEAD自定义方法程序向报表添加表头项目;
(4)通过自定义方法程序APPLINE自定义方法程序向报表中添加线条;
(5)通过替换命令REPLACE对.FRX文件中的参数进行修改以获得我们所需的网格型表格样式,修改方式同修改.DBF文件一样。
最后,报表生成之后,若需要通过Excel、Word或超文本表格方式输出报表,可利用createobjed()函数将表格直接输出到相关软件。
从以上动态VFP报表的实现原理可看出,本设计打印输出VFP的表格只是巧妙的充分利用了它的.FRX库,存在磁盘上的报表文件却是*.MEM文件,而不是它的报表文件.FRX和.FRT。
四、小 结
本设计所研究仅仅是利用VFP实现通用关系型表格打印。但是,基于此设计思想,深入设计还可实现多行表头的结构型表的打印,字段合并和分解打印、更复杂的单据打印以及自定义纸张,自定义打印机等等,但目前在国内外还没有一个软件能够将所有功能包容其中。要实现一个真正的全通用表格打印,而不仅仅限于关系型表格的通用性,这些问题还有待进一步深入研究。
主要参考文献
[1]黄昌勇,电算会计基础[M].上海:立信会计出版社,2002.
[2]张洪举.visualFoxPro程序设计参考手册[M].北京:人民邮电出版社,2004.
[3]Jeffrey D.Ullman Jennifer Widom AFirst Course ln Database Systems数据库系统基础教程(影印版)[M].北京:清华大学出版社,2000.
[4]陈隆伟等.会计电算化全通用理论与会计软件的全通用[J].财会月刊(会计),2005,(4).
【全通用关系型表格打印模块设计研究论文】相关文章:
本钱模块改进的研究论文04-27
飞机装配型架模块化设计技术研究05-03
25型客车的模块化设计04-26
应用型本科毕业设计(论文)与学生应用能力培养的关系研究05-02
城市规划设计和建筑设计之间的关系研究论文04-27
飞机飞行仿真系统核心模块设计研究05-02
YPDM-2型移频电码化模块的设计04-30
作业成本法下成本模块改进的研究论文04-28
干涉型全光纤退偏陀螺中偏振过程的研究04-26
宁夏一研究生打印论文超千页04-30