当前位置:文档之家› VFP基础知识(全)

VFP基础知识(全)

数据处理:
对各种数据的进行收集、整理、组织、存储、维护、计算、检索、统计和传输的过程。通常数据处理也称为信息处理。信息处理一般分为五个步骤:
1、原始数据的收集
2、数据的规范化及其编码
3、数据输入
4、数据处理
5、数据输出
计算机管理技术经历的三个阶段:
1、人工管理阶段;
2、文件系统阶段;
3、数据库系统阶段。
数据库:
以一定的组织形式存放在计算机存储介质上的相互关联的数据的集合。
数据库的特点:
1、具有最小的冗余度,即数据尽可能不重复
2、资源共享性,既以最优的方式服务于一个或多个应用程序
3、数据独立性,即数据的存储尽可能独立于使用它的应用程序
4、安全可靠
5、保密性能好
数据库管理系统(DBMS):
是用于建立、使用和维护数据库的系统软件。它对数据库进行同意的管理和控制,以保证数据库的安全性和完整性。用户通过DBMS访问数据库中的数据,数据库管理员也通过DBMS进行数据库的维护工作。例如,DB2、Informix、Oracle、Sybase 、 Visual FoxPro等均为数据库管理系统。
DBMS的功能
1.模式翻译
2.应用程序的翻译
3.交互式查询
4.数据的组织与存取
5.事物运行管理
6.数据库的维护

元数据
有关数据的结构的信息。对关系型DBMS来讲,包括关系名、属性名、属性的数据类型等。索引也是一种数据结构,包含在元数据中。
数据库系统(Database System):
简称DBS,是实现有组织地、动态地存储大量关联数据,方便用户访问的计算机软硬件资源所组成的具有管理数据库功能的计算机系统。它由数据库(DB)、数据库管理员(DBA)和有关软件组成。这些软件包括数据库管理系统(DBMS)、宿主语言、开发工具和应用程序等。
数据模型及其组成部分:
数据模型(Data Model)是在数据库领域中定义数据及其操作的一种抽象表示。数据模型可由三部分组成:实体及实体间联系的数据结构描述,对(表示实体与联系的)数据的操作与数据的完整性约束条件。
数据模型的分类:
根据适用对象不同,分两类:
1.面向客观世界、面向用户的称为概念数据模型(简称“概念模型”),这类数据模型描述用户和设计者都能理解的信息结构,强调其表达能力和易理解性,如E-R模型
2.面向数据库管理系统,用以刻画实体在数据库中的存储形式及实体之间的联系,称为逻辑数据模型(简称“逻辑模型”),如层次模型(Hierarchical Model )、网状模型( Network Model )、关系模型( Relational Model )、面向对象模型
关系
是以二维表的结构来表示实体与实体间的联系系。一个关系就是一张二维表,关系的首行

称为“属性”(在关系数据库中称为“字段”),其他各行称为“元组”(在关系数据库中称为“记录”)。

关系模型
用二维表表示实体集,通过外部关键字表示实体间联系的数据模型。关系模型通过一系列的关系模式来表示数据的结构和描述,一般有三个组成部分:
1 数据结构:数据库中所有数据及其相互联系都被组成关系(二维表)的形式
2 数据操作:提供一组完备的关系运算,以支持对数据库的各种操作
3 完整性规则:包括域完整性规则、实体完整性规则、参照完整性规则和用户定义的完整性规则

关系模型的性质:
1、二维表的记录数随数据的增删而改变,但它的字段数却是相对固定。因此字段的个数、名称、类型、长度等要素决定二维表的结构。
2、二维表的每一列均有唯一的字段名。
3、二维表中不允许出现完全相同的两行。
4、二维表中行的顺序、列的顺序均可任意交换。
二维表的关键字:
1、超关键字(super key): 二维表中能唯一确定记录的一个或几个列的组称为“超关键字”。如果是用单一的列构成关键字,则称其为“单一关键字(Single Key)”;如果是用两个或两个以上的列构成关键字,则称其为“合成关键字(Composite Key)”。
2、候选关键字(Candidate Key): 如果一个超关键字去掉其中任何一个字段后不再能唯一确定记录。
3、主关键字(Primary Key) :从二维表的候选关键字中,选出一个作为主关键字。对于表中的每一个记录来说,主关键字必须包含一个不同于其他记录的唯一的值。而且主关键字的值不能为空,否则主关键字就起不了标志记录的作用。
4、外部关键字(Foreign Key) :当一张二维表(如A表)的主关键字被包含到另一张二维表(如B表)中,A表的主关键字称为B表的外部关键字。
数据库管理系统的发展趋向:
1、面向对象的程序设计(Object-oriented Programming,简称为OOP)
2、约束和触发器(Constraint and Triggers)
3、多媒体数据(Multimedia Data)
4、万维网(World Wide Web,简称WWW)
5、数据仓库(Data Warehouse)
6、信息综合(Information Integration)
VFP常见的文件类型(以6.0为例)
.app 生成的应用程序 .mem 内存变量保存
.dbc 数据库 .mnx 菜单
.dct 数据库备注 .mnt 菜单备注
.dcx 数据库索引 .mpr 生成的菜单程序
.dbf 表 .mpx 编译后的菜单程序
.fpt 表备注 .pjx 项目
.cdx 复合索引 .pjt 项目备注
.idx 索引,压缩索引 .prg 程序
.err 编译错误 .fxp 编译后的程序
.exe 可执行的程序 .qpr 生成的查询程序
.fky 宏 .fmt 格式文件.qpx 编译后的查询程序
.frx 报表 .scx 表单 .frt 报表备
.sct 表单备注 .lbx 标

签 .tbk 备注备份
.lbt 标签备注 .vcx 可视类库.vct 可视类库备注
项目管理器
VFP系统提供了一个为“项目管理器”的图形化的操作界面管理项目。它是VFP中处理数据和对象的主要组织工具,其管理信息以项目文件保存。项目管理器可以称为VFP的控制中心
表的概念
VFP中的表是指存储在磁盘文件中的一张二维表。一张表保存在为一个表文件(.dbf)表有时也称数据表。表文件的文件名必须遵守WINDOWS系统名的约定外,不可用A-J中的单个字母名做文件名
表中的列称为字段(Field),字段规定了数据的特征
表的行叫做记录(Record),每一条记录表示一个实体,记录是多个字段的集合
字段的基本属性
1、字段名(Field Name),每一个字段必须取一个名字,称为“字段名”,用以在表中标志该字段。
2、字段的数据类型(Type),表中每个字段都有特定的数据类型。
3、字段宽度(Width),指该字段所能容纳数据的最大的字节数,字段的宽度必须能足够容纳可能的最长的数据信息。
4、小数位数(Decimal),对于数值型、浮点型和双精度型的字段,还可以指定其小数的位数。
5、空值(NULL)支持,空值是用来指示记录中的一个字段“没有值”的标志。空值表示没有任何值或没有确定值,空值不同于数值0、空字符串或逻辑“假”。
VFP表字段的基本数据类型
1、字符型(C) 字母、汉字符号和数值型文本
2、货币型(Y) 货币单位
3、数值型(N) 整数或小数
4、浮点型(F) 同数值型
5、日期型(D) 年、月、日
6、日期时间型(T) 年、月、日、时、分、秒
7、双精度型(B) 双精度数值
8、整型(I) 不带小数点的数值
9、逻辑性(L) 真与假
10、备注型(M) 不定长的一段文本
11、通用型(G) OLE (图片或者声音)
记录指针标志
当一个表文件被打开后,系统中自动生成三个控制标记:记录的开始标记、记录指针标记、记录的结束标记。分别可用函数bof(),recon(),eof()来测试。
记录的定位方式
可分为:记录指针的绝对定位、记录指针的相对定位和条件定位。

指针的绝对定位是指把指针移到指定的位置。
指针的相对定位是指把指针从当前位置开始,相对于当前记录向前或向后移动若干个记录位置。
条件定位是指按照一定的条件自动地在整张表或表的某个指定范围中查找符合该条件的记录。
VFP工作区
所谓工作区指用以标识一张打开表的区域。打开一张表时,必须为该表指定一个工作区。每个工作区有一个编号。在工作区中打开的表都有一个别名。
当前工作区即VFP正在使用的工作区,即默认的工作区。一个工作区只能打开

一个表,但一个表可同时在多个工作区打开。
表的独占和共享使用
一张表可以同时被多个用户打开访问,称为表的共享使用。SET EXCLUSIVE OFF
反之,当一张表只能被一个用户打开时,称为表的独占使用。 SET EXCLUSIVE ON

系统默认为独占
记录的顺序
表中记录通常是按其输入的时间顺序存放的,这种顺序称为记录的物理顺序。记录号表示了记录的物理顺序。
表打开后被使用时,记录的处理顺序称为逻辑顺序。逻辑顺序可以和物理顺序相同,但常是对表文件的记录按某个字段值或某些字段值排序。
索引
索引是根据索引关键字(即索引表达式)的值进行逻辑排序的一组指针,它提供了对数据的快速访问,且可以对表中的各条记录强制实现唯一性。索引文件由索引序号和对应于索引序号的表的记录号(指针)组成。
索引关键字和索引标志
索引关键字是用来作为建立索引的依据,它通常是一个字段或字段表达式,有时也叫索引表达式。
索引标志是索引关键字的名称,也叫做索引名。必须以下划线、字母或汉字开头,并且不能超过10个字节。
索引的类型
VFP中,索引有四种类型:主索引、候选索引、普通索引和唯一索引。
1、主索引(Primary Indexes)。在数据库表中,每张表只能创建一个主索引。组成主索引关键字的字段或表达式,在表的所有记录中不能有重复的值。自由表不能创建主索引,主索引只适用于数据库表的结构复合索引中。
2、候选索引(Candidate Indexes)。在指定的关键字段或表达式中不允许有重复值的索引。一张表中可以建立多个候选索引,候选索引可用于数据库表和自由表。
3、普通索引(Regular Indexes)。索引表达式的值允许重复,即在普通索引上查找的记录不具有唯一性。对一张表可以创建多个普通索引
4、唯一索引( Unique Indexes )。索引表达式可以有重复值,但在索引文件中,具有重复的值(记录号)仅存储其中的第一个。
索引文件的种类
索引文件:索引本身并不改变数据的物理顺序,只是把索引保存到另一个文件中,这一文件就是索引文件。
结构复合索引(Structure Compound Index)文件:是将一张表的一个或多个索引的索引信息存储在一个索引文件中,且索引文件的主文件名与表名相同,扩展名为.CDX,创建时系统自动给定。它自动与表文件同步打开、更新和关闭。
非结构复合索引(Non-structure Compound Index)文件:是将一张表的一个或多个索引的索引信息存储在一个索引文件中,扩展名为.CDX,但其文件名与表名不同,且不会自动随表的打开而打开,只有用打开索引文件命令将其打开,才能起作用。
独立索引

文件(Independent Index):只存储一个索引的文件,一般作为临时索引文件,其扩展名为“.idx”。不会随表的打开自动打开
主控索引(Master Controlling Index)
在复合索引的多个索引中,在某一时刻只有一个索引对表起作用,这个索引标志称为主控索引。
数据库
数据库是一个容器,是许多相关的数据库表及其关系的集合。每创建一个新的数据库都产生三个文件:数据库文件(扩展名为.dbc)、关联的数据库备注文件(扩展名为.dct)、和关联的数据库索引文件(扩展名为.dcx)

VFP数据库的组成
主要包括:
数据库表
视图
连接
存储过程

数据库表间的双向链接
从属于某一个数据库的表,称为“数据库表”(也称“相关表”)。
数据库表与数据库之间的相关性是通过表文件(.dbf)和库文件(.dbc)之间的双向链接实现的。双向链接包括前链和后链。
前链是保存在数据库文件(.dbc)中的有关表文件的路径和文件名信息中,它将数据库和数据库表文件相链接。
后链是存放在一张表的表头中的有关库文件的路径和文件名信息中,用以将自身与包含自身的数据库容器相链接。
存储过程
是保存在数据库中的过程代码的地方,它由一系列用户自定义函数或在创建表与表之间参照完整性规则时系统创建的函数组成。
数据字典
数据字典(Date Dictionary)是包含数据库中所有表信息的一张表。存储在数据字典中的信息称之为元数据(Metadata),换言之,其记录关于数据的数据。
字段的显示属性
字段的显示属性是用来指定输入和显示字段的格式属性,包括格式、输入掩码和标题的属性。
表的字段级验证规则和记录级验证规则
字段级有效性规则:来控制用户输入到字段中的信息类型,或检查一个独立于此记录的其他字段值的字段数据。字段级有效性规则在字段值改变时发生作用,它将把所输入的值用所定义的规则表达式进行验证,如果输入的值不满足要求,则拒绝该值。
记录级有效性规则:在向表中输入记录时,用于比较两个以上的字段是否满足一定的条件,如果不满足,记录值被拒绝。
长表名
数据库表如果设置了长表名属性,该数据库表在各种对话框、窗口中均以长表名代替表名。在打开数据库表时,长表名与文件名可以同样使用。
表的触发器的基本概念
触发器是绑定在表上的逻辑表达式,当表中的任何记录被指定的操作命令(插入、更新、删除)修改时,在进行了其他所有检查(有效性规则,主关键字实施,NULL值实施等)之后激活。
表的触发器是表在插入、更新或删除记录时进行的检验规则。触发器可分为:
插入触发器:每次

向表中插入或追加记录时触发该规则;
更新触发器:每次在表中修改记录时触发该规则;
删除触发器:每次在表中删除记录时触发该规则。
表之间的关系
一对多关系:设有甲乙两张表,如果甲表中的任意一个记录在乙表中可以有几个记录与之对应,而乙表中的每个记录在甲表中就有一个记录与之对应,则称甲乙两张表之间存在一对多关系,并称甲表为“父表”,乙表为“子表”。
多对多关系:若甲表的一个记录在乙表中可以对应多个记录,而乙表中的一个记录在甲表中也可以对应多个记录,则称这两张表具有多对多关系。
一对一关系:甲表的一个记录在乙表中只能对应一个记录,而乙表中的一个记录在甲表中也只能有一个记录与之对应。
永久关系和临时关系
永久关系(Persistent Relationship)是数据库表之间的一种关系,不仅在运行时存在,而且一直保留,拥有永久关系的表必须在数据库中。根据表的索引建立。
临时关系(Temporary Relationship)是在打开的表之间用SET RELATION命令建立的临时性关联。

参照完整性(Referential Integrity,简称RI)
用来控制数据的一致性,尤其是控制数据库相关表之间的主关键字和外部关键字之间数据一致性的规则。一般来讲,具有一对多关系的两张数据库表要满足以下三个规则:
1、子表中的每一个记录在对应的主表中必须有一个父记录。
2、在父表中修改记录时,如果修改了主关键字的值,则子表中相关记录的外部关键字值必须同样修改。
3、在父表中删除记录时,与该记录中相关的记录必须全部删除。
参照完整性规则包括更新规则、插入规则和删除规则。每一种规则又有“级联”、“限制”、“忽略”三个级别
VFP数据完整性
VFP有三类完整性:实体完整性、参照完整性以及用户自定义完整性。
1、用户自定义完整性是指由用户通过编程实现对数据完整性的约束。
2、参照完整性是指相关表之间的数据一致性。
3、实体完整性包括两级:字段的数据完整性和记录的数据完整性。
字段的数据完整性是指输入到字段中的数据的类型或值必须符合某个特定的要求。字段的有效性规则即用以实施字段的数据完整性。
记录的数据完整性是指为记录赋于数据完整性规则。记录的数据完整性通过记录的有效性规则加以实施。
查询
所谓“查询”,是指向一个数据库发出检索信息的请求,它使用一些条件提取特定的记录。查询的运行结果是一个基于表和视图的动态的数据结合。
分组
所谓分组就是将一组类似的记录压缩成一个结果记录,这样就可以完成基于一组记录的计算。可以利用合计函数COUNT()

、SUM()、AVG()对每一组记录进行计数、求和及求平均计算。
多表查询
当需要获取存储在两张或更多张表或视图中的信息时,只要把所有有关的表或视图添加到查询中,并用公共字段联接它们。多张表可以是数据库表、自由表或视图的任意组合。
联接和联接条件的概念
联接(Join)是指查询或视图的一个数据库操作。两张表联接的结果是一张新表。两张表中各有任意一个记录,如果这两个记录满足联接条件,将组合成新表的一个记录。
在联接产生新记录时,必须限定在符合什么条件时,才构成一个新记录,所谓联接条件便是这样的限定条件。
联接类型
在建立联接时,必须选择一个联接类型。联接类型有四种:
1、内联接(Inner Join):两张表中仅满足条件的记录,这是最普通的联接类型。
2、左联接(Left Outer Join):表中在联接条件左边的所有记录,和表中联接条件右边的且满足联接条件的记录。
3、右联接(Right Outer Join):表中在联接条件右边的所有记录,和表中联接条件左边的且满足联接条件的记录。
4、完全联接(Full Join):表中不论是否满足条件的所有记录。
交叉表查询
所谓交叉表查询(Cross-Tab Query)就是以电子表格形式显示数据的查询。可以使用“交叉表向导”建立交叉表查询。
ODBC(开放式数据库互连)
ODBC是一种用于数据库服务器的标准协议,通过ODBC可访问多种数据库中的数据,可安装多种数据库的ODBC驱动程序,从而使VFP可以与该数据库相连,访问数据库中的数据。
视图(View)
把分散在相关表中的数据通过联接条件把他们收集到一起,构成一张“虚表”。这张“虚表”就是视图。
视图是数据库的一个组成部分,是基于表的并且可更新的数据集合。
视图兼有表和查询的特点:与查询相类似的地方是,可以用来从一张或多张相关联的表中提取有用信息;与表相类似的地方是,可以用来更新其中的信息,并将更新结果永久保存在磁盘上。
视图的类型
可以创建两种类型的视图:远程视图和本地试图。
远程视图使用远程SQL语法从远程ODBC数据源表中选择信息。
本地试图使用VFP SQL语法从视图或表中选择信息。
参数化视图
可以用来限定视图的作用范围,而可以避免每取一部分记录就需要单独创建一个视图的情况。参数化视图在视图的SQL SELECT语句中加一条WHERE子句,从而仅下载那些符合WHERE子句条件的记录,其中的子句是根据所提供的参数值建立的,参数值可以在运行时传递,也可以以编程方式传递。
集成视图
一个基于视图的视图,或基于集成了本地表、本地试图或远程视图的视图,被称为多级视

图。
集成了其他视图的视图为顶层视图。
SQL
SQL(Structured Query Language,结构化查询语言)是美国国家标准局ANSI确认的关系数据库语言的标准。VFP支持SQL。VFP的SQL命令使用Rushmore技术来优化性能,并且一个SQL命令可以代替多个VFP命令。
VFP支持如下SQL命令:
1、SELECT-SQL。指定查询条件并执行查询命令,VFP解释该查询,并且从表中检索指定的数据。
2、ALTER TABLE-SQL。修改一张已存在的表。
3、CREATE CURSOR-SQL。创建一张临时表。
4、CREATE TABLE-SQL。创建一张表。
5、DELETE-SQL。使用SQL语法将表中的记录加上删除标记。
6、INSERT-SQL。在已存在的表的末尾追加一条新记录。
7、UPDATE-SQL。更新表中的记录。
数据类型
数据类型是指数据对象的取值集合,以及对之可施行的运算集合。数据类型规定了具有该类型的变量或表达式的取值范围,也规定了与之相联系的运算的集合
VFP的基本数据类型如下:
1、字符型,任意文本。
2、货币型,货币量。
3、日期性,包含日期的数据。
4、日期时间性,包含日期和时间的数据。
5、数值型,整数或小数。
6、逻辑型,“真”或“假”的布尔值。
7、浮点型,与数值型一样。
8、双精度型,双精度浮点数。
9、整型,整型数。
10、备注型,数据块引用。
11、通用型,OLE对象引用。
常量和变量
常量(Constants)是指在所有操作过程中保持不变。根据数据类型可分为6种:数值型常量、货币型常量、字符型常量、逻辑型常量、日期型常量、日期时间型常量
变量(Variables)是由用户定义的内存中的一个(组)存储单元,由变量名来标识,其值可以由程序操作修改。使用过程中,该存储单中存放的数据在程序操作期间通过变量名来读写。VFP的变量称为内存变量。
数组( Arrays )
数组(Arrays)也是一种变量,它是存储在内存中的有序的数据值系列,其中的数据值被称为元素,并可通过数据序号引用。
字段(Fields)
字段(Fields)是表的记录中拥有特定数据类型的命名位置。字段可以是VFP允许的任意数据类型或字段类型。
对象(Objects)
对象(Objects)是类的实例,类是对于拥有数据和一定行为特征的对象集合的描述。每个对象都有其属性和方法,并能响应特定的事件。可以通过对象的事件、属性和方法来处理对象。
VFP的命名规则
VFP的对象名、数组名、表的字段名、过程名和对象的属性名等,要满足如下规则:
1、名称中只能包含字母、下划线“_”和数字符号。
2、名称的开头只能是字母或下划线,不能是数字。
3、除了自由表的字段名、表的索引标志至多只能有10个字符外,其余的名称的长度可

以在1~128个字符之间。
4、避免使用VFP系统的保留字。
操作符(Operators)
操作符(Operators)用来处理同种类型的数据。VFP操作符按以下数据类型和函数进行分组:字符操作符、日期和日期时间操作符、逻辑操作符、关系操作符、数值操作符。
函数及参数
函数(Function)是一个预先编制好的程序代码,可供用户或程序调用。
参数(Argument)是供函数或过程操作的一个值。
函数可分为系统函数和“用户自定义函数”。
函数由VFP提供的,称为系统函数。
函数由用户定义的,称为“用户自定义函数”。
系统函数的分类
VFP提供了大量的系统函数,按功能可分为五大类,每一大类又可细分为若干功能更明确的小类。
1,数据类型类
2,数据库类
3,环境类
4,输入输出类
5,程序设计类

数据类型类
数值函数:处理并返回数据型数据。ABS()、MAX()、INT()、MOD()。
字符函数:处理字符型数据 ALLTRIM()、AT()、EMPTY()。
日期/时间函数:用以产生和处理日期和时间型数据。DATA()、DATETIME()、DOW()、DAY()、MONTH()、YEAR()、SECONDS()。
数据转换函数:将数据从一种类型转化为另一类型。STR()、VAL()、CHR()、DTOC()、CTOD()。
数据库类
数据库函数:用以处理数据库的函数。DBUSED()、DBC()、DBSETPROP()、DBGETPROP()。
字段函数:用以处理表中的字段的函数。DELETED()、FIELDS()、FCOUNT()、FSIZE()。
索引函数:用以对索引文件的操作并返回与索引文件有关的信息。CDX()、ORDER()、TAG()、UNIQUE()。
记录函数:用以选择表中的记录或将记录指针定位。RECNO()、SEEK()、FILTER()、KEYMATCH()。
关系函数:建立或中断表之间的关系。RELATION()、TARGET()。
表函数:用以创建、处理和查看表。BOF()、EOF()、RECCOUNT()、MLINE()。
环境类
环境函数:处理系统环境的函数。CAPSLOCK()、INSMODE()、RGB()、DISKSPACE()、NUMLOCK()。
文件管理函数:用于处理磁盘文件的函数。FILE()、PUTFILE()、GETFILE()。
输出输入类
键盘和鼠标输入:函控制键盘和鼠标进行输入LASTKEY()、INKEY()、MDOWN()、ISMOUSE()。
菜单函数:开发、显示和激活用户自定义的菜单和菜单栏。BAR()、POPUP()、PAD()、PROMPT()、GETPAD()。
打印函数:用于打印输出。PRINTSTATUS()、PROW()、PCOL()、GETPRINTER()。
窗口函数:创建、显示和激活用户自定义窗口。WVISIBLE()、WEXIST()、WFONT()、WONTOP()、WOUTPUT()。
程序设计类
数组函数:用于处理数组。ASORT()、ADEL()、ADIR()、ACO

PY()。
调试和错误处理函数:调试程序。ERROR()、LINENO()、PROGRAM()、MESSAGE()。
低级文件函数:低级处理文件和通信端口。FOPEN()、FREAD()、FSEEK()、FCREATE()、FEOF()。
面向对象程序设计函数:用于创建和处理类和对象。CREATEOBJECT()、GETOBJECT()、ACLASS()、AMEMBERS()。
表达式(Expression)
表达式(Expression)是变量、常量、函数、字段名、等组合起来可以进行运算的式子。表达式求值的结果是单个值。在此概念下,单个变量、常量、函数、字段名、控件以及属性都可以看作是一个表达式。
表达式分类
根据VFP所提供的操作符,表达式可分为字符表达式、日期表达式、算术表达式、逻辑表达式和名称表达式。
1、字符表达式由字符运算符及字符类型的字段、返回字符值的函数、字符型变量和数组元素、字符常量组成。
2、日期表达式由日期运算符及Date或者DateTime类型的字段、返回日期或者日期和时间的函数、日期或时间型的变量和数组元素、Date或者DateTime类型的常量组成。
3、算术表达式由算术运算符,Float、Double、Integer和Nurneric类型的字段,返回一个数值数据的函数,包含数值数据的变量和数组元素,数值常量组成。
4、逻辑表达式只有两个值:真(.T.)和假(.F.)。VFP中的逻辑表达式由逻辑运算符和逻辑类型字段、返回逻辑值的函数、包括逻辑值的内存变量或数组元素、逻辑常量、任何一个返回逻辑值的表达式组成。
5、名称表达式是由圆括号括起来的一个字符表达式,可以用来替换和函数中的名称(如字段名、变量名、窗口名、菜单名、文件名和对象名等)。
宏替换(Macro Substitution)
宏替换与名称表达式具有相似的作用,可使用宏替换的方法用内存变量替换名称。在使用宏替换时,将连字符(&)放在变量将,告诉VFP将此变量值当作名称使用,并使用一个句号(.)来结束这个宏替换表达式。
NULL值
VFP支持NULL值。NULL值具有以下特点:
1、等价于没有任何值;
2、与0、空字符串(“”)或空格不同;
3、排序优先于其他数据;
4、在计算过程中或大多数函数中都可以用到NULL值。
5、NULL值会影响命令、函数、逻辑表达式和参数的行为,VFP支持的NULL值可以出现在任何使用值或表达式的地方。
用户自定义(UDF)的基本概念
用户自定义函数扩充了VFP语言,通过定义UDF来为自己的应用程序建立一些专用函数。UDF包括保存在独立的程序文件(.prg)中的独立程序、程序中的过程和函数以及数据库的存储过程中。在VFP中,过程和函数区别不大。
参数传递的两种方式
有两种方式将参数传送给UDF:按引用传递

方式和按值传递方式。
按引用(Reference)传递方式是将作为参数的变量和数组元素的地址传递给UDF,当参数的值在被调用过程中更改时,新值传递回调用程序中相关的变量或数组元素。
按值(Value)传递方式是把变量和数组元素的值直接传递给UDF,当UDF中参数的值发生变化时,原来的变量或数组元素的值不发生变化。
程序控制
程序控制是指根据不同的情况和条件,控制程序去执行相应的语句序列。VFP中有一类特殊的命令,在这些命令的控制下,可以根据一定的条件控制程序执行某一组命令而不执行另一组命令。或者使其他的一组命令或函数重复执行多次,这类命令在程序设计过程中作用很大,可用来实现两种主要的程序结构:条件分支和循环。
程序控制类型
VFP的程序控制主要分为四种:顺序、条件分支、循环和子程序。
顺序(Sequential)结构由语句行组成,程序执行时,按程序中的语句顺序执行。
条件分支(Conditional Branching)根据条件的测试结果执行不同的操作。
循环(Looping)就是使得一组语句组重复执行若干次。可以预先指定要循环的次数;也可以预先不指定次数,只要某个条件成立,就可以一直循环下去,直到该条件不成立。
子程序(Subprogram)是结构化程序设计的主要特点,一个应用程序的许多功能可以编写成一个个独立的子程序、过程或用户自定义函数,然后把他们组装到一个主程序中。
结构的嵌套
所谓嵌套就是在一种结构中可以包含任何的结构。这里的结构指的是四种控制结构(顺序、条件分支、循环和子程序)。
面向对象程序设计方法
面向对象程序设计是一种系统化的程序设计方法,具有抽象化、模块化的分成结构。它通过对类、子类和对象等的设计来体现的。
类和对象
类定义了对象特征以及对象外观和行为的模板,它刻划了一组具有共同特性的对象。
对象是类的一个实例,包括了数据和过程(操作)。
应用程序对象
在VFP中,应用程序对象主要指表单、表单集,以及表单中所包含的多个控件。
表单(Form):用户在Windows环境下所看到的各种窗口与对话框。
表单集(Formset):包含一个或多个表单的集合,表单集中的表单可以同一处理。
控件(Control)对象:放在一个表单上用以显示数据、执行操作或使表单更易阅读的一种图形化对象。
基类与子类
基类(Base Class)是VFP系统提供的内部定义的类,可用作其他用户自定义类的基础。用户可以从基类直接产生对象,也可以由它派生出子类
子类(Subclass)是以其它类定义为起点,为莫一对象所建立的新类。子类将继承任何对父类(即子类所基于

的类)所做的修改。
VFP类的特点
在面向对象的程序设计中,通过类可以简化应用程序的设计。因为类具有继承性、多态性、封装性、抽象性等特点。
继承性(Inheritance):说明了子类延用父类的能力。如果父类特征发生改变,则子类将继承这些新特征。
多态性(Polymorphism)主要是指一些关联的类包含同名的方法程序,但方法程序的内容可以不同。具体调用哪种方法程序,在运行时根据对象的类确定。
封装性(Encapsulation):说明了包含和隐藏信息,如内部数据结构和代码的能力。封装将操作对象的内部复杂性与应用程序的其他部分隔离开来。封装和隐藏是面相对象技术的核心,使得软件具有很好的模块性,各模块具有明显的范围和边界,实现了模块内的高内聚和模块间的低耦合。
抽象性(Abstraction):是指提取一个类或对象与众不同的特征,而不对该类或对象的所有信息进行处理。
对象的属性、事件和方法
属性(Property)定义对象的特征或某一方面的行为。对象的某些属性值既能在设计阶段也能在运行阶段设置,但也有些属性不能进行设置,仅是只读的。
事件(Event)是由对象识别的一个动作,可以编写相应的代码,以对此行动进行响应。在VFP中,不同的对象所能识别的事件虽然有所不同,但事件集合是固定的,用户不能创建新的事件。
方法(Method)是对象能够执行的一个操作。在VFP中,方法是与对象相关联的过程(完成某种操作的处理代码),通常也称为方法程序。
对象是面向对象式系统中运行时刻的基本成分,它是属性与行为(即数据与操作)以及与其他对象的接口的封装体。
VFP5.0的基类
容器、编辑框、列表框、标签、控件
文件框、组合框、图像、表单集、微调框
复选框、形状、表单、表格、选项按钮组
线条、工具栏、标头*、选项按钮*
分隔符*、自定义、列*、计时器
命令按钮组、页框、OLE绑定型控件
命令按钮、页面*、OLE容器控件
(注:*表示该类是容器类的集成部分,在类设计器中不能基于他们创建子类)
基类的最小事件集
Init 当对象创建时激活。
Destroy 当对象从内存中释放时激活
Error 当类中的事件或方法程序运行中发生错误时激活。
Class 该类属于何种类型
BaseClass 该类由何种基类派生而来。
ClassLibrary 该来属于那种类库。
ParentClass 对象所基于的类。
容器类与控件类
VFP中的类可以分为两大类型:容器类和控件类(也称为非容器类)。
容器类(contrainer classes)是包容其他类的基类。将容器类的对象加入表单后,无论在设计时还是在运行时,均可以将该容器类的对象作为一个整体进行

操作,也可以分别对其包含的对象进行处理。
控件类(control classes)是可以包含在容器类中的基类。
容器对象和控件对象
VFP中的对象根据所基于的类的性质,也可以分为容器对象和控件对象。容器对象可以作为其他对象的父对象,控件对象可以包含在对象中,但不能作为其他对象的父对象。
应用对象
在VFP中,引用对象由两种引用方法:
1、绝对引用
绝对引用是指从容器的最高层次引用对象,给出对象的绝对地址。
2、相对引用
相对引用是指在容器层次中相对于某个容器层次的引用。相对引用对象时所涉及到的一些关键字,其中THIS、THISFORM、THISFORMSET、ActiveForm、ActivePage、ActiveControl、Parent等,其中THIS、THISFORM、THISFORMSET只能在方法程序或事件处理代码中使用。
方法程序
方法程序时对象能够执行的一个操作,是和对象相联系的过程。VFP基类创建的对象都有多个相关的方法程序,用户也可以创建新的方法程序。
VFP基类的核心事件集
VFP的核心事件集:
Load:表单或表单集被加载到内存中
Unload:从内存中释放表单和表单集
Init:创建对象
Destroy:从内存中释放对象
Click:用户使用主鼠标按钮单击对象
DblClick:用户使用主鼠标按钮双击对象
RightClick:用户使用副鼠标按钮单击对象
GotFocus:对象接受焦点,由用户动作引起,如按【Tab】键或单击,或者在代码中使用SetFocus方法
Lostfocus:对象失去焦点,由用户动作引起,如按【Tab】键或单击,或者在代码中使用SetFocus方法
KeyPress:用户按下或释放键
MouseDown:当鼠标指针停在一个对象上时,用户按下鼠标按钮。
MouseMove:用户在对象上移动鼠标
MouseUp:当鼠标指针停在一个对象上时,用户释放鼠标按钮。
InteractiveChange:以交互方式改变对象值
ProgrammaticChange:以编程方式改变对象值
VFP基类的最小事件集
VFP基类的核心事件集是固定的,不能进行扩充。每个类都可识别固定的默认事件集合,它的最小事件集包括Init、Destroy和Error事件。
常用的事件
在VFP中,常用的事件可以归类为鼠标事件、键盘事件、表单事件、控件焦点事件、数据环境事件等类型。
鼠标事件
在VFP中,鼠标事件主要有MouseMove事件、Click事件、RightClick事件、DblClick事件、MouseDown事件、MouseUp事件、DragDrop事件、DragOver事件、DropDown事件、Scrolled事件、DownClick事件、UpClick事件。
键盘事件
在VFP中,与键盘操作相关的事件主要是KeyPress事件。
改变控件内容的事件
改变控件内容的事件有InteractiveChange事件和ProgrammaticChange事件。
焦点事件
焦点(Focus)用以指出当前被操作的对象。焦点事件有Gotfocus事件、LostFocus事件、When事件

和Valid事件。
表单事件
表单事件是指操作表单发生的事件。表单事件主要有Load事件、Unload事件、Activate事件、Deactivate事件、Paint事件和Resize事件。
数据环境事件
数据环境包括了与表单相关的表和视图,以及表单要求的表之间的关系。与数据环境有关的事件有AfterCloseTable事件和BeforeOpenTable事件。
事件驱动和事件循环
事件驱动程序设计(Event-Driven Programming)时一种强调时间代码的程序设计模型,与过程化程序设计的系列代码不同。采用传统的过程化的程序设计所设计的应用程序,从头到尾根据程序设计人员安排的顺序执行,在整个程序运行过程(进程)中,该程序独占系统的资源(处理器、内存、屏幕等)。而采用事件驱动程序设计方法所设计的应用程序,程序的执行是由事件驱动的,一旦程序启动后就根据发生的事件执行相应的程序,如果无事件发生,则程序就空闲着以等待事件的发生,此时用户也可以启动其他多个应用程序。
利用VFP进行应用程序设计,必须创建事件循环(Event Loop),事件循环是由READ EXENT命令建立、CLEAR EVENT命令终止的交互式运行时刻环境。
表单(Form)和表单集(Form Set)
表单(Form)类似于Windows中的各种标准窗口与对话框,是VFP最常用的界面,即利用表单作为应用程序与用户将的各种界面。表单是一种容器类,可以由一个或多个页面组成,每个页面中又可以包含多个控件对象,用于处理各种数据,或相应用户/系统事件,以完成信息的处理。
表单集(Form set)是一种容器类,由一个或多个相关表单组成。
数据环境
表单(集)的数据环境包括了与表单交互作用的表和视图,以及表单要求的表之间的关系。
集合(Collection)属性和计数(Count)属性
VFP中所有容器对象都具有与之相关的计数(Count)属性和集合(Collection)属性
集合属性是一个数组,用以引用每个包含在其中的对象。
计数对象是一个数值属性,它表明了所包含对象的数目。
实例(Instance)
实例(Instance)是指根据类定义创建的一个对象。与一个类不同,类仅仅是一种定义,而一个实例则是可以用来执行莫种任务的对象。
表单的多个实例是指对于同一个表单定义、执行了多次从而打开了多个表单。这些表单是基于同一个表单定义,但它们可以独立地显示和操作。
单文档界面和多文档界面
VFP种允许创建两种类型的应用程序:单文档界面和多文档界面。
1、多文档界面。各个应用程序由单一的主窗口组成,且应用程序的窗口包含在主窗口中或浮动在主窗口的顶端。
2、单文档界面。应用程序由一个或多个独立的窗口组成,它们在Windows

的桌面上独立显示。
三种类型的表单
VFP中可以创建以下三种类型的表单。
1、子表单。指包含在其他表单(称为父表单)中的表单,它不能移出父表单。当子表单最小化时,出现在父表单的底部。如果父表单最小化,则子表单一同最小化。子表单不出现在Windows的任务栏中。
2、浮动表单。指由子表单变化而来的表单。它与子表单一样,可用于创建多文档界面,但它又不同于子表单。该表单属于父表单的一部分,可以不位于父表单中(即可以在桌面上任意移动),但不能在父表单后台移动。但浮动表单最小化时,它显示在桌面的底部;当父表单最小化时,浮动表单也一同最小化。
3、顶层表单。指独立的、无模式的、无父表单的表单。它通称用于创建单文档界面,或用于多文档界面中其他表单的父表单。顶层表单与其他Windows应用程序同级,可出现在前台或后台,并且显示在Windows的任务栏中。
控件(control)
控件(control)是放在表单上用以显示数据、执行操作或使表单更易阅读的一种图形对象,如文本框、矩形或命令按钮。
控件分类
根据控件和数据的关系划分,控件分为绑定型控件和非绑定型控件。
绑定型控件(bound control)是指内容可以和与后端的表、视图或查询中的字段和内存变量相关联的控件。在该控件中输入、修改或选择的值将保存在数据源中,而数据源中值的改变,也将改变控件的值。
非绑定型控件是指其内容不与后端的表、视图和查询中的字段或内容相关联的控件。
标签控件(Label)
标签控件(Label)是用以显示文本的图形控件,其中的文本不能被用户直接更改,通称用于显示提示信息。
标签控件的主要属性有Caption属性、BackStyle属性、AutoSize属性和WordWrap属性。
文本框(TextBox)
文本框(TextBox)是一种基本的常用控件,通过文本框可以显示、输入或编辑保存在表中的非备注型字段的数据。与文本框有关的主要属性有ControlSource属性、Value属性、InputMask属性、Format属性和PasswordChar。
编辑框(EditBox)
编辑框(EditBox)可以显示、输入或编辑长字段或备注字段,也可以保存在表的非备注型字段的数据。相关属性有ControlSource 属性和ScorllBars属性
列表框与组合框
列表框(ListBox)主要用于显示一组预定的值,并可以通过滚动条操作浏览列表信息,用户从列表中可以选择需要的数据。列表框的数据源(行源)由RowSourceType属性和RowSource属性给定。列表框的ControlSource属性用于指定用户从列表中选择的值保存在何处。
组合框(ComboBox)类似列表框和文本框的组合,可以在其中输入值或从列表中选择条目。组合框的RowSourceType

属性、RowSource属性、ControlSource属性的设置同列表框。

选项组按钮(OptionGroup)
选项组按钮(OptionGroup)是包含选项按钮的容器控件。选项按钮组允许用户从中选择一个按钮。选定某一个选项按钮,将释放先前的选择,同时使选择成为当前值,选项按钮旁边的圆点指示当前的选择。选项按钮组的属性,主要是要设置选项按钮组的ButtonCount属性和各个选项按钮的Caption。
复选框(CheckBox)
可以利用复选框(CheckBox)指定或显示一个逻辑状态:真/假、开/关、是/否。有时不能将问题的回答准确归为“真”或“假”,这时可用NULL值。
表格(Grid)
表格(Grid)是一个按行和列显示数据的容器对象,其外观与浏览窗口相似。表格包含列,这些列除了包含标头(Header)和控件外,每一列还拥有自己的一组属性、事件和方法,从而提供了对表格单元的大量控制。表格中的标头在列的最上面显示列标题,并且可以响应事件。
微调框(Spinner)
在接受给定范围的数据输入时,可以使用微调控件(Spinner)。通过单击微调控件的上箭头或下箭头,或者在微调框内键入一个数值,可以实现微调控件在一个数值范围内进行选择。微调控件的主要属性除了ControlSource属性、Value属性外,还有KeyBoardHighValue属性、SpinnerHighValue属性、KeyBoardLowValue属性、SpinnerLowValue属性、Increment属性。
命令按钮和命令按钮组
命令按钮(CommandButton)通常用来启动一个事件以完成某个功能。
使用命令按钮组(CommandGroup)控件可创建一组命令按钮,ButtonCount属性用于指定组中的命令按钮数目。
计时器(Timer)
计时器(Timer)是在应用程序中用来处理复发事件的控件。该控件在运行时不可见,用于后台处理。
计时器控件的主要属性有Enable属性和Interval属性。
线条与形状
线条(Line)控件用于创建一个水平线条、竖直线条或对角线条。线条控件的主要属性有BorderWidth属性、BorderStyle属性和LineSlant属性。
形状(Shape)控件用来创建各种形状图形,如各种矩形、椭圆或圆等。形状控件的主要属性有Curvature属性、FillStyle属性和SpecialEffect属性。
Tab键次序
“Tab键次序”是指在表单上按【Tab】键时,焦点从一个对象移向另一个对象的次序。表单的“Tab键次序”决定了选定控件的顺序。
页框控件(PageFrame)
利用页框控件可以扩展表单的“表面面积”,而利用OLE(对象链接与嵌入)控件则可以扩展表单的功能。
页框控件(PageFrame)是包含页面的容器对象,利用它可以创建一个用以包含页面的页框。
页框的主要属性有PageCount、Tabs、TabStyle等。
链接与嵌入
对象链接与嵌入(OLE)是一种协议。根

据该协议,一个OLE对象,可以链接或嵌入到表单中或表的通用字段中。
嵌入用于将一个对象的副本从一个应用程序插入到另一个应用程序中。对象副本嵌入后,不再与原来的对象有任何关联。如果原来的对象有所改变,嵌入的对象不受影响。
联接表示在源文档与目标文档之间的一种连接。链接对象保存了来自原文档的信息,并对两文档之间的连接进行维护。当源文档中的信息发生变化时,这种变化将在目标文档中体现出来。
OLE控件
OLE控件目前称为ActiveX控件。ActiveX控件与固有控件相同,可以把它放在表单上,使用户能够或加强同一个应用程序的交互能力。Active控件具有事件,并且可以集成到其他控件中。这些Active控件具有.ocx的扩展名。
OLE容器控件与OLE绑定型控件
OLE容器控件用于创建一个OLE容器控件。OLE容器控件允许向应用程序中加入OLE对象。
OLE绑定型控件用于在表单上创建一个OLE绑定型控件。在表单中,一个OLE绑定型控件允许利用表中的通用字段显示一个OLE对象的内容。
报表(Report)与标签
报表(Report)用于在打印文档中显示或总结数据。定义报表有两个要素:报表的数据源与报表的布局。报表的数据源定义了报表的数据的来源,通常是表、视图、查询、临时表等;报表的布局定义了报表的打印格式。报表的定义可以存储在扩展名为.frx的报表文件中,且每个报表文件还有一个相应的扩展名为.frt的报表备注文件。报表文件指定了报表的数据源、需要打印的文本以及布局信息等。
标签实质上是一种多列布局的特殊报表,具有为匹配特定标签纸(如邮件标签纸)的特殊设置。在设计标签时,可以利用标签向导、标签设计器等设计工具。标签的定义存储在扩展名为.lbx的标签文件中,相应的标签备注文件的扩展名为.lbt。
数据分组(Data Grouping)
数据分组(data grouping)是指在报表中按照指定顺序对成组的数据进行分类汇总。
报表带区(Report Band)
报表带区(report band)是指报表中的一块区域,可以包含文本、来自表字段中的数据、计算值、用户自定义函数以及图片、线条等。
报表的带区说明
菜单(Menu)
菜单(Menu) 应用系统的功能列表,它将整个 系统的主要功能分类列于应用程序窗口顶部的菜单栏中,每个菜单项具有相应的功能或者可以包含下级子菜单。
菜单的类型分为系统菜单和快捷菜单。
快速菜单
基于VFP的主菜单栏,添加用户所需的菜单项所建立的菜单称为快速菜单。
SDI菜单
所谓SDI菜单,是指出现在单文档界面(SDI)窗口中的菜单。
工具栏
在应用程序中,用户经常重复执行莫些任务。这时可以创建相应

的自定义工具栏,以简化用户的操作,加速任务的执行。另外,在应用系统中,若把一些经常需要的操作放在操作界面上的工具栏类中,可在多个表单集中方便的使用,不占用表单空间,且供多个表单调用。
环境规划
环境规划主要考虑以下几个方面的问题:
1、用户及其操作
2、数据库规模
3、单用户和多用户数据环境
4、本地数据和远程数据
交互信息
所谓交互信息,是指应用程序与用户之间的信息交互。
测试与调试
测试与调试应用程序,通常首先单独测试单个组件,然后在测试应用程序中是否有错,以及应用程序的容错及纠错能力。除了测试应用程序的容错或纠错能力以外,还必须测试应用程序的功能是否实现。
容错与纠错能力
所谓容错与纠错能力是指在应用程序运行时,若用户做了非法的操作,如输入非法数据、异常数据或非法的操作键,系统能显示出错信息,而不发生系统崩溃。除了测试应用。
项目管理器
VFP的“项目管理器”是一个重要工具,具有对文件、自由表、数据库、表单、查询和报表等的可视化的组织处理,是应用程序的控制中心和应用程序的组织者。
应用程序的框架
应用程序的框架一般含有以下组件:
1、设置主程序
(1)保存原来环境,设置应用程序环境
(2)确定初始的用户界面
(3)建立事件循环
2、设置主表单
用户可以指定一个程序为主程序,也可以指定一个表单或表单集操作为主程序,把主程序的功能和初始用户界面合二为一。
3、将文件添加到项目文件中
4、排除可修改的文件
连编应用程序
为了对程序中的应用进行校验,保证引用的完整性,同时检查所有的程序组件是否可用,可以对项目进行测试。这是可以对项目进行连编。VFP在进行连编时自动分析文件的引用。连编过程中所产生的错误信息收集在当前目录下的与连编项目同名的扩展名为.err的文件中,编译过程中所产生的错误数目在状态栏上显示。连编文件的扩展名为.pjx。
我们还可以把项目编译成可执行文件,这个文件是一个可独立于VFP环境而运行的Windows应用程序。该可执行文件需要和两个VFP动态连接库(VFP500.dll和VFPxxx.dll)联接。这两个库和应用 程序一起构成VFP所需要的完整的应用环境。VFPxxx.dll是用来指定应用程序开发的地区版本。
Rushmore技术
Rushmore技术是一种数据库访问技术,它使用标准的VFP索引优化对数据的访问。它可以用在任何索引上。
Active Document
Active Document 一种特别类型的OLE可嵌入文档,显示在Active Document宿主程序的整个客户区中,并且与宿主程序合并文档。 Active Document具有完整的结构,并总在现场激

活。
Active Doc基类
Active Doc 基类为Active Document 提供属性、事件和方法程序,并提供与Active Document 宿主程序通信的能力。
Active Doc对象
Active Doc 对象响应调用Active Doc 基类的方法程序。


Active Doc 对象的属性、事件和方法程序
BaseClass 指定Active Doc 对象的基类
ClassLibrary 指定Active Doc 对象的类库
Caption 指定Active Doc 对象的标题
Com ment 指定Active Doc 对象的注释
Parent 指定Active Doc 对象所在的宿主
ContainerReleaseType 指定在宿主释放Active Doc 对象时是否保持运行状态。


数据工作期
数据工作期是对当前动态工作环境的描述。每个数据工作期包括:
表单数据环境中各项的备份。
临时表打开的表、索引及其关系。
事务处理
事务处理类似一层外包装,用于高速缓存对内存或硬盘的数据更新操作,而不直接对数据库进行更新。
死锁(Dead Lock)
用户A访问表A(锁定了表A),然后又访问表B,用户B访问表B(锁定了表B),然后又访问表A ,由于双方都没有释放所占用的表,因此产生不能访问所需要的表的现象称为死锁。
智能感知功能
VFP7为用户提供了自动显示成员列表,自动显示快速信息、自动显示变量植列表、自动列出表的字段名称、自动显示MRU(Most Recently Used,最近使用的)文件列表的功能。这些功能能够自动填写声明、属性、参数,从而减少了程序员需要输入的代码数量,并为用户的操作提供了更大的控制力。
组件管理库
组件管理库是软件对象(例如:类库、表单、按纽等)类型的容器,包含新的VFP7类。可以使用组件管理将组件分成对象、项目、应用程序或其他类。
代码范围分析器
代码范围分析器应用程序提供数种查看数据的方式,这些数据是由代码日志引擎提供的。代码范围分析器包括两部分:
代码日志引擎和多窗口应用程序。
客户/服务器(Client/Server)模型
客户/服务器(Client/Server)是一种应用 程序,它具有本地(客户)用户界面,但访问的是远程服务器上的数据。这种应用程序根据前端和后端产品的能力将工作分布到本地机和服务器上。
动态数据交换(Dynamic Data Exchange)
动态数据交换(DDE)在同一个操作系统下,各个应用程序之间进行实时动态地数据交换。当提供数据的应用程序数据发生变化时,接收数据应用程序的数据也自动地更新。
DDE模式
对于两个已经建立DDE关系的应用程序,可以根据“当数据发生变化时该如何发送?”的角度分为三种模式
1、自动式的链接(Automatic)
服务器的相关项目发生变化时,会主动将更新后的数据传送给客户。
2、通知式的链接(Notify)


当服务器的数据项目发生变化,只是通知客户程序“数据 已经改变”而由客户程序决定要不要更新数据。如果需 要,就会对服务器提出请求,然后服务器才会将最新的数据传送给客户程序。
3、被动式的链接(Manual)
只有在客户程序的请求下,服务器才给它传送数据。
组件对象模型(COM)
组件对象模型(COM)
Windows 对象的二进制标准。为 提供了统一的、面向对象的、可扩充的通信协议。这意味着描述一个对象的可执行代码(. dll 或.exe文件的代码)可以被其他对象执行。

相关主题
文本预览
相关文档 最新文档