Delphi+Word的数据库系统设计

Delphi+Word的数据库系统设计,第1张

Delphi+Word的数据库系统设计,第2张

Delphi擅长开发数据库系统,功能强大,开发速度快。但是目前大部分数据库系统80%的工作都是简单的增删改。利用数据库系统实现增删功能存在输入不方便、输入内容简单等问题,特别是对于处理大量文本和图片的数据库系统。报表输出还需要使用各种版本的Delphi提供的报表工具或第三方打印控件来开发。虽然Delphi中提供的报表工具越来越强大,使用起来也越来越方便,但是如果想充分利用这个报表工具开发出强大实用的报表,还是要花一些精力去学习这个报表组件的功能。比如Delphi6中提供的Qreport工具,做复杂报表就很麻烦。或许BorLand也注意到了这个问题,所以当Delphi7到来的时候,就换成了Rave report工具,比Qreport好用。但是如果要做复杂的报告,还是需要详细研究。

在做文字处理的时候,国内大部分用户还是习惯使用Office,Word是Office中最常用的一个。所以大部分用户应该对Word的操作非常熟悉,Word在数据录入方面的强大功能真的是无与伦比。在Word中,简单的文字、表格、图片都可以轻松录入,Word本身的打印功能也可以作为报表输出的工具。

Delphi+Word数据库系统的设计思想

结合Delphi和Word本身的特点,数据库系统可以采用这样的设计思想:以Word作为数据输入接口。输入完成后,数据库系统自动从Word中提取数据,并将提取的元素存储在数据表中,以便利用数据库系统强大的数据处理功能对数据表内容进行维护、检索和统计,并使用Word作为报表输出工具。

Delphi从Delphi5开始刚刚提供了Word—twodapplication的接口,可以实现Word的打开、关闭、保存以及文档内容的相应处理。利用上述系统设计思想和Delphi提供的Word数据接口,作者开发了一套成绩管理系统。本成果管理系统的主要内容是管理最终成果文档的内容,包括详细内容、文字图片、成果储备、资金、奖励等。为了便于统计分析,保证成绩内容的一致性,系统将所有要素存储在数据表的相应字段中。如图1所示,下面详细描述该系统的设计思想。


图1系统设计思路流程图
首先筛选必要的成绩要素,使用Word作为输入模板。Word模板常见的有两种方式:一种是在Word文档的相应位置插入书签;另一种是在Word文档的相应位置插入特殊符号。插入书签的具体方法是:选中要插入书签的区域,在Word的插入菜单中选择书签,填写书签名称,点击添加即可。在Word文档中插入特殊符号的思路是:用特殊字符把要提取的内容包裹起来,系统用特殊字符来标识要导入的内容,比如# China #,表示中国就是要提取的内容。但以上两种模板制作方法都有缺陷,尤其是当模板同时作为输出接口和输入接口时。首先,对于使用书签的模板法,用户在实际数据录入过程中很容易误删书签。插入特殊符号的方法无疑增加了用户输入的负担,界面也不美观,没有保持文档的原貌。但是,这两种方法的基本思想是相同的,即创建待提取元素的特征符号。

借鉴上述两种模板设计方法的成功经验,作者提出了模板设计的思想:将结果的所有元素以不同形式存储在Word文档中,以Word表单的特定元素——单元格作为文档内容的识别依据,系统根据Word表单中单元格的索引进行提取。但这种设计思想必须能够处理两种情况:一种是每个Word表对应数据表中的一条记录,即单元格的个数是固定的;另一种是Word表格对应数据表中多行记录,即单元格个数可变的情况。目前笔者开发的系统完全可以自如处理这两种情况。

其次,导入结果文档。导入时一般有两种情况:一种是导入单个成果文档,另一种是同时导入多个成果文档,即文件夹。文档的导入其实就是提取Word文档内容的问题。提取的关键是文档中图片的提取和文档详细内容的提取。在这个系统中,图片格式只能是BMP格式。对于成绩的详细内容,由于内容可能包括文本框、表格、图片等元素,所以采用了SQL Server中的Ntext类型字段。对于图片和细节的提取,使用剪贴板作为Word数据和数据表之间的数据交换媒介。导入时的另一个问题是单元格内容的确定,即如何确定当前单元格内容是数据表字段所需要的。

对于单元格数固定的表格,Word表格中的单元格与数据表中一条记录中的字段一一对应,但对于单元格数可变的表格,必须增加判断单元格内容的功能。同时导入多个文档时,会出现要导入的文档或文件夹中包含其他Word文档的情况,因此需要对要导入的文档进行标识。对应之前的模板设计方法,一般的识别方法是识别添加在文档某个位置的书签或者特殊字符。然而,这两种识别方法的缺陷是显而易见的,识别标记容易被误删除。

然而,文档识别的基本思想是利用文档模板不同于其他文档的特征。借鉴现有识别方法的成功经验,作者提出了一种文档识别方法:从模板本身的特点出发,通过三个约束条件进行判断。首先,结果文档中有三个表;第二,结果文档的第一个表有两行;第三,结果文档的第三个表有两行。上述三个限制足以确保结果文档的正确识别。当然,不同的成绩模板可以根据其具体特点进行分析,这是文档识别的基本思路。

再次是结果文档的导出。导出时,Word中的单元格仍作为标识单位。导出时最常见的问题是,对于多条记录,Word table应该能够根据记录的数量自动调整行数,合并和拆分单元格。在作者开发的系统中,成功地解决了这个问题。此外,从用户的角度来看,系统还实现了整合导出文档的功能,即将多个文档导出为一个文档,极大地方便了用户的浏览和编辑。

为了充分发挥Delphi强大的数据管理功能,系统还提供了手动维护功能,即用传统的系统界面对结果进行添加、删除和修改的功能,保证了修改内容与导出结果文档的一致性,同时方便了查询和统计。

结论

Delphi+Word的数据处理方式可以实现系统的离线使用,符合系统分布式部署的思想,同时也便于用户熟练掌握,符合系统集成的思想。这种全新的数据处理方法在作者的系统中得到了很好的验证和使用,为未来数据库系统的开发提供了一种新的解决方案。采用Word作为数据输入输出前端工具的系统设计思想,同样适用于其他语言的数据库系统开发,尤其适用于大量数据处理的数据库系统。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » Delphi+Word的数据库系统设计

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情