Delphi+Word的数据库系统设计

Delphi擅长做数据库系统的开发,其功能强大,开发快速。但现在大多数的数据库系统80%的工作都是简单的增删改的工作,用数据库系统来实现增删改,存在录入不方便,录入内容简单等问题,尤其对于处理大量的文本和图片的数据库系统来说更是非常不便。报表输出还需要利用Delphi中各个版本提供的报表工具或第三方打印控件进行开发。虽然Delphi中提供的报表工具功能逐渐强大,使用愈加方便,但是如果想充分利用该报表工具开发强大实用的报表,仍得花费一定的精力去学习该报表组件的各个功能。例如Delphi6中提供的Qreport报表工具,对于制作复杂报表非常麻烦,也许BorLand也注意到了这个问题,所以到了Delphi7时,换成了Rave报表工具,该工具相比Qreport更易于使用,但如果要做出复杂的报表,仍需对它详细研究。

在做文字处理的时候,中国的大多数用户还是习惯于使用Office,而Office中最常用的莫过于Word。因此大多数用户对于Word的操作应该说非常熟悉,而Word在数据录入方面功能之强大确实是无与伦比,在Word中无论简单的文本、表格还是图片等都能很轻松的录入,利用Word本身的打印功能还可以将其作为报表输出的工具。

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

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

Delphi中从Delphi5开始恰恰提供了与Word的接口—TwordApplication,利用该接口可以实现Word的打开、关闭、保存以及对文档内容作相应的处理。采用以上的系统设计思想以及Delphi提供的与Word的数据接口,笔者开发了一套成果管理系统。该成果管理系统主要内容是管理最终成果文档的内容,包括详细内容、文字图片、成果的储备情况、经费情况、获奖情况等,为了便于统计分析及保证成果内容的一致性,系统将各要素统一存放于数据表相应的字段中。下面详细阐述系统的设计思路,参见图1。

图1 系统设计思路流程图

首先筛选必要的成果要素利用Word作一个录入模板。Word模板较常见的有两种做法:一种是在Word文档相应的位置插入书签;另一种是在Word文档的相应位置插入特殊符号。插入书签的具体做法是:选中要插入书签的区域,在Word的插入菜单中选择书签,填写书签名称,点击添加即可。在Word文档中插入特殊符号的思路是:将需要提取的内容用特殊字符包起来,系统利用特殊字符识别要导入的内容,例如#中国#,表示中国是要提取的内容。但是利用以上两种模板制作方法都有缺陷,尤其是将模板既作为输出界面,也将其作为录入界面时。首先对于利用书签的模板方法,用户在实际录入数据的过程中,很容易将书签误删除。插入特殊符号的方法无疑增加了用户录入时的负担,且界面也不美观,没有保持文档原貌。但这两种方法的基本思路都一样,即创造要提取要素的特征符号。

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

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

对于单元格数固定的表格,Word表格的单元格和数据表中的一条记录中的字段是一一对应的,但对于单元格数可变的情况,必须增加单元格内容判定的功能。同时导入多个文档时,存在要导入的文档或文件夹中含有其它Word文档的情况,因此必须对欲导入的文档进行身份识别。对应前面的模板设计方法,一般的识别方法是识别书签或者识别在文档的某个位置加上的特殊字符。但是这两种识别方法的缺陷也是显而易见的,识别标志容易误删除。

但文档识别的基本思路是利用文档模板区别于其他文档的特征加以识别。借鉴已有的识别方法的成功经验,笔者提出的文档识别方法是:从成果模板本身的特征出发,用三个限制条件进行判断。一是成果文档中共有三个表格,二是成果文档的第一个表格共两行,三是成果文档的第三个表格共两行。以上三个限制条件足以保证成果文档的正确识别。当然不同的成果模板可以根据其具体特征进行具体分析,这是文档识别的基本思路。

再次是成果文档的导出。导出时,依然以Word中的单元格作为识别单位。导出时的最常见问题是,对于多记录情况,Word表格应该能根据记录数的多少自动调整行数,且进行单元格的合并和拆分。在笔者开发的系统中,该问题也已成功解决。另外,从用户角度考虑,系统还实现了导出时将导出文档合一的功能即将多个文档导出为一个文档,大大方便了用户的浏览和编辑。

为了充分发挥Delphi强大的数据管理功能,系统中同时提供了手工维护功能,即以传统的系统界面进行成果的增删改的功能,这样保证了修改内容和导出成果文档的一致性,同时又便于查询和统计。

时间: 2024-12-29 15:20:23

Delphi+Word的数据库系统设计的相关文章

Delphi + Word = 数据库 + 公文处理

Delphi擅长做数据库类的MIS开发,但对于OA就有点力不从心了.不过随着Microsoft的COM技术逐渐成熟,现在普通Windows应用已经可以和Office97无缝结合了,尤其是在Delphi 5中提供了一组Servers组件,更是简化了程序开发. 最近接触了一个用户的案例,用Delphi控制Word做一个合同管理程序.办公人员先根据业务需要,写好合同的文字,但在用户名称.产品名称等变化的位置填写指定的标记字符串,然后通过Delphi把数据库中的实际数据替换掉Word中的文字,最后让Wo

sql2000数据库-比较新颖的数据库系统设计的课题

问题描述 比较新颖的数据库系统设计的课题 谁能够提供一些比较新颖的数据库系统设计的课题 ,除了哪些经典的数据库系统的课题,比如图书管理系统. 解决方案 教务管理系统 学生: 学生选课(能看待选课和已选,并能看到相应老师 做成上下分帧效果,有保存和提交按钮),查看成绩,查看自己学籍信息 老师: 选课,给学生打分(有保存和提交按钮) 管理员:添加老师,添加学生,添加课程,选课开关

《Oracle达人修炼秘籍:Oracle 11g数据库管理与开发指南 》一1.7 数据库系统设计步骤

1.7 数据库系统设计步骤 1.7.1 数据库设计概述 数据库设计的目标就是为用户的应用系统提供一个高效数据库系统.为了保证数据库设计更合理,数据库的设计工作通常分阶段进行,在不同的阶段采用不同的方法完成不同的设计内容. 数据库设计分为以下6个阶段: 1)需求分析阶段.收集和分析用户对系统的信息需求和处理需求,得到设计系统所必需的需求信息,建立系统的需求说明文档. 2)概念结构设计阶段.通过对用户的需求进行综合.归纳与抽象,形成一个独立于具体DBMS的概念模型. 3)逻辑结构设计阶段.在概念模型

求问delphi里链接数据库后运行出现如下问题,谢谢

问题描述 求问delphi里链接数据库后运行出现如下问题,谢谢 求问delphi里链接数据库(SQL 2000)后运行出现如下问题,进入界面进行数据查询,在edit里只要输入任何东西都会弹出这个运行错误界面..实在不知道到底什么原因了..求大神帮忙解答一下,谢谢! 解决方案 补充!本身界面样子~ 解决方案二: 你的返回的结果集中没有重量这个字段? 解决方案三: 重量这个字段对应的类型不对

在Delphi中处理数据库日期型字段的显示与输入

使用Delphi进行数据库设计时,不可避免的会涉及到日期型字段的输入问题.不过与 Microsoft的Access 97中文版等相比,Delphi本身提供的日期型字段的显示和输入方式并 不适合中国人的习惯. 因此对于日期型字段的处理,大家提出了不少解决方法,但是处理结果在显示和输入 上并不统一,例如显示时可以实现"yyyy年mm月dd日"的格式,但是在输入时还是要按照 国外的习惯用"yyyy-mm-dd"的形式进行输入:而使用TdateTimePicker进行选择输

Delphi编程将数据库数据快速导入Excel

在开发数据库应用程序中,经常要将类型相同的数据导出来,放到Excel文件中,利用Excel强大的编辑功能,对数据作进一步的加工处理.这有许多的方法,我们可以使用OLE技术,在Delphi中创建一个自动化对象,通过该对象来传送数据.也可以使用ADO,通过与Excel数据存储建立连接,使用ADO这种独立于数据库后端的技术来导出数据集的数据. 可这两种技术都有一个共同的缺点,那就是慢,数据量少还好,用户不会有太多的感觉,可一旦数据量大,比如,超过1千条,速度就让人难以忍受了,那么有没有更好的办法,既可

数据库系统设计全面介绍

数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求). 在数据库领域内,常常把使用数据库的各类系统统称为数据库应用系统. 一.数据库和信息系统 (1)数据库是信息系统的核心和基础,把信息系统中大量的数据按一定的模型组织起来,提供存储.维护.检索数据的功能,使信息系统可以方便.及时.准确地从数据库中获得所需的信息. (2)数据库是信息系统的各个部分能否紧密地结合在一

利用Delphi开发网络数据库应用

Delphi 是具可视化界面的面向对象编程语言,它以其功能强大.简便易用等诸多特性,深受编程人员的欢迎.Delphi 中提供了数据库引擎 BDE(Borland Database Engine),并内含众多的数据库调用构件,为编程人员开发客户/服务器应用程序提供了方便.通常情况下,利用 Delphi 开发数据库应用程序,可以使用TTable.TDataSource.TDBEdit.TDBNavigator等构件.只要正确设置了构件的某些属性,再编写必要的程序代码对一些特定事件进行处理,就能够完成

C#操作word (把数据库信息插入我的文档中 表不能换行)

问题描述 我最近在做一个关于C#操作word文档的案例,需要做的是把数据库信息查询然后添加在word文档中,但是我的word是一个模版文件,表格只有一行,数据有多行,不知道操作才能如何自动换行添加.我在第一行添加成功后已经把换行符号添加在航的结尾了. 解决方案 解决方案二:http://topic.csdn.net/u/20090203/17/6a4de576-b8b9-4847-a48c-4c7198c0db30.html