第 2 章 自由表的基本操作

78
上上 上上 上2上 上上上上上上上上 2.1 Visual FoxPro 的的的的的 2.2 的的的的的的的的的 2.3 的的的的的的 的的的的

Upload: howard

Post on 22-Jan-2016

131 views

Category:

Documents


0 download

DESCRIPTION

第 2 章 自由表的基本操作. 2.1 Visual FoxPro 的语言基础 2.2 自由表的建立与修改 2.3 自由表的维护 本章要点. 2.1 Visual FoxPro 的语言基础. 2.1.1 数据类型 数据类型一旦被定义,就确定了其存储方式和使用方式。 1 .字符型 字符型数据描述不具有计算能力的文字数据类型。 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 2 章  自由表的基本操作

上一张 结束目录

第 2 章 自由表的基本操作

2.1 Visual FoxPro的语言基础

2.2 自由表的建立与修改

2.3 自由表的维护

本章要点

Page 2: 第 2 章  自由表的基本操作

上一张 结束目录

2.1.1 数据类型数据类型一旦被定义,就确定了其存储方式和使用方式。

1 .字符型

字符型数据描述不具有计算能力的文字数据类型。

字符型数据( Character )是由汉字和英文字符、数字字符、空格及其他专用字符,使用时必须用定界符双引号 (“”) ,单引号(‘ ’ ) 或中括号( [ ] )括起来。这里的单引号、双引号或方括号都是西文的标点符号,称为定界符。

2.1 Visual FoxPro 的语言基础

Page 3: 第 2 章  自由表的基本操作

上一张 结束目录

2 .数值型数值型数据用来表示一个数量的大小,数值型数据通常可细分为数值型,浮

点型,双精度型,整型和货币型五种类型。浮点型数据 (Float) 是数值型数据的一种,与数值型数据完全等价。浮点型

数据只是在存储形式上采取浮点格式。双精度型数据 (Double) 是更高精度的数值型数据。它只用于数据表中的字

段类型的定义,并采用固定长度浮点格式存储。 整型数据( Integer )是不包含小数点部分的数值型数据。它只用于数据表

中的字段类型的定义。整型数据以二进制形式存储。货币型( Currency )数据用来表示货币值,其书写格式与数值型数据类似

,但要加上一个前置的符号 ($) 。货币数据在存储和计算时,采用 4 位小数。

Page 4: 第 2 章  自由表的基本操作

上一张 结束目录

3 .日期型 日期型数据( Date )是用于表示日期的数据,用默认格式 {mm/dd/yyyy}

来表示。其中 mm 代表月, dd 代表日, yyyy 代表年,存储长度固定为 8 位。4 .日期时间型日期时间型数据( DateTime )是描述日期和时间的数据,其默认格式为 {

mm/dd/yyyy hh:mm:ss} 。其中 yyyy 代表年,前两个 mm 代表月, dd 代表日, hh 代表小时,后两

个 mm 代表分钟, ss 代表秒,存储长度固定为 8 位。5 .逻辑型逻辑型数据( Logic )是描述客观事物真假的数据,用于表示逻辑判断结果

。逻辑型数据只有真( .T. )和假( .F. )两个值,存储长度固定为 1 位。6 .备注型备注型数据( Memo )用于存放较长的字符型数据类型,可以把它看成是

字符型数据的特殊形式。7 .通用型通用型数据 (General) 是用于存储 OLE 对象的数据。通用型数据中

的 OLE 对象可以是电子表格、文档、图片等。它只用于数据表中的字段类型的定义。

Page 5: 第 2 章  自由表的基本操作

上一张 结束目录

2.1.2 数据存储数据输入、输出是通过数据的存储设备完成的。

数据可以存入到字段、记录和对象中。我们把这些

供数据存储的常量、变量、数组、字段、记录和对

象称为数据存储容器。常量、内存变量、函数以及

表达式的类型包括字符型、数值型、货币型、逻辑

型、日期型和日期时间型等 6 种。

Page 6: 第 2 章  自由表的基本操作

上一张 结束目录

1 .常 量在数据处理过程中其值不发生变化的量叫常量。

(1) 数值型常量数值型常量也就是常数,用来表示一个数量的大小,由数字 0~9 、小数点和正负号构

成。例如: 112 、 3.145、 -6.22 。

(2) 货币型常量货币型常量用来表示货币值,其书写格式与数值型常量类似,但要加上一个前置的符

号 ($) 。例如,常量 $123.456789 。

(3) 字符型常量字符型常量也称为字符串,许多常量都有定界符。

注意,不包含任何字符的字符串 (" ") 叫空串。空串与包含空格的字符串 (" ") 不同。

Page 7: 第 2 章  自由表的基本操作

上一张 结束目录

(4) 日期型常量日期型常量的定界符是一对花括号。

① 传统的日期格式

系统默认的日期型数据为美国日期格式“ mm/ dd/ yy”( 月/日/年 ) ,如 {09/01/03} 、 {09/01/2003} 等。

语句 SET DATE TO ymd 把日期设置成 ( 年/月/日 ) 格式,命令 SET CENTURY on 把年份设置成 4 位数字格式。

② 严格的日期格式

严格的日期格式为 {^yyyy-mm-dd} ,它不受SET DATE 等语句设置的影响。

严格的日期格式可以在任何情况下使用,而传统的日期格式只能在执行如下命令:

SET STRICTDATE TO 0

后才可以使用。

SET STRICTDATE TO 1

把系统设置为严格的日期格式。另外,命令 SET MARK TO 是设定日期分隔符。

Page 8: 第 2 章  自由表的基本操作

上一张 结束目录

(5) 日期时间型常量日期时间型常量包括日期和时间两部分内容: {<日期 >,<时间 >} 。

<日期 >部分与日期型常量相似,也有传统的和严格的两种格式。 <时间 >部分的格式为: [hh[:mm[:ss]][a | p]] 。

SET MARK TO

? {^2003-09-01 11:10:10}, {^2003-09-01 15:10:10}

(6) 逻辑型常量逻辑型数据只有逻辑真和逻辑假两个值。逻辑真的常量表示形式有:

.T. , .t. , .Y. 和 .y. 。逻辑假的常量表示形式有: .F. , .f. , .N. 和 .n.。

Page 9: 第 2 章  自由表的基本操作

上一张 结束目录

2 .变 量变量是在命令操作、程序运行过程中其值可以变化的量

。变量分为字段变量和内存变量两大类。

内存变量: 1. 以字母、汉字、下划线开头; 2. 由字母、汉字、数字、下划线组成; 3. 至多 128 个字符; 4. 不可与系统保留字同名。

字段变量: 1. 以字母、汉字开头; 2. 由字母、汉字、数字、下划线组成; 3. 至多 10 个字符; 4. 不可与系统保留字同名。

Page 10: 第 2 章  自由表的基本操作

上一张 结束目录

内存变量又分为简单内存变量和系统内存变量,系统内存变

量是 Visual FoxPro系统运行时自动建立、使用的,其名字都是

以下划线开头,例如 _dos , _pwait 等。

(1) 简单内存变量每一个变量都有一个名字,可以通过变量名访问变量。简单

内存变量赋值不必事先定义,例如:

X=10

Page 11: 第 2 章  自由表的基本操作

上一张 结束目录

(2) 数组 数组是内存中连续的一片存储区域,是按一定顺序排列的一组内存变量,

数组中的各个变量称为数组元素,每个数组元素可通过数组名及相应的下标来访问。每个数组元素相当于一个简单变量,可以给各个元素分别赋值。在 Visual FoxPro 中,一个数组中各个元素的数据类型可以不同。 创建数组的两种命令格式为:DIMENSION <数组名 > ( < 下标上限 1> [, < 下标上限 2> ] [,……] )DECLARE <数组名 > ( < 下标上限 1> [, < 下标上限 2> ] [,……] )例如:DECLARE aa(5),bb(2,3)

Page 12: 第 2 章  自由表的基本操作

上一张 结束目录

3 .内存变量常用命令(1) 内存变量的赋值格式 1:STORE<表达式> TO<变量名表>格式2:<内存变量名>=<表达式>功能:格式 1 计算表达式的值并赋给一个或多个

内存变量;格式 2 只能给一个变量赋值。

Page 13: 第 2 章  自由表的基本操作

上一张 结束目录

(2) 内存变量的显示格式 1: LIST MEMORY [LIKE<通配符 >] [TO PRINTER ︳ TO FILE

<文件名 > ]

格式 2: DISPLAY MEMORY [LIKE<通配符 >] [TO PRINTER ︳ TO FILE <文件名 > ]

(3) 内存变量的清除格式 1: CLEAR MEMORY

格式 2:RELEASE < 内存变量名表 >

格式 3:RELEASE ALL [EXTENDED]

格式 4:RELEASE ALL [LIKE<通配符 > ︳ EXCEPT<通配符 >]

Page 14: 第 2 章  自由表的基本操作

上一张 结束目录

(4) 内存变量的保存格式: SAVE TO <文件名 > ALL [LIKE<通配符 > ︳ EX

CEPT<通配符 >]功能:将指定范围的内存变量保存在内存变量文件中,

内存变量文件的扩展名为 .men 。

(5) 内存变量的恢复格式:RESTORE FROM <文件名 > [ADDITIVE]功能:把内存变量文件中的变量送回内存,不选ADDITI

VE则送回之前先清除内存中的内存变量。

Page 15: 第 2 章  自由表的基本操作

上一张 结束目录

4 .字段变量 字段变量就是指数据表中已定义的任意一个字段

。字段变量的数据类型与该字段定义的类型一致。

字段变量的类型有数值型、浮点型、整型、双精度型、字符型、逻辑型、日期型、时间日期型、备注型和通用型等。

Page 16: 第 2 章  自由表的基本操作

上一张 结束目录

2.1.3 函数函数名(自变量表)自变量表可以是一个变量或多个自变量,

也可以为空,即:函数名 () ,此时函数名后面的一对圆括号不能省略。函数按功能可划分为:数学函数、字符串

函数、日期和时间函数、类型转换函数、测试函数。

Page 17: 第 2 章  自由表的基本操作

上一张 结束目录

1 .数学函数 ( 数值函数 ) (1)求绝对值函数 ABS格式:ABS( <数值表达式 > ) (2)求整函数 INT格式: INT( <数值表达式 > ) (3)四舍五入函数 ROUND格式:ROUND( <数值表达式 > , < 保留小数位 > ) (4) 指数函数 EXP 、自然对数函数 LOG 、平方根函数 SQRT 、格式: EXP| LOG | SQRT ( <数值表达式 > ) (5) 取模 (求余数 )函数 MOD格式:MOD( <数值表达式 1> , <数值表达式 2> )功能:取 <数值表达式 1> 除以 <数值表达式 2> 的余数。 (6)求最大值 MAX、最小值 MIN格式:MAX| MIN ( <表达式 1> , <表达式 2>, … , <表达式 n>)

Page 18: 第 2 章  自由表的基本操作

上一张 结束目录

2 .字符串函数(1) 判子字符串函数 AT

格式:AT( <字符表达式 1> , <字符表达式 2> )

功能:求 <字符表达式 1> 在 <字符表达式 2> 的起始位置数值。

说明:若 <字符表达式 2> 中不包含 <字符表达式 1> ,则函数值为零

;若 <字符表达式 2> 的值含有两个以上的 <字符表达式 1> 的值

,则函数给出第一个值的位置。大小写字母在检索中视为不同。

Page 19: 第 2 章  自由表的基本操作

上一张 结束目录

(2) 取子串函数 SUBSTR格式: SUBSTR (<字符表达式 > , <起始位置 > [ , <长度 > ] )功能:对 <字符表达式 > 从给定的 <起始位置 > 开始截取指定长

度的字符,生成一个新的字符串;说明:若无 <长度 >或 <长度 >大于后面剩余的字符个数,则截至末尾。若 <起始位置 > 大于字符串表达式长度,则输出空串。 (3) 取左子串函数 LEFT格式: LEFT ( <字符表达式 > , <数值表达式 > )功能: LEFT 从 <字符表达式 > 左边截取由 <数值表达式 > 的值

指定的字符,生成一个新的字符串。 (4) 取右子串函数 RIGHT格式:RIGHT ( <字符表达式 > , <数值表达式 > )

Page 20: 第 2 章  自由表的基本操作

上一张 结束目录

(5) 宏代换函数 &格式:&<字符型内存变量>[ .]

功能:替换出 <字符型内存变量 >的值。即将 <字符型内存变量 >值的定界符去掉,使其可能代表一个变量名、文件名、命令、表达式等。

说明:在表达式中使用该函数时,如果函数中的字符型内存变量名与其后面的字符无明显分界时,应使用圆点将它们隔开。例如:

A=" 北京 "

B="中国 "

? "&A. 是 &B.首都 "

主屏幕显示: 北京是中国首都

Page 21: 第 2 章  自由表的基本操作

上一张 结束目录

(7) 删除首部和尾部空格的函数 LTRIM , TRIM(RTRIM) 和 ALLTRIM

格式: LTRIM|TRIM |RTRIM |ALLTRIM ( <字符表达式 > )

功能: LTRIM 是删除字符串首部的空格, TRIM 和 RTRIM 是删除字符串尾部的空格, ALLTRIM则可删

除字符串首部和尾部的空格。

(8) 构造空格函数 SPACE

格式:SPACE( <数值表达式 > )

功能:产生由 <数值表达式 > 的值决定的空格数。

(9) 生成重复字符串函数 REPLICATER

格式:REPLICATER( <字符表达式 > , <数值表达式 > )

功能:把 <字符表达式 > 的值(字符串)重复由 <数值表达式 > 的值指定的次数,生成新的字符串。

Page 22: 第 2 章  自由表的基本操作

上一张 结束目录

(10) 大小写字母转换函数 LOWER|UPPER格式: LOWER|UPPER ( <字符表达式 > )

功能: LOWER把 <字符表达式 > 中的大写字母转换为小写字母;UPPER把 <字符表达式 > 中的小写字母转换为大写字母。

(11) 字符串替换函数 STUFF格式:STUFF(<字符表达式 1>,<起始位置 >,<字符个数 >,<字符表达式 2>)

功能:从指定位置开始,用 <字符表达式 2> 替换 <字符表达式 1>中 <字符个数 > 指定的字符串。

说明:

<字符表达式 2>中的字符个数与 <字符表达式 1>中的字符个数可以不等。

如果 <字符个数 >为 0 ,则插入 <字符表达式 2>。

如果 <字符表达式 2>为空字符串,则删除 <字符表达式 1>中指定字符。

Page 23: 第 2 章  自由表的基本操作

上一张 结束目录

3 .日期和时间函数(1) 系统日期和时间函数 DATE| TIME|DATeTIME格式:DATE ()TIME()DATETIME( )功能: DATE()返回当前系统日期,函数值为日期型; TIME() 以 24 小时制格式返回

当前系统时间,函数值为字符型; DATeTIME( )返回当前系统日期,函数值为日期型。

(2) 年、月、日函数 YEAR|MONTH|DAY格式: YEAR|MONTH|DAY( <日期表达式 > )功能:从 <日期表达式 > 中求出年份、月份、日份的数值。

(3) 星期函数 DOW|CDOW格式 1: DOW ( <日期表达式 > )格式 2: CDOW ( <日期表达式 > )功能:格式 1给出 <日期表达式 > 指定的日期是一星期的第几天。 1 表示星期日,

2 表示星期一,……, 7表示星期六;格式 2给出星期几的英文名称。

Page 24: 第 2 章  自由表的基本操作

上一张 结束目录

4 .类型转换函数(1) 字符转换为数值函数 VAL格式: VAL( <字符表达式 > )功能:将字符型数据转换为数值型数据。说明:若 <字符表达式 >由数字字符和小数点组成,则转换成

相应的数值,但只保留两位小数,其余小数四舍五入。若 <字符表达式 >由非数字字符打头,则转换为 0.00 。若 <字符表达式 >由数字字符打头,且混有非数字字符

时,则转换到第一个非数字字符。例如:? VAL("1234.5678") ,VAL("FoxPro") , VAL("1234FOX.5678")主屏幕显示: 1234.57 0.00 1234.00

Page 25: 第 2 章  自由表的基本操作

上一张 结束目录

(2) 数值转换为字符函数 STR格式: STR( <数值表达式 > [ , <长度 > [ , <小数位数 > ]] )功能 : 把 <数值表达式 > 的运算结果转换为指定长度的字符串。说明:<长度 > 应包括小数点在内,不指定长度时,系统默认整数位 10 位

。若指定 <长度 >小于 <数值表达式 >整数位数,则用一串 "*"号表

示数据溢出;若 <长度 >为 0 ,则返回空字符串。若省略 <小数位 >,则只转换整数位;若指定小数位,则对下一位

四舍五入。例如: ?STR(1234.5678,7,2) ,STR(1234.5678,4) ,STR(1234.5678) 主屏幕显示: 1234.57 1235 1234

Page 26: 第 2 章  自由表的基本操作

上一张 结束目录

(3) 字符转换为日期函数 CTOD格式: CTOD( <字符表达式 > )功能:将符合 yy/mm/dd 、 mm/dd/yy 日期格式的字符串转换为相应日期

(4) 日期转换为字符函数 DTOC格式: DTOC( <日期表达式 > [ ,1] )功能:将 <日期表达式 > 转换为相应的字符串。说明:不选用 1 时,按mm/dd/yy 格式转换;选用, 1 时,按 yyyymmdd

格式转换。

(5) ASCII 码值转换为字符函数 CHR格式: CHR( <数值表达式 > )功能:将 <数值表达式 > 所表示的 ASCII码值转换为相应的字符。

(6) 字符转换成 ASCII 码值函数 ASC格式:ASC( <字符表达式 > )功能:返回 <字符表达式 > 最左边的一个字符的 ASCII码值。

Page 27: 第 2 章  自由表的基本操作

上一张 结束目录

5 .测试函数与数据表有关的测试函数,见 “ 2.3 自由表的维护”。

(1) 值域测试函数 BETWEEN

格式:BETWEEN(<表达式 1>,<表达式 2>,<表达式 3>)

功能:判断一个表达式的值是否介于另外两个表达式的值之间。当 <表达式 1>值大于等于 <表达式 2> 且小于等于 <表达式 3>时,函数值为逻辑真 (.T.) ,否则函数只为逻辑假 (.F.) 。

Page 28: 第 2 章  自由表的基本操作

上一张 结束目录

(2) 数据类型测试函数 VARTYPE格式: VARTYPE(<表达式 >)功能:测试 <表达式 >的类型,返回一个大写字母,函数

值为字符型。若 <表达式 >是一个数组,则根据第一个数组元素的类型返回字符串。

(3) 条件测试函数 IIF格式: IIF ( <逻辑表达式 >,<表达式 1>,<表达式 2>)功能:测试 <逻辑表达式 >的值,若为逻辑真 .T. ,函数

返回 <表达式 1>的值,若为逻辑假 .F. ,函数返回 <表达式2>的值。 <表达式 1>和 <表达式 2>的类型不要求相同。

Page 29: 第 2 章  自由表的基本操作

上一张 结束目录

2.1.4 表达式表达式是由常量、变量和函数等通过特定

的运算符连接起来的式子。1.数值表达式

Page 30: 第 2 章  自由表的基本操作

上一张 结束目录

2 .字符表达式字符表达式由字符串运算符将字符型数据连接起

来形成,其运算结果仍然是字符型数据。字符串运算符有以下两个,它们的优先级相同:

+:前后两个字符串首尾连接形成一个新的字符串。

-:连接前后两个字符串,并将前字符串的尾部空格移到合并后的新字符串尾部。

Page 31: 第 2 章  自由表的基本操作

上一张 结束目录

3.日期时间表达式日期时间表达式中可以使用的运算符也有+和-两个。

Page 32: 第 2 章  自由表的基本操作

上一张 结束目录

4 .关系表达式关系表达式通常也称为比较表达式,其运算结果为逻辑型常量。关系

成立时,表达式的结果为 .T. ,反之,表达式结果为 .F. 。格式为:<表达式 1><关系运算符 ><表达式 2>

运算符 == 和 $仅适用于字符型数据。其他运算符适用于任何类型的数据。

SET EXACT ON/OFF

【工具】-【选项】菜单

Page 33: 第 2 章  自由表的基本操作

上一张 结束目录

5 .逻辑表达式

逻辑表达式由逻辑运算符将逻辑型数据连接起来而形成

,其运算结果仍然是逻辑型数据。逻辑运算符有三个: .NO

T. 或!(逻辑非)、 .AND. (逻辑与)以及 .OR. (逻辑或

)。也可以省略两端的点(省略时逻辑运算符两边必须有空

格),写成 NOT 、 AND 、 OR。

优先级顺序为:NOT , AND , OR。

Page 34: 第 2 章  自由表的基本操作

上一张 结束目录

6. 运算符优先级在每一类运算符中,各个运算符有一定的运算优先级

。而不同类型的运算也可能出现在同一个表达式中,这时

它们的运算优先级顺序为:先执行算术运算符,字符串运

算符和日期时间运算符,其次执行关系运算符,最后执行

逻辑运算符。

Page 35: 第 2 章  自由表的基本操作

上一张 结束目录

2.2 自由表的建立与修改数据表简称表,在 Visual FoxPro系统中

,把包含在数据库中的表称为数据库表,并把不包含在数据库而独立存在的表称为自由表。自由表可以添加在数据库中而成为数据库表,数据库表也可以从数据库中移出而成为自由表。

Page 36: 第 2 章  自由表的基本操作

上一张 结束目录

2.2.1 表结构的建立1.设计表结构(1) 字段名(2) 字段类型和宽度

Xsqk.dbf

Page 37: 第 2 章  自由表的基本操作

上一张 结束目录

Page 38: 第 2 章  自由表的基本操作

上一张 结束目录

cj.dbf Xk.dbf

Page 39: 第 2 章  自由表的基本操作

上一张 结束目录

2 .利用表设计器创建表结构用表设计器定义表结构的操作方法常有下面三种。

(1) 使用菜单方法从 Visual FoxPro 系统的主菜单开始,打开“文件”菜单,选择“新

建”

(2) 使用命令的方法 建立数据表的命令是:

CREATE [ <表文件名 > | [ .dbf ]]例如要建立数据表 xsqk.dbf时可使用命令:CREATE XSQK命令执行后弹出表设计器,其它操作与 “使用菜单方法”相同。

(3) 在项目管理器中创建

Page 40: 第 2 章  自由表的基本操作

上一张 结束目录

2.2.2 表数据的输入 (1) 使用 APPEND 命令的方法APPEND命令是在表的尾部增加记录,它有两种格式:APPEND 或 APPEND BLANK。执行一次APPEND BLANK命令后在表中添加一条空记录;执行 APPEND命令需要立刻交互输入新的记录值,一次可以连续输

入多条新的记录。然后按 <CTRL>+<W>或单击窗口的“关闭”按钮结束并保存输入的新记录;按 <ESC>结束并不保存输入的新记录。

(2) 使用菜单方法可选【显示】-【浏览···】菜单,出现 “浏览”窗口,再执

行【显示】-【追加方式】菜单或执行【表】-【追加记录】菜单(也可以按 <Ctrl>+<Y>键),即在浏览器尾部会增加一条空白记录。

Page 41: 第 2 章  自由表的基本操作

上一张 结束目录

2.2.3 备注字段和通用型字段数据的输入和修改

备注型数据显示为“ Memo” 或“ memo” ,其中“

Memo” 表示对应的记录的备注字段已经输入了数据,而“

memo” 表示该字段中没有备注内容。要为某记录的备注

字段输入数据或修改其中的内容,可双击该记录的备注字段

,进入备注字段的编辑窗口,编辑完后按 <CTRL>+<W>或

单击窗口的“关闭”按钮结束并保存输入的新内容;按 <ES

C>结束并不保存输入的新内容。

Page 42: 第 2 章  自由表的基本操作

上一张 结束目录

2.2.4 表结构的修改

(1) 使用菜单方法执行【显示】-【表设计器】菜单命令

(2) 使用命令方法打开表设计器的命令是:MODIFY STRUCTURE

Page 43: 第 2 章  自由表的基本操作

上一张 结束目录

2.3 自由表的维护

2.3.1 VISUAL FOXPRO 命令结构及常用子句VFP命令格式: < 命令动词 > [< 功能子句 1>] [< 功能子句 2>] [...] && 注释部分

例如显示命令 LIST 的格式: LIST [< 范围 >] [[<FIELDS>] <字段名表达式表 >] [FOR< 条件 >] [WHILE< 条件 >] [OFF] [TO <设备名 |文件名 |内存变量名 >] && 注释

Page 44: 第 2 章  自由表的基本操作

上一张 结束目录

1 .命令动词表示命令执行的操作,是命令中必不可少的部分。2 .语句体语句体由一系列短语构成,可使用的常用子句(短语)如下所示:(1) FIELDS <字段名表 > 用于指定操作的字段, <字段名表 >中有多个字段时,字段名之间用

逗号分隔。 例如命令:use xsqklist fields 姓名 ,身高 && 显示 xsqk.dbf表的“姓名”和“身高”两

列数据(2) FOR < 条件 >对满足条件的所有记录进行操作。例如命令:use xsqklist for 身高 >1.7 && 显示 xsqk.dbf表中身高大于 1.7米的所有记录(3) WHILE < 条件 >对满足条件的记录进行操作。从表中的当前正在使用的记录开始向下

顺序判断,当遇到第一个不满足条件的记录时,停止命令执行,而不管其后是否还有满足条件的记录。

Page 45: 第 2 章  自由表的基本操作

上一张 结束目录

(4) < 范围 >表示记录的执行范围,可以是 ALL , NEXT <n> , RECCORD <n>, RES

T几项中之一,其中的 <n>是数值型表达式。系统对表中的记录是逐条进行处理的。 Visual FoxPro 为每一个打开的表设置了一个内部使用的记录指针,指向正在被操作的记录,该记录称为当前记录。记录指针的作用是标识表的当前记录。

ALL:表示全部记录;

NEXT <n> :表示从当前记录开始的以下 n条记录;

RECORD <n> :表示第 n 号记录;

REST:表示从当前记录到最后一条记录。

(5) TO <设备名 |文件名 |内存变量名 >

表示操作结果的输出去向。

Page 46: 第 2 章  自由表的基本操作

上一张 结束目录

3 .命令书写格式说明在书写命令格式时,还用到一些符号,这些符号

只是在书写时使用,实际操作时并不输入。这些符号以及它们所表示的意义如下: < > :表示其中内容为必选项; [ ]:表示其中内容为可选项; | :表示其两侧项目只能任选一项; … :表示同类项的多次重复。

Page 47: 第 2 章  自由表的基本操作

上一张 结束目录

4 .命令的书写与使用规则在输入命令时,应注意下面规则:每条命令以命令动词开始,以回车键结束,命令中各短语的顺序是

任意的。命令动词、短语中的英文单词及函数名均可缩写为前四个字符,大

小写可混用。命令动词、语句体及其各短语之间均以空格相隔。一行只能写一个命令,不能将两个命令写在同一行。命令一行写不下时,可以由系统自然换行或在行尾加分号(;),

回车强制换行。命令行的长度小于或等于 2048 个字符。

Page 48: 第 2 章  自由表的基本操作

上一张 结束目录

2.3.2 表的打开与关闭(1) 表的打开可以通过选【文件】-【打开】菜单(或工具栏上的“

打开”按钮)打开表,也可以用以下命令打开表:Use [ <表名 >.dbf ] (2) 表的关闭常常使用下面命令关闭表:use && 关闭当前使用的表close tables && 关闭当前数据库中所有打开的表close tables all && 关闭所有打开的表close all && 关闭所有打开的表、程序文件及表单等clear all && 关闭所有的表、程序文件及表单等,清除内存变量

Page 49: 第 2 章  自由表的基本操作

上一张 结束目录

2.3.3 表数据的浏览和修改1 .同时进行数据浏览和修改的操作打开浏览器的方法有多种,常用的方法有:首先打开要操作的表,再执行菜单【显示】-【浏览···】。在项目管理器中选择要操作的表,然后单击“浏览”命令按钮。在命令方式下,首先用 USE命令打开要操作的表,然后键入 BROWSE命令。 BROWSE命令的格式如下:Browse [< 范围 >] [Fields <字段名表 >] [For < 条件表达式 >] [<NOAPPEND>] [<NOMODIFY>] 交互式地对当前表记录进行编辑的命令:CHANGE | EDIT [< 范围 >] [Fields <字段名表 >] [For < 条件表达式 >]

Page 50: 第 2 章  自由表的基本操作

上一张 结束目录

2. 数据的选择显示数据的显示常常使用 LIST 和 DISPLAY 命令,命

令格式如下:

List | Display [< 范围 >] [[Fields] <字段名表达式表 >] [For < 条

件表达式 >] [WHILE < 条件表达式 >] [To Printer] [To File <文件名 >]

[off]

Page 51: 第 2 章  自由表的基本操作

上一张 结束目录

2.3.4 记录指针的移动对于一个打开的表文件来说,系统对表中的记录是逐条

进行处理的,表刚打开时指针是指向表中最上面的记录的。

1 .命令方法移动指针命令方法移动指针需要了解表文件的逻辑结构,表最上

面的记录是首记录,记为 TOP;最下面的记录是尾记录,记为 BOTTOM;在第一个记录之前有一个文件起始标识,称为文件首( Beginning of File ,简称 BOF);在最后一个记录的后面有一个文件结束标识,称为文件尾( End of File,简称 EOF) 。移动指针就是要把指针定位在某个记录上。

Page 52: 第 2 章  自由表的基本操作

上一张 结束目录

Page 53: 第 2 章  自由表的基本操作

上一张 结束目录

(1) GO 命令GO 命令是绝对定位命令,它将记录指针定位于指定位置。 GO命

令有如下两种格式:GO [TO] TOP | BOTTOM [GO[TO]] <数值表达式 > GO TOP命令把指针定位在首记录; GO BOTTOM命令把指针定位

在末记录;

(2) SKIP命令SKIP命令是相对定位命令,是相对于当前记录进行定位的命令。命令格式: SKIP [<数值表达式 >]<数值表达式 >的值取正或负的整数,表示指针从当前记录开始移

动多少个记录。 <数值表达式 >的值大于零时指针往文件尾移动,小于零时指针往文件头移动;当 <数值表达式 >缺省时表示 1 。

Page 54: 第 2 章  自由表的基本操作

上一张 结束目录

2 .菜单方法移动指针

打开“浏览”窗口后,选择【表】-【转

到记录】菜单

Page 55: 第 2 章  自由表的基本操作

上一张 结束目录

3 .与指针及表相关的测试函数 (1) 文件结束测试函数 EOF格式: EOF([ <数值表达式 > ]│ <表别名 >])功能:测试 <数值表达式 > 指定工作区中表文件记录指

针是否指向文件结束位置(表文件尾),表文件尾是指最后一条记录得后面位置。若指针指向结束位置,函数值为逻辑真( .T. ),否则函数值为假( .F. )。

(2) 文件起始测试函数 BOF格式:BOF([ <数值表达式 > ]│ <表别名 >])功能:测试 <数值表达式 > 指定的工作区中表文件记录

指针是否指向起始位置,表文件起始位置在首记录的前面,也称为文件头。若指针指向起始位置,函数值为逻辑真( .T. ),否则为假( .F. )。

Page 56: 第 2 章  自由表的基本操作

上一张 结束目录

(3) 记录号测试函数 RECNO格式:RECNO([<数值表达式 >│<表别名>] )

功能:给出 <数值表达式 > 指定的工作区中打开的数据表的当前记录号。

(4) 记录总数测试函数 RECCOUNT

格式:RECCOUNT([<数值表达式 >| <表别名>] )

功能:测试<数值表达式 > 指定的工作区中数据表的记录

个数。

Page 57: 第 2 章  自由表的基本操作

上一张 结束目录

(5) 文件测试函数 FILE格式: FILE( <文件名 > )功能:测试 <字符表达式 > 指定的磁盘文件是否存在,

若存在,函数值为逻辑真( .T. ),否则函数值为假 (.F.) 。例如:?FILE('XSQK.DBF')

(6) 记录大小测试函数 RECSIZE格式:RECSIZE([ <数值表达式 >| <表别名 >] )功能:测试 <数值表达式 > 指定的工作区中数据表记录

的长度。

Page 58: 第 2 章  自由表的基本操作

上一张 结束目录

(7) 数据类型测试函数 TYPE格式: TYPE (<表达式 >)

功能:测试 <表达式 >的数据类型。

(8) 检索测试函数 FOUND格式: FOUND ( )

功能:测试执行 LOCATE 、 CONTINUE 、 SEEK和 FIND 等定位命令(见第三章)的定位是否成功,定位成功则 FOUND ( ) 的函数值为 .T. ,否则为 .F. 。

Page 59: 第 2 章  自由表的基本操作

上一张 结束目录

(9) 记录删除测试函数 DELETE格式: DELETED ( [<表的别名 >∣< 工作区号 >] )

功能:测试指定的表,或在指定工作区中所打开的表,记录指针所指的当前

记录是否有删除标记“ *” 。若有删除标记,函数值为真,否则为假。若缺省自

变量,则测试当前工作区中所打开的表。

(10) 表文件名测试函数 DBF格式: DBF ( [<表的别名 >∣< 工作区号 >] )

功能:测试指定的表,或在指定工作区中所打开的表在磁盘的位置。若缺省

自变量,则测试当前工作区中所打开的表。

Page 60: 第 2 章  自由表的基本操作

上一张 结束目录

2.3.5 表与表结构的复制

1 .结构与数据的同时复制 COPY TO <表文件 > [< 范围 >] [FIELDS <字段

名表 >] [FOR | WHILE < 条件 >]功能:将满足条件的记录按指定的结构复制到新的表文件。

说明:若不指定条件、范围和字段表,则按原结构复制所有记录;<字段名表 >的字段和排列顺序决定了新表的字段和排列顺序; <范围>缺省值为 ALL;当被复制的表有对应的 .fpt 文件时,对应的 .fpt 文件会同时被复制。复制时被复制的表必须是打开的。

Page 61: 第 2 章  自由表的基本操作

上一张 结束目录

2 .只复制表文件结构COPY STRUCTURE TO <文件名 > [FIELDS <

字段名表 >] 功能:按指定的字段表复制表结构到一个新文件

,若不指定字段表,则复制与当前表相同的结构。说明:复制时被复制的表必须是打开的;当被复

制的表有对应的 .fpt 文件时,对应的 .fpt 文件会同时被复制。

Page 62: 第 2 章  自由表的基本操作

上一张 结束目录

3 .只复制记录数据COPY TO <文本文件名 > [< 范围 >] [FIEL<字段名表 >]

[FOR | WHILE < 条件 >] SDF | DELIMITED

功能:按指定格式将表文件的记录复制到文本文件 (.TXT) ,若省略范围、条件和字段表,则复制所有记录值。

说明: <范围 >缺省值为 ALL;复制时被复制的表必须是打开的。 SDF 为标准数据格式, DELIMITED 为限定符格式。

Page 63: 第 2 章  自由表的基本操作

上一张 结束目录

4 .复制任何类型的文件COPY FILE <源文件 > TO <目的文件 >

说明: <源文件 > 可以是任何类型, <源文件 > 和 <目的文件 > 的扩展名不能省去;源表文件须是关闭的;当被复制的表有对应的 .fpt文件时,对应的 .fpt 文件不会同时被复制,需要用另外一条命令进行复制。

5 .记录数据复制生成数组COPY TO ARRAY 数组名 [< 范围 >] [FIELD <字段名表 >] [FOR | W

HILE < 条件 >]

功能:记录数据传送到二维数组,每个记录对应数组的一行。

Page 64: 第 2 章  自由表的基本操作

上一张 结束目录

6 .复制生成排序表文件命令格式:

SORT TO < 排序文件 > ON <字段 1>[/A | /D] [/C] [,字段 2][ /A | /D] [/C] .... [< 范围 >] [FIELDS<字段表 >] [FOR|WHILE < 条件 >]

功能:按指定的关键字,重新排列记录顺序组成新文件 (排序文件 ),原文件不变。

说明:排序文件以关键字段值为序,从左到右依次序为第一,第二, ... ,顺序; /D 表示降序,缺省为升序; [/C] 不区分大小写字母;只允许 C , N, D , L四种类型作排序关键字段;若缺省范围和条件,则对全部记录排序;若不指定字段表,则排序文件与原文件结构相同。

Page 65: 第 2 章  自由表的基本操作

上一张 结束目录

2.3.6 记录的插入与追加1 . APEND 命令2 . APPEND FROM 命令格式 1 :APPEND FROM 表文件名 [FIELDS < 字段名表 >] [FOR | WHILE <条件 >]不选 [FIELDS < 字段名表 >] 时,源表中所有字段的数据都添加到当前表,否

则只添加 < 字段名表 >中出现的字段;不选 [FOR | WHILE < 条件 >] 时,源表中所有的记录都添加到当前表,否则只添加源表中满足 < 条件 >的记录。

格式 2 :APPEND FROM 文本文件 SDF | DELIMITED [FIELD <字段名表 >] [FOR |

WHILE <条件 >]文本文件为标准格式或限定格式文件,标准格式选SDF ,否则选 DELIMITED

。格式 3 :APPEND FROM ARRAY 数组名 [FIELD <字段名表 >] [FOR | WHILE <条件

>]

Page 66: 第 2 章  自由表的基本操作

上一张 结束目录

3 . INSERT 命令INSERT命令可以在表的任意位置插入新的记录,它的命

令格式是:INSERT [BEFORE] [BLANK]如果不指定 BEFORE则在当前记录之后插入一条新记录

,否则在当前记录之前插入一条新记录。如果不指定 BLANK则出现类似执行APPEND命令时出

现的界面,并以交互方式输入记录的值。否则在当前记录之后(或之前)插入一条空白纪录。

Page 67: 第 2 章  自由表的基本操作

上一张 结束目录

2.3.7 记录的删除与恢复Visual FoxPro 的记录删除分为逻辑删除和物理删除。逻辑删除就是

给记录打上删除标记;物理删除就是把打上删除标记的记录从数据表中彻底删除,或把表中的所有记录全部彻底删除而只保留表结构。记录的恢复就是把逻辑删除标记去掉。

1 .记录的逻辑删除(1) 菜单方法与鼠标单击方法

首先打开“浏览”窗口,然后从“表”菜单中选择“删除记录”

(2) 逻辑删除命令

逻辑删除或置删除标记的命令是 DELETE ,常用格式如下:

DELETE [< 范围 >] [FOR | WHILE < 条件 >]

Page 68: 第 2 章  自由表的基本操作

上一张 结束目录

2 .记录的恢复 (1) 菜单方法与鼠标单击方法

首先打开“浏览”窗口,然后从“表”菜单中选择“恢复记录”。

恢复记录也可以在“浏览”窗口中单击记录左边删除标记区的删除标记。

(2) 恢复命令

恢复逻辑删除记录的命令是 RECALL ,常用格式如下:

RECALL [< 范围 >] [FOR|WHILE< 条件 >]

如果不用 FOR短语指定逻辑条件,则只恢复当前记录。

Page 69: 第 2 章  自由表的基本操作

上一张 结束目录

3 .物理删除有逻辑删除标记的记录

PACK

4 .物理删除表中的全部记录

ZAP

Page 70: 第 2 章  自由表的基本操作

上一张 结束目录

2.3.8 表数据的替换

非交互式的替换命令REPLACE 的 格式为:

REPLACE 字段 1 WITH <表达式 1> [ADDITIVE] [,字段 2 WITH<

表达式 2> [ADDITIVE] ...] [FOR | WHILE < 条件 >] [范围 ]

功能:用表达式的值成批替换满足条件的记录中指定字段的值。

说明:若无范围和条件,则只替换当前记录;表达式值的类型应与

对应的字段类型一致; [ADDITIVE] 子句只用于备注型字段,表示在原

来备注内容后面添加新的内容,不选 [ADDITIVE] 子句时,用新的内容

替换备注字段的原来内容。

Page 71: 第 2 章  自由表的基本操作

上一张 结束目录

2.3.9 设置过滤器和字段表 通过使用过滤器和字段表,可以限制对记录和

字段的访问。设置好限制后,该限制对该表的任何操作都一直有效,直到撤消该限制为止。设置过滤器或字段表有命令和菜单两种方法。

(1) 菜单方法先打开表的“浏览”窗口,然后选择【表】-【

属性】菜单 (2) 命令方法格式: SET FILTER TO < 条件 >

Page 72: 第 2 章  自由表的基本操作

上一张 结束目录

2 .设置字段表限制字段的访问,可以通过设置“字段选择器”来完成。(1) 菜单方法先打开表的“浏览”窗口,然后选择【表】-【属性】菜单 (2) 命令方法格式: SET FIELDS to [[<字段名 1> [, <字段名 2> …]] | ALL]功能:在内存预设一个“字段表”,使用户只能对表中有名的字段

进行操作。说明:可以多次设置字段表,再次设置将把新的字段名添加到已有

的表中;用以下命令可设置字段表的打开(相当于在“工作区属性”窗口选中“字段筛选指定的字段”)或关闭:SET FIELDS ON|OFF清除字段表中的所有字段有下面两种方法:SET FIELDS TO 清除当前字段表的所有字段,但空表仍打开CLEAR FIELDS 清除并关闭所有字段表

Page 73: 第 2 章  自由表的基本操作

上一张 结束目录

2.3.10 表数据的统计统计与汇总是数据库的重要内容, VFP提供 5种命令来

支持统计功能。 1 .计数命令命令格式:COUNT [< 范围 >] [FOR < 条件 >] [WHILE

< 条件 >] [TO < 内存变量 >]功能:计算指定范围内满足条件的记录数。

Page 74: 第 2 章  自由表的基本操作

上一张 结束目录

2 .求和命令SUM [<数值表达式表 >][<范围 >][FOR <条件 >][WHILE <

条件 >][TO <内存变量表 > | ARRAY <数组 >]功能:在打开的表中,对 <数值表达式表 >的各个表达式分别求和。

3 .求平均值命令AVERAGE [<数值表达式表 >][<范围 >][FOR <条件 >][WH

ILE <条件 >][TO <内存变量表 > | ARRAY <数组 >]功能:在打开的表中,对 <数值表达式表 >中的各个表达式分别求平

均值。

Page 75: 第 2 章  自由表的基本操作

上一张 结束目录

4 .计算命令CALCULATE <表达式表 > [< 范围 >][FOR < 条件 >][WHILE < 条件 >

][TO < 内存变量表 > | ARRAY <数组 >]功能:在打开的表中,分别计算 <表达式表 >中表达式的值。

5 .汇总命令TOTAL TO <文件名 > ON < 关键字 > [FIELDS <数值型字段表 >] [<

范围 >] [FOR < 条件 >][WHILE < 条件 >] 功能:在当前表中,分别对 < 关键字 >值相同的记录的数值型字段值求和

,并将结果存入一个新表。说明: < 关键字 > 指排序字段或索引关键字; FIELDS子句的 <数值型字

段表 > 指出要汇总的字段,若缺省,则对表中所有数值型字段汇总;缺省 <范围 >指表中所有记录。

Page 76: 第 2 章  自由表的基本操作

上一张 结束目录

本章要点函数的使用。

表达式的使用。

自由表的建立与修改 (注意备注字段和通用型字

段数据的输入和修改 )。

自由表的维护 (注意记录指针的移动、记录的插

入与追加命令、 表数据的替换命令REPLACE )。

Page 77: 第 2 章  自由表的基本操作

上一张 结束目录

Page 78: 第 2 章  自由表的基本操作

上一张 结束目录