---- 摘要:本文从xBase 用户的角度对比分析了ACCESS 与xBase 的差异并进一步阐述了ACCESS 中的数据库对象及编程方法。
---- 关键词:ACCESS----Foxpro----数据库
---- 微软公司有两个流行的桌面数据库开发工具,一个是其自行研制开发的基于WINDOWS 环境的ACCESS,另一个是其兼并FOX 公司而得到的Foxpro。通常将dBASE、FoxBase、Foxpro 等统称为xBase 在我国拥有大量的用户,随着微软公司的ACCESS 在国际桌面数据库市场上的迅速崛起及中文OFFICE 在我国的深入普及,越来越多的用户开始使用MSACCESS(中文OFFICE97 的组件之一),很多xBase 用户也开始转向或使用微软公司的ACCESS。由于ACCESS的文件组织、数据类型、编程语言、编程方法等
与xBase 有较大的差异,致使不少xBase 用户在学习ACCESS 时感到困惑,有些用户甚至仅仅是因为从ACCESS 中找不到与xBase 相对应的命令而对ACCESS大加抨击,从而放弃ACCESS 的学习。与xBase 相比,
ACCESS 有很多先进特性,xBase 用户一旦你掌握ACCESS 的基本概念与编程方法、改变“xBase 的思维方式”,就能利用已有的xBase 知识能够很快地掌握ACCESS。本文从多方面对xBase 和ACCESS 进行对比分析,通过对比使传统的xBASE 用户更好地理解与掌握ACCESS。
---- 壹、ACCESS 与xBase 的主要差异:
---- 从大的方面说,ACCESS 的使用与编程方法
同Visual Foxpro3.0 及Visual Foxpro5.0 的使用与编程方法非常相似,熟悉Visual Foxpro3.0 及以上版本的用
户会非常容易地学会ACCESS。没有使用过Visual
Foxpro 的传统xBase 用户在开始学习ACCESS 或Visual
Foxpro 时,需要从思想上做较大的转变,这是由于ACCESS 及Visual Foxpro 都是采用基于事件处理和面
向对象的程序设计方法。下文中所谈到的xBase 指的是Visual Foxpro 以下的版本。
---- 文件组织不同:用xBase 建立的系统通常包含很多不同类型的文件,每一个表、程序、报表、查询、索引、菜单等内容都是文件的方式存放在磁盘上,可以通过项目文件对其他类型的文件进行组织与管理;ACCESS 对数据库的组织同大型后台数据库系统(如SQL SERVER)的数据库组织非常相似,不同数据或程序元素称为对象,所有的
对象都存储在一个物理文件中,而这个物理文件被称为数据库。
---- 编程语言不同:在传统的xBase 中,表、记录等数据操纵或是界面的设计采用的是xBase 命令进行编程,高版本的Foxpro 中引入了部分SQL 语句(如SQL-SELECT)主要用来完成数据的查询;ACCESS 中对表、记录等数据操作主要通过SQL 实现,程序及事件代码的编写采用Visual Basic for Application(低版本的ACCESS 用access basic 编程),简单的程序设计用宏。Visual Basic 是更为通用的编程语言,MS Office 的组件都可以用Visual Basic 进行编程。
---- 编程方法不同:xBase 中采用面向过程的程序设计方法,即使是一个用户输入界面的设计也需要较长的一段xBase 程序;ACCESS 中采用面向对象的程序设计方法,数据处理功能的完成通过改变对象的属性或执行对象方法实现,程序段通常构成事件过程、对象方法、函数,ACCESS 中较少会出现连续的长程序。此外,ACCESS 中具有字段级、记录级、表级数据引用完整性数据约束功
能,事务处理功能和完备的安全机制。
---- 贰、ACCESS 中的数据库对象
---- ACCESS 的数据库窗口中包含六类不同的数据库对象,它们分别是表(Table)、查询(Query)、窗体(Form)、报表(Report)、宏(Macro) 和模块(Module)。ACCESS的数据库如同一个容器一样包含了全部的数据
库对象,与Foxpro 的项目文件不同ACCESS 将这些对
象存储在一个文件中。创建数据库对象只需单击数据库窗口中的‘新建'按钮,修改已有对象选择对象然后单击‘设计'按钮。
---- ACCESS 中的表:ACCESS 中的表等同于xBase 中的DBF文件或Visual Foxpro 中的数据库表。ACCESS 的表
与xBase 的DBF 文件比有如下新特点:
字段名可多达64 位字符
可以设置字段的输入掩码、缺省值、值范围。相当与xBase 中使用@匞ET 语句中的PICTURE、DEFAULT、RANGE 等子句的作用。可以设置字段与字段间的关系(通过设置表 的属性)
---- 在ACCESS 中,不需要用专门的命令或操作来建立和维护索引文件,按某字段建立索引只需在该字段的索引属性中选择特定的索引类型即可,索引的建立维护和使用都是通过ACCESS 系统来完成的,在xBase 中诸:Index on、set index to 等操作不必有用户关心。
---- 根据需要可在ACCESS 的数据库中创建多个表,表与表之间能够建立所谓的参照完整性关系,如同在xBase 中用set relation 、set skip 命令创建的多对一和一对多关系一样,ACCESS 只需图形界面操作就可完成一对多和多对一关系的建立并且通过连锁删除与连锁更新来确保相关表中记录之间关系的有效性,并且不能意外地删除或更改相关数据。
---- 使用ACCESS 表与使用xBase 的DBF 文件的一个重要
差别是所谓“打开”的概念不同,xBase 中用USE 命令打开DBF 文件实质是在内存建立数据缓冲区提供数据通道,若想查看DBF 文件中的数据需要再使用BROWSE 或其他命令,ACCESS 中打开一个表相当于xBase 中USE + BEOWSE 命令。对表中的数据进行处理而不显示表中的记录,在ACCESS 中通常有两中做法,一种是用SQL 语句更新或改变数据,无须先打开表后执行SQL 语句;另一种是用VBA 编程通过数据访问对象(DAO)来操纵表,通过DAO 操纵表时,要打开所谓的记录集(Recordset),xBase 中的USE 命令与VBA(Visual BASIC for Application)中的Openrecordset方法的作用象类似。
---- 查询(Query):ACCESS 中的查询本质上就是SQL 的数据操纵语,利用查询可以通过不同的方法来查看、更改以及分析数据,相当于Foxpro 中的SQL SELECT 语句及Foxpro 的查询。在ACCESS 中,对表、记录、字段的多数操作都可通过查询来完成,例如:在xBase 中使用很多的REPLACE ... WITH ... 命令在ACCESS 中应当用一个动作查询来完成(SQL UPDATE
)。在ACCESS 中建立和使用查询基本上等同于在后台数据库(如:ORACLE、SQL SERVER)中使用SQL 命令,Microsoft Jet 数据库引擎的SQL 符合ANSI SQL,ACCESS
的SQL 实现了几乎所有的ANSI SQL 功能,有些SQL 命令
在ANSI SQL 中所没有的。
---- ACCESS 中选择查询比Foxpro 中的SQL SELECT 命令使用起来更为方便灵活,在ACCESS 中,选择查询在使用等同于表,可以在表与查询间建立关系,查询也可象表一样作为窗体和报表的记录来源,利用查询还能再建查询。
---- 窗体(Form):窗体是利用ACCESS 开发出系统的主要交互界面,在有些书刊上又把窗体叫做表单,窗体相当于xBase 中利用@匰AY匞ET 命令编写用于实现所谓全屏幕编辑功能的程序,窗体又近似于Foxpro 中的屏幕文件(.SCX)。在ACCESS 中建立人机交互界面如同在Foxpro 中建立屏幕文件需要创建窗体对象。
---- 报表(Report):ACCESS 的报表对象最接近xBase 中的报表文件(FRX、FRM)。在xBase 中建立报表文件之
后需要用REPORT FORM ... 命令预览或打印报表,ACCESS 中报表对象建立之后可直接在数据库窗口中单击‘打开'按钮预览报表或是在宏或模块中用OPENREPORT 命令打印或预览报表。
---- 宏(Macro):宏是指一个或多个操作的集合,其中每个操作实现特定的功能,例如打开某个窗体或打印某个报表。宏可以使某些普通的任务自动完成。例如,可设置某个宏,在用户单击某个命令按钮时运行该宏,以打印某个报表。在xBase 中没有特定的文件类型与ACCESS 的宏相对应,在ACCESS97 及以下的版本中,利用宏来创建用
户自定义菜单。
---- 模块(module):ACCESS 的模块相当于xBase 中的程序文件和过程文件。每一个模块中可以包含一个或多个子程序、函数或属性,子程序相当于Base 中的过程(Procedure)。
---- 壹、ACCESS 中用户界面设计
---- 在信息系统的开发中,用户界面的设计占有较大的工作量。ACCESS 中的用户界面设计比xBase 中的用户界面设计大大简化,早期的xBase 版本中用户界面的设计需要确定屏幕上显示文字的坐标位置然后用户@ 卻ay単et 命令书写程序;Foxpro 中,用户界面的设计有了较大的改进,设计用户界面时,先建立屏幕文件(.SCX),然后用生成器生成用户界面的程序文件(.SPR)。ACCESS 中建立用户界面即建立数据库窗体对象(Form),Form 的建立与设计和多数基于WINDOWS 的开发工具(如:Visual
BASIC)的界面设计一致,与xBase 的用户界面设计有较大的差异,xBase 用户应从以下几个方面理解和把握ACCESS 的窗体设计:
---- 1. 理解窗体与程序
---- Foxpro 中,建立用户交互界面需先建立屏幕文件,屏幕文件中又包含若干代码片段(CodeSnippet),利用生成器根据屏幕文件生成扩展名为SPR 的程序文件,代码片段被包含在程序文件之中,执行程序文件即出现交互式用户界面。ACCESS 中,窗体相当于屏幕文件,窗体有三种不同的视图(VIEW)-- 设计视图、窗体视图和数据表视图。设计视图模式用于设计或修改窗体,窗体设计好之后就可以以窗体视图或数据表视图打开窗体即为用户操作使用的交互界面。ACCESS 中不需要将窗体生成程序代码,窗体建好之后直接打开窗体或切换到窗体视图即可。Foxpro 中另人头疼的事情之一是调试屏幕时反复修改屏
幕、生成程序代码、执行程序观看运行效果,对屏幕文件的任何微小改动都必须通过生成程序、执行程序才能看到结果,ACCESS 中无须生成过程,只需在设计视图与窗体视图间切换即可知道窗体修改后的效果。
---- 窗体模块与事件过程:在Foxpro 中,@匞ET 、READ、ACTIVATE 等命令中都可带有许多子句,如:最为常用的VALID 子句,子句通常跟一个用户自定义函数,在用屏幕生成器建立屏幕文件时,子句后的自定义函数的内容可直接输入,这些子句用到的自定义函数程序段被称为代码片段(CodeSnippet)。ACCESS 中,与Foxpro 中代码片段相对应的程序段是事件过程(Event Procedure),所谓事件过程是指一种自动执行的过程,用来对用户或程序代码启动的事件或系统触发的事件作出响应。例如:在Foxpro 中若想在某一字段的值输入或修改之后执行某一段程序,则需要通过输入代码片段建立VALID 子句及VALID 子句所需要的自定义函数;在ACCESS 中,某控件(CONTROL)的值在输入或修改之后欲执行某段程序需在该控件的AfterUpdate 事件属性的事件过程中输入程序内容即可,当控件的值发生变化之后发生After Update 事件系统就自动执行该事件对应的事件过程。ACCESS 中每一个窗体都有与该窗体相关联的窗体模块,窗体模块中存放了所有该窗体的事件过程和该窗体的公用子程序和函数,窗体保存时该窗体模块自动保存。