版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于VB和ADO的数据库二次开发闸北水厂设备卡片系统摘要随着科学技术的发展,特别是计算机技术的发展和普及。计算机已经深入到我们的日常生活和工作中。从简单的文字处理,到复杂的分子计算。可以说,我们已经很难离开计算机的帮助了。计算机之所以如此应用广泛,是其具有对信息进行超高速处理的能力。信息,作为计算机处理的对象,是一切的根本。没有信息计算机将“无事可做“。数据库,就是一个信息集。他对信息进行收集、整理、组织、存储、维护、检索、传送等操作。数据库的设计和开发及包括艺术有包括工程。理解用户的需求,然后,把它们转变为有效的数据库设计是一个艺术过程。把设计转变为实际的数据库,并且这些数据库带有功能完备、高效能的应用,是一个工程过程。我厂早已完成了生产自动化、网络化、信息化的改造。实现了生产数据实时采集和监控,设备数据信息存档,办公流程电子网络化等功能。本文以“设备卡片管理系统”的开发实现为例,论述了如何对现有生产系统的数据库进行分析,尝试在原有数据库结构的基础上,开发出新的应用功能,实现功能的加强和弥补。从而发掘提高现有数据库的价值和潜力。“设备卡片管理系统”将在不破坏原有数据库结构、数据的完整性和不影响原有软件系统正常运行的情况下,实现对数据的再组合和各种数据操作。关键词:VB(VisualBasic),ADO(ActiveX数据对象),数据库(SQLSERVER),SQL语句,设备管理系统,
目录第1章引言 11.1系统开发的目的与定位 11.2开发工具的选择 11.3开发环境及运行环境 2第2章数据库概论 32.1数据库技术的发展 32.1.1数据库的发展 32.1.2数据库技术 32.2数据库理论基础 42.2.1数据库体系结构 42.2.2数据的独立性 42.2.3范式 52.3SQL语言基础 62.3.1SQL简介 62.3.2SQL查询 62.3.3SQL数据更新 7第3章现有数据库系统的介绍与分析 83.1体系结构 83.1.1两层(多层)客户机/服务器结构(Client/Server) 83.1.2 浏览器/服务器结构(Browser/Server) 83.2闸北水厂生产系统介绍与分析 93.2.1生产数据库系统 93.2.2 设备、办公及其他数据库系统 103.3《设备管理系统》详细分析 103.3.1《设备管理系统》体系架构 103.3.2主要功能介绍 113.3.3实际使用中的不足 11第4章设备卡片管理系统的设计与实现 124.1系统功能设计 124.2系统概要设计 134.2.1系统技术结构 134.2.2 数据库开发与改造 134.3系统应用程序的具体实现 194.3.1系统主要窗体模块的组成 194.3.2设备查询(MDI子窗体)和更改查询(MDI子窗体)的实现 194.3.3台帐信息窗体和更改记录窗体的实现 224.3.4登入界面和其他功能的实现 26第5章总结 28参考文献 29致谢 29附属光盘(程序源代码,数据库,SQL程序,相关文档资料)第1章引言1.1系统开发的目的与定位对现有数据库进行二次开发的目的是,实现新的应用功能和对原有系统的不足进行弥补。但这一切都是要建立在不影响、不破坏原由系统的原则下的。所以在开发新的系统时,要以保障数据库的完全性和完整性为第一原则。在此基础上实现对数据库的二次开发。初次对生产数据库的开发,先考虑其可行性和完整性。先以单数据库系统、“两层客户/服务器体系结构”为开发标准,以工作中实际出现的问题和不足为切入点,系统功能以使用方便、功能实用为主。作为以后开发多数据库、“多层客户/服务器体系结构”的大型系统的基础。1.2开发工具的选择自Java诞生以来,随着Internet技术的普及和应用需求的变化,以第四代语言为主的应用开发产品发生了较大的变化,它们不仅已成为人们开发应用的开发工具,而且很多产品已发展成为一种强有力的应用开发环境。这些新型的开发工具通常以一种集成软件包的形式提供给开发人员,被称为Studio(工作室)或Suite(程序组)。例如,微软的VisualStudio6.0,Borland公司的Delphi6.0等数据库辅助开发工具。现在,市场上可以选购的应用开发产品很多,流行的也有数十种。目前在我国市场上最为流行、使用最多、最为先进的可用作企业级开发工具的产品有:Microsoft公司的VisualBasic6.0版Microsoft公司的VisualC++6.0版Borland公司的Delphi6.0版在目前市场上这些众多的程序开发工具中,有些强调程语言的弹性与执行效率;有些则偏重于可视化程序开发工具所带来的便利性与效率的得高,各有各的优点和特色,也满足了不同用户的需求。然而,语言的弹性和工具的便利性是密不可分的,只有便利的工具,却没有弹性的语言作支持,许多特殊化的处理动作必需要耗费数倍的工夫来处理,使得原来所标榜的效率提高的优点失去了作用;相反,如果只强调程语言的弹性,却没有便利的工具作配合,会使一些即使非常简单的界面处理动作,也会严重地浪费程序设计师的宝贵时间。微软公司的VisualBasic开发系统6.0版,是开发效率极高的用于创建高性能组件和应用程序的工具。VisualBasic6.0可支持开发人员基于客户端或服务器端创建优秀的应用程序,或是在分布式n层环境下操作。VisualBasic6.0提供了一组完整的工具,用于将数据库与任意应用程序进行集成。与数据库有关的特征是设计了创建和修改MicrosoftSQLServer、Oracle7.3以及AS/400数据库的工具。VisualBasic6.0对数据的访问具有以下的特性:统一的数据访问,集成了ADO/OLE支持。将可视化的数据库工具集成到了VisualBasic环境中。数据环境设计器(DataEnvironmentDesigner)工具可实现基于ADO的数据访问组件。具有创建数据源的功能。可创建OLEDB提供者(OLEDBProvider)。可方便地进行机器间和层次间的远程数据访问。1.3开发环境及运行环境开发环境:1#号机: Intel®Pentium®42.66GHz,512M内存,40G硬盘 Microsoft®Windows™XP Microsoft®VisualBasic6.02#号机:DELL服务器PowerEdge840 Microsoft®Windows™2003Microsoft®SQLServer2000(SP4)运行环境: 最低配置:Intel®Pentium®2及以上处理器,64M以上内存,50M以上硬盘 Microsoft®Windows™9X/NT/XP操作系统 800*600或以上的屏幕分辨率建议配置:Intel®Pentium®3及以上处理器,128M以上内存,100M以上硬盘 Microsoft®Windows™9X/NT/XP操作系统 1024*768或以上的屏幕分辨率
第2章数据库概论2.1数据库技术的发展2.1.1数据库的发展数据管理技术的发展,与硬件(主要是外存)、软件、计算机应用的范围有密切的联系。数据管理技术的发展经过三个阶段:人工管理阶段、文件系统阶段和数据库阶段。人工管理阶段和文件系统阶段都有着相当多的缺陷,诸如数据冗余性,数据不一致性以及数据联系弱等等。也正是由于这些原因,促使人们研究新的数据管理技术,从而产生了数据库技术。20世纪60年代末发生的三件大事,层次模型IMS系统的推出、关于网状模型DBTG报告的发表以及关于关系模型论文的连续发表标志着数据管理技术进入数据库阶段。进入70年代以后,数据库技术得到迅速发展,开发了许多有效的产品并投入运行。数据库系统克服了文件系统的缺陷,提供了对数据更高级更有效的管理。当进入数据库阶段后,随着数据管理规模一再扩大,数据量急剧增加,为了提高效率,开始时,人们只是对文件系统加以扩充,在应用文件中建立了许多辅助索引,形成倒排文件系统。但这并不能最终解决问题。在20世纪60年代末,磁盘技术取得重要进展,具有数百兆容量和快速存取的磁盘陆续进入市场,成本也不高,为数据库技术的产生提供了良好的物质条件。2.1.2数据库技术从文件系统发展到数据库系统是信息处理领域的一个重大变化。在文件系统阶段,人们关注的中心问题是系统功能的设计,因而程序设计处于主导地位,数据只起着服从程序需要的作用。在数据库方式下,信息处理观念已为新体系所取代,数据占据了中心位置。数据结构的设计成为信息系统首先关心的问题,而利用这些数据的应用程序设计则退居到以既定的数据结构为基础的外围地位。目前世界上已有数百万个数据库系统在运行,其应用已经深入到人类社会生活的各个领域,从企业管理、银行业务、资源分配、经济预测一直到信息检索、档案管理、普查统计等。并在通信网络基础上,建立了许多国际性的联机检索系统。我国20世纪90年代初在全国范围内装备了12个以数据库技术为基础的大型计算机系统,这些系分布在邮电、计委、银行、电力、铁路、气象、民航、情报、公安、军事、航天和财税等行业。数据库技术还在不断的发展,并且不断地与其它计算机技术相互渗透。数据库技术与网络通信技术相结合,产生了分布式数据库系统。数据库技术与面向对象技术相结合,产生了面向对象数据库系统。在数据库技术中有四个名词,其概念应该分清。(1)数据库(database,DB):DB是统一管理的相关数据的集合。DB能为各种用户共享,具有最小冗余度,数据间联系密切,而又有较高的数据独立性。(2)数据库管理系统(DatabaseManagementSystem,DBMS):DBMS是位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访问DB的方法,包括DB的建立、查询、更新及各种数据控制。DBMS总是基于某种数据模型,可以分为层次型、网状型、关系型和面向对象型DBMS。(3)数据库系统(DatabaseSystem,DBS):DBS是实现有组织地、动态地存储大量关联数据,方便多用户访问的计算机软件、硬件和数据资源组成的系统,即采用了数据库技术的计算机系统。(4)数据库技术:这是一门研究数据库的结构、存储、管理和使用的软件学科。数据库技术是操作系统的文件系统基础上发展起来的。而DBMS本身要在操作系统的支持下才能工作。数据库不仅用到数据结构的知识,而且丰富了数据结构的内容。在关系数据库中要用到集合论、数理逻辑的理论。因此,数据库技术是一门综合性较强的学科。2.2数据库理论基础2.2.1数据库体系结构数据库的体系结构分三级:内部级(internal),概念级(conceptual)和外部级(external)。这个三级结构有时也称为“三级模式结构”,或“数据抽象的三个级别”,最早是在1971年通过的DBTG报告中提出,后来收入在1975年的美国ANSI/SPARC报告中。虽然现在DBMS的产品多种多样,在不同的操作系统支持下工作,但是大多数系统在总的体系结构上都具有三级模式的结构特征。从某个角度看到的数据特性称为“数据视图”(dataview)。外部级最接近用户,是单个用户所能看到的数据特性。单个用户使用的数据视图的描述称为“外模式”。概念级涉及到所有用户的数据定义,是全局的数据视图。全局数据视图的描述称为“概念模式”。内部级最接近于物理存储设备,涉及到实际数据存储的结构。物理存储数据视图的描述称为“内模式”。数据库的三级模式结构是数据的三个抽象级别。它把数据的具体组织留给DBMS去做,用户只要抽象地处理数据,而不必关心数据在计算机中的表示和存储,这样就减轻了用户使用系统的负担。三级结构之间往往差别很大,为了实现这三个抽象级别的联系和转换,DBMS在三级结构之间提供两个层次的映象(mappings):外模式/模式映象,模式/内模式映象。此处模式是概念模式的简称。2.2.2数据的独立性由于数据库系统采用三级模式结构,因此系统具有数据独立性的特点。在数据库技术中,数据独立性是指应用程序和数据之间相互独立,不受影响。数据独立性分成物理数据独立性和逻辑数据独立性两级。(1)物理数据独立性如果数据库的内模式要进行修改,即数据库的存储设备和存储方法有所变化,那么模式/内模式映象也要进行相当的修改,使概念模式尽可能保持不变。也就是对内模式的修改尽量不影响概念模式,当然,对于外模式和应用程序的影响更小,这样,我们称数据库达到了物理数据独立性。(2)逻辑数据独立性如果数据库的概念模式要进行修改,譬如增加记录类型或增加数据项,那么外模式/模式映象也要进行相应的修改,使外模式尽可能保持不变。也就是对概念模式的修改尽量不影响外模式和应用程序,这样,我们称数据库达到了逻辑数据独立性。现有关系系统产品均提供了较高的物理独立性,而对逻辑独立性的支持尚有欠缺,例如,对外模式的数据更新受到限制等。2.2.3范式建立起一个良好的数据指标体系,是建立数据结构和数据库的最重要的一环。一个良好的数据指标体系是建立DB的必要条件,但不是充分条件。我们完全可以认为所建指标体系中的一个指标类就是关系数据库中的一个基本表,而这个指标类下面的一个个具体指标就是这个基本表中的一个字段。但如果直接按照这种方式建库显然还不能算最佳。对于指标体系中数据的结构在建库前还必须进行规范化的重新组织。在数据的规范化表达中,一般将一组相互关联的数据称为一个关系(relation),而在这个关系下的每个数据指标项则被称为数据元素(dataelement),这种关系落实到具体数据库上就是基本表,而数据元素就是基本表中的一个字段(field)。规范化表达还规定在每一个基本表中必须定义一个数据元素为关键字(key),它可以唯一地标识出该表中其它相关的数据元素。在规范化理论中表是二维的,它有如下四个性质:在表中的任意一列上,数据项应属于同一个属性。表中所有行都是不相同的,不允许有重复组项出现。在表中,行的顺序无关紧要。在表中,列的顺序无关紧要,但不能重复。在对表的形式进行了规范化定义后,数据结构还有五种规范化定义,定名为规范化模式,称为范式。在这五种范式中,一般只用前三种,对于常用系统就足够了。而且这五种范式是“向上兼容”的,即满足第五范式的数据结构自动满足一、二、三、四范式,满足第四范式的数据结构自动满足第一、二、三范式,……,依此类推。第一范式(firstnormalform,简称1stNF)就是指在同一表中没有重复项出现,如果有则应将重复项去掉。这个去掉重复项的过程就称之为规范化处理。在本文所讨论的开发方法里,1stNF实际上是没有什么意义的。因为我们按规范化建立的指标体系和表的过程都自动保证了所有表都满足1stNF。第二范式(secondnormalform,简称2ndNF)是指每个表必须有一个(而且仅一个)数据元素为主关键字(primarykey),其它数据元素与主关键字一一对应。例如,在图l9.7中如果我们将合同号定义为主关键字(其它数据元素中的记录数据都有可能重名,故不能作为主关键字),故只要知道了一个合同记录的合同号,就可以唯一地在同一行中找到该合同的任何一项具体信息。通常我们称这种关系为函数依赖(functionaldepEndence)关系。即表中其它数据元素都依赖于主关键字,或称该数据元素唯一地被主关键字所标识。第三范式(thirdnormalform,简称3rdNF)就是指表中的所有数据元素不但要能够唯一地被主关键字所标识,而且它们之间还必须相互独立,不存在其它的函数关系。也就是说对于一个满足了2ndNF的数据结构来说,表中有可能存在某些数据元素依赖于其它非关键宇数据元素的现象,必须加以消除。为防止数据库出现更新异常、插入异常、删除异常、数据冗余太大等现象,关系型数据库要尽量按关系规范化要求进行数据库设计。2.3SQL语言基础2.3.1SQL简介用户对数据库的使用,是通过数据库管理系统提供的语言来实现的。不同的数据库管理系统提供不同的数据库语言。关系数据库管理系统几乎都提供关系数据库标准语言——SQL。SQL的全称是StructuredQueryLanguage,即结构化查询语言。SQL语句可以从关系数据库中获得数据,也可以建立数据库、增加数据、修改数据。1986年ANSI采用SQL语言作为关系数据库系统的标准语言,后被国际化标准组织(ISO)采纳为国际标准。SQL语言使用方便、功能丰富、简洁易学,是操作数据库的工业标准语言,得到广泛地应用。例如关系数据库产品DB2、ORACLE等都实现了SQL语言。同时,其它数据库产品厂家也纷纷推出各自的支持SQL的软件或者与SQL的接口软件。这样SQL语言很快被整个计算机界认可。SQL语言是一种非过程化语言,它一次处理一个记录集合,对数据提供自动导航。SQL语言允许用户在高层的数据结构上工作,而不对单个记录进行操作。SQL语言不要求用户指定数据的存取方法,而是使用查询优化器,由系统决定对指定数据存取的最快速手段。当设计者在关系表上定义了索引时,系统会自动利用索引进行快速检索,用户不需知道表上是否有索引或者有什么类型的索引等细节。SQL语言可以完成许多功能,例如:●查询数据●在数据库表格中插入、修改和删除记录●建立、修改和删除数据对象●控制对数据和数据对象的存取●确保数据库的一致性和完整性等2.3.2SQL查询数据查询是关系运算理论在SQL语言中的主要体现,SELECT语句是SQL查询的基本语句,当我们在对一个数据库进各种各样的操作时,使用的最多的就是数据查询,在以SQL为基础的关系数据库中,使用的最多的就是SELECT查询语句。SELECT语句的完整句法如下:SELECT目标表的列名或列表达式序列FROM基本表和(或)视图序列[WHERE行条件表达式][GROUPBY列名序列][HAVING组条件表达式][ORDERBY列名[ASC│DEAC]…]我在SELECT语句中还使用了大量的保留字和通配符以进行各种各样的条件查询。在系统中有大量的查询按钮,其使用了大量的查询语句,而且这些查询语句大部分使用的是模糊查询,所以大量的使用了模式匹配符LIKE(判断值是否与指定的字符通配格式相符)。在包含LIKE的查询语句中可以使用两个通配符:%(百分号):与零个或多个字符组成的字符串匹配;_(下划线):与单个字符匹配。系统中的条件判断往往包含多个条件,这时就需要使用逻辑运算符NOT、AND、OR(用于多条件的逻辑连接),谓词ALL以及保留字DISTINCT等等。2.3.3SQL数据更新使用数据库的目的是为了有效地管理数据,而数据的插入、删除和修改则是必不可少的一个功能。在本系统中就大量地使用了数据插入、删除和修改这三种操作,现做一个简单地介绍。●数据插入往数据库的基本表中插入数据使用的是INSERT语句,其方式有两种:一种是元组值的插入,另一种是查询结果的插入。在本系统中使用的是前一种方式,其句法如下:INSERTINTO基本表名(列表名)VALUES(元组值)●数据删除往数据库的基本表中删除数据使用的是DELETE语句,其句法如下:DELETEFROM基本表名[WHERE条件表达式]在些作一点说明,删除语句实际上是“SELECT*FROM基本表名[WHERE条件表达式]”和DELETE操作的结合,每找到一个元组,就把它删除。此外,DELETE语句只能从一个基本表中删除元组,WHERE子句中条件可以嵌套,也可以是来自几个基本表的复合条件。●数据修改当需要修改基本表中元组的某些列值时,可以用UPDATE语句实现,其句法如下:UPDATE基本表名SET列名=值表达式[,列名=值表达式…][WHERE条件表达式]在本系统中我采用的是ADO组件来对数据库进行操作。
第3章现有数据库系统的介绍与分析3.1体系结构3.1.1两层(多层)客户机/服务器结构(Client/Server)将针对具体数据库的访问逻辑与客户应用程序分离开,并将那些数据库访问逻辑放在服务器上,这是一种趋势。在这种发展趋势中,两层应用程序代表了第一步。通常,完成这种分离所采用的方法是:用存储过程完成数据访问服务,在服务器上针对数据库来施行这些存储过程。这使得程序代码的维护、升级以及日常管理变得更为轻松,这是因为这些程序代码只保存在服务器上,而非在每一台客户机上保留这些程序代码。除此以外,DBMS(databasemanagementsystem,数据管理管理系统)在支持多个用户时,可以提供所需要的集中式功能。C/S结构图如下:图3-1客户/服务器模式浏览器/服务器结构(Browser/Server)B/S结构,即Browser/Server(浏览器/服务器)结构,就是只安装维护一个服务器(Server),而客户端采用浏览器(Browse)运行软件。它是随着Internet技术的兴起,对C/S结构的一种变化和改进。主要利用了不断成熟的WWW浏览器技术,结合多种Script语言(VBScript、JavaScript…)和ActiveX技术,是一种全新的软件系统构造技术。在B/S体系结构系统中,用户通过浏览器向分布在网络上的许多服务器发出请求,服务器对浏览器的请求进行处理,将用户所需信息返回到浏览器。而其余如数据请求、加工、结果返回以及动态网页生成、对数据库的访问和应用程序的执行等工作全部由WebServer完成。随着Windows将浏览器技术植入操作系统内部,这种结构已成为当今应用软件的首选体系结构。B/S结构的主要特点是分布性强、维护方便、开发简单且共享性强、总体拥有成本低。但数据安全性问题、对服务器要求过高、数据传输速度慢、软件的个性化特点明显降低,这些缺点是有目共睹的,难以实现传统模式下的特殊功能要求。B/S结构图如下:图3-2游览器/服务器模式3.2闸北水厂生产系统介绍与分析3.2.1生产数据库系统闸北水厂生产自动化监控系统,由上海三高计算机中心有限公司开发实现。其系统所属数据库也是全厂最大最重要的数据库系统。这是一个C/S和B/S综合结构的系统。因为系统涉及范围广,数据采集频率高,所以其数据库规模巨大。每天生成和采集的数据超过1000万条。其主要功能:建立统一的生产与质量信息库;完整汇集生产质量数据信息;全面实时地反映全厂的生产质量状况;建立实时数据和历史数据分析系统;建立水厂统一的生产管理指挥机构;统一协调制水、出水的有效运行。数据工作流程,是由OPC服务器从各个数据采集终端收集数据。然后通过局域网传送到数据中心服务器。同时也包含人工填报的生产数据。整个系统不但包含了实时数据,也包含历史数据,除了强调数据实时性而且强调历史数据的分析。整合了完整的生产数据,并经过科学的加工使之成为分析知道生产运行的信息。设备、办公及其他数据库系统《设备管理系统》和《办公自动化系统》都是由上海金仕达多媒体有限公司开发制作的。两个系统都是采用相似的B/S/D(Brower/Server/Database)三层架构,利用了成熟的WWW浏览器技术,结合多种Script语言(VBScript、JavaScript…)和ActiveX技术。以SQLSERVER2000作为数据库平台。实现各种功能。这两个系统都有各自独立的数据库,数据库规模中等。本文将在下一节中,详细介绍分析《设备管理系统》。其他数据库系统还有,浪潮财务,桌面提醒(AM),门禁系统,等数据库。他们均采用C/S结构。因为功能单一,所以他们的数据库规模较小,结构较简单。3.3《设备管理系统》详细分析3.3.1《设备管理系统》体系架构系统采用B/S/D(Brower/Server/Database)三层架构,客户端无需安装任何软件,只需要打开IE游览器登陆系统后就可以进行各种操作。系统的各个业务逻辑处理都在服务器端,而所有的数据则由服务器处理后存储在大型关系数据库里。整个系统构架如下:图3-3系统构架3.3.2主要功能介绍《设备管理系统》的主要实现的功能是:管理设备整个生命周期的各种资料,对于设备保养等各需要多个部门共同处理的环节能提供流程的自动流转,能以消息提醒的方式告诉流程下一环节的人他该做的事,能提供一些自动提醒,提高设备管理的自动化水平;用户还可以灵活方便的增加设备的类别,增加新的设备,增加新的检修报表;整个系统具有很高的灵活性和扩展性,不仅仅只是满足当前设备管理的需要,更要能适应将来新设备出现的新要求。设备管理系统的功能规划如下图:图3-3《设备管理系统》主要功能3.3.3实际使用中的不足《设备管理系统》是个一功能强大、范围全面的软件系统。但正因为如此,其使用管理起来就比较复杂,流程配置相当繁复。比如设备更改记录。在《设备管理系统》中分成“年度检修”、“月度维护”、“分月计划”、“报修单”四个部分。而且每个部分都要独立填写表格,并且必须通过审批流程后,才能归档保存。查询起来也比较复杂。正因为如此,员工在实际使用过程中,多次抱怨系统复杂使用不便。特别是对一些年纪较大,对计算机操作不熟练的老员工来说,更是困难非常。加上B/S网络延迟方面的一些缺点,造成《设备管理系统》使用率不高,有些员工更喜欢使用原来的设备卡片表格。
第4章《设备卡片管理系统》的设计与实现本章主要论述《设备卡片管理系统》的具体实现过程。因为系统程序量巨大,不重复的代码就超过2千行。因篇幅有限,不能一一列出,只列关键部分的代码。程序的所有原代码和相关数据库程序,都保存在本文最后附属的光盘中。读者可对应程序原代码,配合观看本文。4.1系统功能设计《设备卡片管理系统》是在《设备管理系统》原由数据库基础上改进开发的。主要是改进《设备管理系统》的一些不足之处。(相关内容见3.3.3节)同时,也作为对现有数据库二次开发的技术尝试。系统主要实现的功能:设备台帐的条件查询;设备台帐的数据操作;更改记录的条件查询;更改记录的数据操作;更改记录的自动收集与同步更新;设备卡片功能的实现。图4-1系统功能结构图4.2系统概要设计4.2.1系统技术结构《设备卡片管理系统》采用C/S结构体系,以VisualBasic6.0为程序开发工具,以SQLServer2000为数据库平台,在原有的数据库基础上添加新的表、存储过程和触发器,以实现新的功能。程序采用采用ADO技术和组件,来实现对数据库的访问和操作。ADO数据对象(ActiveDataObjects)实际是一种提供访问各种数据类型的链接机制。ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口中,可以使用任何一种ODBC数据源,即不止适合于SQLServer、Oracle、Access等数据库应用程序,也适合于Excel表格、文本文件、图形文件和无格式的数据文件。ADO是基于OLE-DB之上的技术,因此ADO通过其内部的属性和方法提供统一的数据访问接口方法。ADO使您的客户端应用程序能够通过OLEDB提供访问和操作在数据库服务器中的数据。ADO支持用于建立C/S和Web的应用程序的主要功能。其主要优点是易于使用、高速度、低内存支出和占用磁盘空间较少。ADO同时具有远程数据服务(RDS)功能,通过RDS可以在一次往返过程中实现将数据从服务器移动到客户端应用程序和Web页、在客户端对数据进行处然后将更新结果返回服务器的操作。数据库开发与改造(1)所要涉及数据库中原由的数据表设备台帐相关的数据表:DEV_ACCOUNT;DEV_ACCOUNT_CONFIG;DEV_ACCOUNT_DESCRIBE;DEV_ACCOUNT_HISTORY;DEV_ACCOUNT_TEMPLET;他们的结构图如下:图4-2台帐数据表结构更改记录相关数据表:DEV_REPAIR_PLAN_DETAILDEV_REPAIR_RUSH他们的结构图如下:图4-3更改记录数据表结构(2)新建立的数据表要实现新的功能,并且不能破坏数据库原由数据的结构和完整性。使用现有的数据表是远远不够的。所以有必要添加一个新表,使系统程序尽量把这个新表作为数据操作的对象。这样就不会影响原有“设备管理系统”的正常运行,也能保证原有数据的安全性。新表名:WZR_REPAIR,建立过程如下:CREATETABLE[WZR_REPAIR]( [DEV_CODE][nvarchar](3000)COLLATEChinese_PRC_CI_ASNULL, [DEV_NAME][nvarchar](1000)COLLATEChinese_PRC_CI_ASNULL, [TYPE_CODE][nvarchar](100)COLLATEChinese_PRC_CI_ASNULL, [TYPE_NAME][nvarchar](100)COLLATEChinese_PRC_CI_ASNULL, [BEGIN_DATE][datetime]NULL, [END_DATE][datetime]NULL, [REPAIR_CONTENT][nvarchar](3000)COLLATEChinese_PRC_CI_ASNULL, [REPAIR_REASON][nvarchar](1000)COLLATEChinese_PRC_CI_ASNULL, [REMARK][nvarchar](1000)COLLATEChinese_PRC_CI_ASNULL, [PLAN_PKID][decimal](18,0)NULL, [RUSH_PKID][decimal](18,0)NULL, [SPARE_FIELD1][nvarchar](200)COLLATEChinese_PRC_CI_ASNULL, [SPARE_FIELD2][nvarchar](200)COLLATEChinese_PRC_CI_ASNULL, [SPARE_FIELD3][nvarchar](200)COLLATEChinese_PRC_CI_ASNULL, [SPARE_FIELD4][nvarchar](200)COLLATEChinese_PRC_CI_ASNULL, [SPARE_FIELD5][nvarchar](200)COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY]新表WZR_REPAIR分别从DEV_REPAIR_PLAN_DETAIL和DEV_REPAIR_RUSH读取相应的数据。通过对应字段PLAN_PKID和RUSH_PKID来确定数据一对一的关系。新表与原有表的对应关系如下:图4-4新旧表数据关系新表数据初始化过程如下:INSERTINTOWZR_REPAIR(DEV_CODE,DEV_NAME,BEGIN_DATE,END_DATE,REPAIR_CONTENT,REPAIR_REASON,REMARK,TYPE_CODE,PLAN_PKID)SELECTDEV_CODE,DEV_NAME,PLAN_BEGIN_DATE,PLAN_END_DATE,REPAIR_CONTENT,REPAIR_REASON,REMARK,REPAIR_TYPE,PKIDFROMDEV_REPAIR_PLAN_DETAILGOUPDATEWZR_REPAIRSETTYPE_NAME='年度检修'WHERETYPE_CODE='1'GOUPDATEWZR_REPAIRSETTYPE_NAME='月度维护'WHERETYPE_CODE='2'GOINSERTINTOWZR_REPAIR(DEV_CODE,DEV_NAME,BEGIN_DATE,REPAIR_CONTENT,REMARK,TYPE_CODE,RUSH_PKID,TYPE_NAME)SELECTDEV_CODE,DEV_NAME,REPORT_TIME,REPAIR_CONTENT,REMARK,'3',PKID,'报修单'FROMDEV_REPAIR_RUSHGO(3)数据同步的实现新建数据表中的数据不但要接受系统程序的操作控制,也要从原有数据库中自动收集数据信息,并且当源数据表中的数据发生变动时,新表中相对应的数据也要更新改变。实现这种功能最方便的方法就是“触发器”。DEV_REPAIR_PLAN_DETAIL表的INSERT,UPDATE,DELETE触发器程序如下:CREATETRIGGERPLAN_INSERTONDEV_REPAIR_PLAN_DETAILAFTERINSERTASBEGININSERTINTOWZR_REPAIR(DEV_CODE,DEV_NAME,BEGIN_DATE,END_DATE,REPAIR_CONTENT,REPAIR_REASON,REMARK,TYPE_CODE,PLAN_PKID)SELECTDEV_CODE,DEV_NAME,PLAN_BEGIN_DATE,PLAN_END_DATE,REPAIR_CONTENT,REPAIR_REASON,REMARK,REPAIR_TYPE,PKIDFROMINSERTEDUPDATEWZR_REPAIRSETTYPE_NAME='年度检修'WHERETYPE_CODE='1'UPDATEWZR_REPAIRSETTYPE_NAME='月度维护'WHERETYPE_CODE='2'ENDCREATETRIGGERPLAN_UPDATEONDEV_REPAIR_PLAN_DETAILAFTERUPDATEASBEGINIf@@ROWCOUNT>0BEGINdeletefromwzr_repairwherePLAN_pkidin(selectpkidfromdeleted)ENDBEGININSERTINTOWZR_REPAIR(DEV_CODE,DEV_NAME,BEGIN_DATE,END_DATE,REPAIR_CONTENT,REPAIR_REASON,REMARK,TYPE_CODE,PLAN_PKID)SELECTDEV_CODE,DEV_NAME,PLAN_BEGIN_DATE,PLAN_END_DATE,REPAIR_CONTENT,REPAIR_REASON,REMARK,REPAIR_TYPE,PKIDFROMINSERTEDUPDATEWZR_REPAIRSETTYPE_NAME='年度检修'WHERETYPE_CODE='1'UPDATEWZR_REPAIRSETTYPE_NAME='月度维护'WHERETYPE_CODE='2'ENDENDCREATETRIGGERPLAN_DELETEONDEV_REPAIR_PLAN_DETAILAFTERDELETEASIf@@ROWCOUNT>0BEGINdeletefromwzr_repairwherePLAN_pkidin(selectpkidfromdeleted)ENDDEV_REPAIR_RUSH表的INSERT,UPDATE,DELETE触发器程序如下:REATETRIGGERRUSH_INSERTONDEV_REPAIR_RUSHAFTERINSERTASBEGININSERTINTOWZR_REPAIR(DEV_CODE,DEV_NAME,BEGIN_DATE,REPAIR_CONTENT,REMARK,TYPE_CODE,RUSH_PKID,TYPE_NAME)SELECTDEV_CODE,DEV_NAME,REPORT_TIME,REPAIR_CONTENT,REMARK,'3',PKID,'报修单'FROMINSERTEDENDCREATETRIGGERRUSH_UPDATEONDEV_REPAIR_RUSHAFTERUPDATEASBEGINIf@@ROWCOUNT>0begindeletefromwzr_repairwhererush_pkidin(selectpkidfromdeleted)endBEGININSERTINTOWZR_REPAIR(DEV_CODE,DEV_NAME,BEGIN_DATE,REPAIR_CONTENT,REMARK,TYPE_CODE,RUSH_PKID,TYPE_NAME)SELECTDEV_CODE,DEV_NAME,REPORT_TIME,REPAIR_CONTENT,REMARK,'3',PKID,'报修单'FROMINSERTEDENDENDCREATETRIGGERRUSH_DELETEONDEV_REPAIR_RUSHAFTERDELETEASIf@@ROWCOUNT>0BEGINdeletefromwzr_repairwhererush_pkidin(selectpkidfromdeleted)END
4.3系统应用程序的具体实现4.3.1系统主要窗体模块的组成系统主要由“登入”,“MDI主窗体”,“设备查询(MDI子窗体)”,“更改查询(MDI子窗体)”,“台帐信息”,“更改记录”等窗体模块组成。窗体模块调用关系如下:图4-5窗体模块调用关系4.3.2设备查询(MDI子窗体)和更改查询(MDI子窗体)的实现设备查询(MDI子窗体)主要功能:实现多条件模糊查询;列出符合条件的记录集;调用详细的台帐记录;添加删除记录。更改查询(MDI子窗体)主要功能:实现多条件模糊查询;列出符合条件的记录集;按要求对字段排序记录集;调用详细的更改记录;添加删除记录。因为设备查询(MDI子窗体)和更改查询(MDI子窗体)功能、界面相似。所不同的只是操作的数据对象不同。所以,在这里选择“更改查询(MDI子窗体)”作为代表,详细叙述其功能的实现。更改查询(MDI子窗体)界面如下:图4-6更改查询(MDI子窗体)界面(1)记录集列表的实现采用VB中AODOC控件和DATAGRID控件实现。Adodc1.ConnectionString=sql_ip//sql_ip数据库连接常量Adodc1.Password=sql_pass//sql_pass数据库密码常量Adodc1.RecordSource="SELECT*FROMWZR_REPAIR"Adodc1.Refresh调用详细更改记录窗体PrivateSubDataGrid1_DblClick()IfAdodc1.Recordset.EOF=TrueAndAdodc1.Recordset.BOF=TrueThenMsgBox"没有相关记录!",0+48+0,"错误!"ElseGGJL.Show//调用“更改记录”窗体GGJL.EDIT_LOAD//运行“更改记录”窗体的EDIT_LOAD方法EndIfEndSub(2)多条件模糊查询的实现PrivateSubcommand_cx_Click()DimgglbAsStringSelectCaseCombo1.ListIndexCase-1,0:gglb=""Case1:gglb="ANDTYPE_NAME='年度检修'"Case2:gglb="ANDTYPE_NAME='月度维护'"Case3:gglb="ANDTYPE_NAME='报修单'"Case4:gglb="ANDTYPE_NAME='独立记录'"EndSelectDimCODEAsStringDimNAMEAsStringDimDATE_TIMEAsString异常处理,代码过长,不列出了。读者可以在本文附属光盘里找到源代码。Adodc1.RecordSource="select*fromwzr_repairwhere1=1"&gglb&CODE&NAME&DATE_TIMEAdodc1.RefreshEndSub(3)记录添加删除的实现PrivateSubCommand2_Click()//添加记录GGJL.ShowGGJL.addnew_load//运行“更改记录”窗体的添加方法EndSubPrivateSubCommand1_Click()//删除记录IfAdodc1.Recordset.EOF=TrueAndAdodc1.Recordset.BOF=TrueThenMsgBox"没有记录!",0+48+0,"错误!"ElseIfAdodc1.Recordset.Fields("TYPE_NAME")="独立记录"ThenIfMsgBox("确定要删除这条记录吗?",1+32+256,"是否删除?")=1ThenAdodc1.Recordset.DeleteElseCancel=1EndIfElseMsgBox"只能删除<独立记录>!",0+48+0,"错误!"EndIfEndIfEndSub(4)记录集排序的实现通过OPATION控件来实现排序字段和升降序的选择PrivateSubCommand3_Click()DimFILESAsStringDimIndexAsStringIfOption1.ValueThenFILES="begin_date"ElseIfOption2.ValueThenFILES="END_DATE"ElseFILES="TYPE_NAME"EndIfEndIfIfOption4.ValueThenIndex="DESC"ElseIndex="ASC"EndIfAdodc1.Recordset.Sort=FILES&""&IndexEndSub4.3.3台帐信息窗体和更改记录窗体的实现台帐信息窗体和更改记录窗体的主要功能:显示设备台帐详细数据;添加,编辑,删除台帐数据;显示设备更改记录集;添加,编辑,删除更改记录;按要求对字段排序更改记录集;同样选择“台帐信息窗体”作为代表,详细叙述其功能的实现。台帐信息窗体和更改记录窗体界面如下:图4-7台帐信息窗体与更改记录窗体界面(1)设备台帐信息的编作实现具有设备台帐操作的所有功能,而且要和原有的“设备管理系统”中的数据类型相匹配。因为对原有数据库中的储存过程资料了解不多。所以SQL语句比较繁琐复杂。PrivateSubCommand2_Click()//编辑修改操作IfMsgBox("确定要更新?",1+32+256,"更新数据?")=1ThenAdodc1.Recordset.Fields("DEV_NAME")=Text2.TextAdodc1.Recordset.Fields("DEV_MODEL")=Text4.TextAdodc1.Recordset.Fields("DEV_SPEC")=Text5.TextAdodc1.Recordset.Fields("SET_PLACE")=Text6.TextAdodc1.Recordset.Fields("SPARE_FIELD1")=Text7.TextAdodc1.Recordset.Fields("SPARE_FIELD2")=Text8.TextAdodc1.Recordset.Fields("SPARE_FIELD3")=Text9.TextAdodc1.Recordset.Fields("SPARE_FIELD4")=Text10.TextAdodc1.Recordset.Fields("SPARE_FIELD5")=Text11.TextAdodc1.Recordset.Fields("MAKER")=Text12.TextAdodc1.Recordset.Fields("SPARE_FIELD6")=Text17.TextAdodc1.Recordset.Fields("ABC")=Text18.TextAdodc1.Recordset.Fields("SPARE_FIELD30")=Text19.TextAdodc1.Recordset.Fields("STATE")=Combo1.ListIndexAdodc1.Recordset.Fields("ACTUALITY")=Combo2.ListIndex+1Adodc1.Recordset.Fields("FOR_PRODUCE")=Combo3.ListIndexIfText13.Text=""ThenAdodc1.Recordset.Fields("BUY_DATE")=NullElseAdodc1.Recordset.Fields("BUY_DATE")=DTPicker1.Year&DTPicker1.MonthEndIfIfText14.Text=""ThenAdodc1.Recordset.Fields("USE_DATE")=NullElseAdodc1.Recordset.Fields("USE_DATE")=DTPicker2.Year&DTPicker2.MonthEndIfIfText15.Text=""ThenAdodc1.Recordset.Fields("ORIGIN_MONEY")=NullElseIfIsNumeric(Text15.Text)ThenAdodc1.Recordset.Fields("ORIGIN_MONEY")=Text15.TextElseMsgBox"<原值>字段不是数字,请重新输入!",0+48+0,"字符类型错误!"GoToendupdateEndIfEndIfIfText16.Text=""ThenAdodc1.Recordset.Fields("DEPRECIATION_YEAR")=NullElseIfIsNumeric(Text16.Text)ThenAdodc1.Recordset.Fields("DEPRECIATION_YEAR")=Text16.TextElseMsgBox"<折旧年限>字段不是数字,请重新输入!",0+48+0,"字符类型错误!"GoToendupdateEndIfEndIfDimREMARKupdateAsStringREMARKupdate="UPDATEdev_accountsetremark='"&RichTextBox1.Text&"'wheredev_code='"&Text1.Text&"'"cnn.Execute(REMARKupdate)Adodc1.Recordset.UpdateSBCX_WIN.Adodc1.Refresh——————————————————界面设置代码,因为程序过长,不列出了。读者可以在本文附属光盘里找到源代码。——————————————————endupdate:ElseCancel=1EndIfPrivateSubCommand3_Click()//删除台帐操作IfMsgBox("确定要删除这条记录吗?",1+32+256,"是否删除?")=1ThenAdodc1.Recordset.DeleteUnloadMeSBCX_WIN.Adodc1.RefreshElseCancel=1EndIfEndSub(2)台帐信息和更改记录集的读取采用VB中AODOC控件和DATAGRID控件实现。Adodc1.ConnectionString=sql_ipAdodc1.Password=sql_passAdodc1.RecordSource="select*fromdev_accountwheredev_code='"&SBCX_WIN.DataGrid1.Columns(0).Text&"'"Adodc1.Refresh//设备台帐信息Adodc2.ConnectionString=sql_ipAdodc2.Password=sql_passAdodc2.RecordSource="select*fromwzr_repairwheredev_codelike'%"&SBCX_WIN.DataGrid1.Columns(0).Text&"%'"Adodc2.Refresh//设备的更改记录Adodc2.Recordset.Sort="begin_dateDESC"(3)更改记录的操作PrivateSubCommand5_Click()//编辑修改操作IfMsgBox("确定要添加这条记录?",1+32+256,"添加记录?")=1ThenDQSB.Adodc2.Recordset.AddNewD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 郑州西亚斯学院《新闻编辑》2021-2022学年第一学期期末试卷
- 泡沫塑料生产绿色供应链构建
- 不锈钢制品销售合同
- 劳动保护用品定购单
- 家长对学校孩子体育锻炼的重视
- 2024年度影视导演定向委培协议书
- 高品质正品保证
- 海鲜水产购买协议
- 招标费用控制策略制定要点
- 化肥订购协议书范例
- 碳排放核算与报告要求 第XX部分:铅冶炼企业
- DZ∕T 0215-2020 矿产地质勘查规范 煤(正式版)
- 2024中国铁路成都局招聘笔试冲刺题(带答案解析)
- 肺功能进修总结汇报
- 多图中华民族共同体概论课件第十一讲 中华一家与中华民族格局底定(清前中期)根据高等教育出版社教材制作
- 数据编码第二课时课件高中信息技术教科版必修1
- 2.贵州省地方标准项目申报书
- 小学三年级一位数乘两位数的乘法练习题(500道)
- “读思达”教学法在整本书阅读教学中的实践
- 老旧小区燃气管道改造方案
- 生产制造企业车间管理实务课程
评论
0/150
提交评论