93
Visual FoxPro 应应应应应应应应 应应应应应应应 应应应 应应应应应应应应 Email: [email protected]

Visual FoxPro 应用基础与面向对 象程序设计教程

  • Upload
    step

  • View
    144

  • Download
    0

Embed Size (px)

DESCRIPTION

Visual FoxPro 应用基础与面向对 象程序设计教程. 潘世永 数学与计算机学院 Email: [email protected]. 第二章 表的基本操作. Visual FoxPro 中的数据类型. VFP6 将系统中所有操作、处理的数据,分为几种不同数据类型: 字符型、数值型、日期型、日期时间型、逻辑型、备注型、通用型、货币型、二进制字符型和二进制备注型。 - PowerPoint PPT Presentation

Citation preview

Page 1: Visual FoxPro 应用基础与面向对 象程序设计教程

Visual FoxPro应用基础与面向对

象程序设计教程

潘世永数学与计算机学院

Email:[email protected]

Page 2: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

第二章 表的基本操作Visual FoxPro 中的数据类型

VFP6 将系统中所有操作、处理的数据,分为几种不同数据类型: 字符型、数值型、日期型、日期时间型、逻辑型、备注型、通用型、货币型、二进制字符型和二进制备注型。

字符型 字符型( Character )数据是不具有计算能力的文字数据类型,用字母 C 表示。字符型数据包括中文字符、英文字符、数字字符和其他 ASCII 字符,其长度(即字符个数)范围是 0 ~ 254 个字符。

Page 3: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

数值型 数值型数据是表示数量、可以进行数值运算的数据类型。数值型数据由数字、小数点、正负号和表示乘幂的字母 E 组成,数值精度达 16 位。在 Visual FoxPro 系统中,按存储、表示形式与取值范围不同,数值型数据又分为四种不同类型:1 .数值型 数值型( Numeric )数据由数字、小数点、正负号和字母 E 组成,用字母 N 表示。数值型数据的取值范围是: -0.9999999999E+19 ~ 0.9999999999E+20 ,包括正负号、小数点和字母 E 在内,其长度(数据位数)最大 20 位。通常用于表示实数。如 23 , -103.45 , 1.3E-5 (即 1.3×10-5 )等;

Page 4: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

2 .浮点型 浮点型( Float )数据是数值型数据的一种,用

字母 F 表示。它与数值型数据完全等价,只是在存储形式上采用浮点格式,主要是为了得到较高的计算精度。

3 .双精度型 双精度型( Double )数据是具有更高精度的一

种数值型数据,用字母 B 表示。它采用固定长度浮点格式存储,占用 8 个字节,其取值范围是:+/-4.94065645841247E-324 ~ +/-8.9884656743115E307 。

4 .整型 整型( Integer )数据是不包含小数部分的数值

型数据,用字母 I 表示。整型数据只用来表示整数,以二进制形式存储,占用 4 个字节。其取值范围是: -21474836 ~ 21474836 。

Page 5: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发日期型 日期型( Date )数据是表示日期的数据,用字母 D

表示。 VFP6 支持 2000 年型的日期数值。格式为:月 / 日 / 年。如: 04/28/97 ,固定占用 8 个字节。其中的年份如果输入 97 ,则系统默认为 1997 ,因为日期的默认格式是 {mm/dd/yyyy} ,其中 mm 表示月份, dd 表示日期, yyyy 表示年度。如果输入小于 48 的数(如 45 )则系统默认为 2045 ,因此,最好输入完整的年份。

日期时间型 日期时间型( Date Times )数据是表示日期和时间

的数据,用字母 T 表示。日期时间型常量,其默认格式是:

{mm/dd/[yy]yy [ , ] hh:mm:ss[a|p]} 其中 a 和 p 分别表示 AM (上午)和 PM (下午),

mm 、 dd 、 yyyy 的意义与日期型相同,而 hh 表示小时, mm 表示分钟, ss 表示秒数。日期时间型数据固定占用 8 个字节。

Page 6: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

逻辑型 逻辑型( Logic )数据是描述客观事物真假的

数据类型,表示逻辑判断的结果,用字母 L 表示。逻辑型数据只有真( .t. 或 .y. )和假( .f.或 .n. )两种,固定占用 1 个字节。

备注型 备注型( Memo )数据是表示、存放较多字符

的数据类型。可以把它看成是字符型数据的特殊形式,用字母 M 表示。

备注型数据没有数据长度限制,仅受限于磁盘空间。它只用于表中字段类型的定义,字段宽度固定为 4 字节,实际数据存放在与表文件同名的备注文件( .FPT )中,长度根据数据的内容而定。

Page 7: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发通用型 通用型( General )数据是存储 OLE (对象链接

嵌入)对象的数据类型,用字母 G 表示。通用型数据中的 OLE 对象可以是电子表格、文档、图形图片等。它只用于表中字段类型的定义。通用型数据字段宽度固定为 4 字节,实际数据长度仅受限于磁盘空间。

通用型数据包含链接或嵌入 OLE 对象两种操作方式。货币型 货币型( Currency )数据是为存储美元金额而使

用的一种称为货币 (Currency)的数据类型。默认保留 4 位小数,字段宽度固定为 8 字节。货币型数据用字母 Y表示。

二进制字符型和二进制备注型 本课程中不涉及这两种类型,不做介绍。

Page 8: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

Visual FoxPro 的常量与变量

常量 常量是在命令或程序中可直接引用、具有具体值的命名数据项,其特征是在整个操作过程中它的值和表现形式保持不变。 Visual FoxPro 按常量取值的数据类型,将常量分为 6 种类型:数值型常量、浮点型常量、字符型常量、逻辑型常量、日期型常量、日期时间型常量。

1 .数值型常量 由数字、小数点和正负号组成,表示整数或实数值。如; 100 , -21 , 15.31 , -21092.5041 等。

Page 9: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

2 .浮点型常量 以浮点格式表示的数值常量。通常用来表示那些绝对值很大或很小、而有效位数不太长的一些数值,对应于日常应用中的科学记数法。如: 1.3×109

表示为 1.3E+9 ,其中, 1.3称为尾数,表示有效数字, 9称为阶码,表示幂指数。阶码只能是整数,尾数可以是整数,也可以是小数;尾数与阶码均可正可负。

3 .字符型常量 由任意 ASCII 字符、汉字和汉字字符组成的字符型数据,字符型常量又称为字符串。 Visual FoxPro 要求将字符串中所有字符,用一对双引号或单引号或方括号作为定界符对括起来。如:“ I am a student”,‘中华人民共和国’, [Visual FoxPro 6.0 系统 ]都是字符串。

Page 10: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

4 .逻辑型常量 逻辑型常量就是表示逻辑判断结果“真”或“假”的逻辑值。逻辑常量只有真和假两种值,分别用( .t. 或 .y. )和( .f. 或 .n. )表示真和假。5 .日期型常量 日期型常量是表示日期值的数据,如 {10/01/02} 表示 2002 年 10 月 1 日这一日期常量值。6 .日期时间型常量日期时间型常量是表示日期时间值的数据,如 {10/01/02 8:30} 表示 2002 年 10 月 1 日 8 点半这一日期时间常量值。

Page 11: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发 日期值和日期时间值的格式受系统环境设置的影响,用户可根据应用需要进行相应调整、设置。 ( 1 )日期格式中的世纪值命令格式: SET CENTURY ON | OFF 功能: ON :日期数据显示 10 位,其中年份 4 位,即日期值输出时显示年份值。 OFF :(默认值)。日期数据显示 8 位,年份 2位,即日期值输出时不显示年份值。( 2 )设置日期显示格式用户可以调整、设置日期值和日期时间值的显示输出格式。 命令格式: SET DATE TO AMERICAN | ANSI | BRITISH | FRENCH | GERMAN | ITLIAN | JAPAN | 命令功能:设置日期型和日期时间型数据的显示输出格式。系统默认为 AMERICAN美国格式,日期格式为 mm/dd/yy 。

Page 12: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

Visual FoxPro 系统增加了一种严格的日期格式是:{^yyyy-mm-dd[,][hh[:mm[:ss]][a|p]]} ^ 符号表明该格式是严格的日期格式,并按照 YMD 的格式解释日期型和日期时间型数据,它是严格日期格式的标志,不可缺少。有效的日期型和日期时间型数据分隔符为:连字符“ -”、正斜杠“ /”、句点“ .”和空格。Visual FoxPro 系统默认采用严格的日期格式, 命令格式: SET STRICTDATE TO 0|1 命令功能: 0 :关闭严格的日期格式,即设置为传统的格式。 1 :设置严格的日期格式,要求所有日期型和日期时间型数据均按严格的格式。

Page 13: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

变量 变量是在操作过程中可以改变其取值或数据类型的数据项。在 Visual FoxPro 系统中变量分为字段变量、内存变量、数组变量和系统变量 4 类。确定一个变量,需要确定其三个要素:变量名、数据类型和变量值。 1 .命名约定(1) 用字母,下划线和数字命名。一般建议不采用汉字命名;(2) 命名以字母或下划线开头;除自由表中字段名、索引的 TAG标识名最多只能 10 个字符外,其他的命名可使用 1 ~ 128 个字符;(3) 避免使用 Visual FoxPro 的保留字;(4) 文件名的命名应遵循操作系统的约定。

Page 14: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

2 .字段变量 表由若干记录构成,每个记录都包含若干个数量相同的字段,同一字段在不同记录中分别对应不同的字段值,因此,字段也是变量。与其他变量不同的是,字段变量是定义在表中的变量,随表的存取而存取,因而是永久性变量。

3 .内存变量 内存变量是在内存中定义的、一种单个数据元素的临时性变量。( 1 )内存变量的数据类型 内存变量的数据类型包括:数值型、字符型、逻辑型、日期型和日期时间型;( 2 )内存变量的建立 建立内存变量就是给内存变量赋值。

Page 15: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

命令格式: STORE <表达式 > TO <内存变量表 > 命令功能:计算 <表达式 >的值并赋值给各个内存变量。

例如: STORE 0 TO AA,BB,CC 将数值 0赋给变量 AA,BB,CC STORE “李四” TO NAME 将字符串“李四”赋给 NAME 命令格式: <内存变量 > = <表达式 > 命令功能:计算 <表达式 >的值并赋值给指定内存变量。 例如: A=.T. 将逻辑真值赋给变量 A

Page 16: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

( 3 )内存变量的显示输出命令格式: ? | ?? <表达式表 > 命令功能:计算表达式表中各表达式的值,并在屏幕上指定位置显示输出各式的值。 ?:先回车换行,再计算并输出表达式的值; ??:在屏幕上当前位置,计算并直接输出表达式的值; <表达式表 >:多个用逗号两两分隔的表达式,各表达式的值输出时,以空格分隔。

Page 17: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

命令格式: LIST MEMORY [LIKE<内存变量名框架 >] [TO PRINTER[PROMPT]|TO FILE<文件名 >] [NOCONSOLE] 命令功能:显示当前在内存中定义的自定义内存变量和系统内存变量。说明:LIKE<内存变量名框架 >:可以通过它有选择地显示内存变量和数组信息。 TO PRINTER[PROMPT] :将显示结果在打印机上输出。 TO FILE<文件名 >:将显示结果输出到指定的文件中,该文件为文本文件。NOCONSOLE :不在屏幕上显示。

Page 18: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

命令格式: DISPLAY MEMORY [LIKE <内存变量框架名 >] [TO PRINTER[PROMPT]|TO FILE<文件名 >] [NOCONSOLE]说明: LIST MEMORY与 DISPLAY MEMORY的区别LIST MEMORY显示内存变量时不暂停,在屏幕上只保留最后一屏内存变量。DISPLAY MEMORY在显示内存变量时,若内存变量数超过一屏,则在每显示一屏后暂停,按任意键后继续显示。

Page 19: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

( 4 )保存内存变量 命令格式: SAVE TO <内存变量文件名 > [ALL LIKE/ EXCEPT <内存变量名框架 >]功能:它将内存中的部分或全部内存变量以文件的形式存入磁盘,文件名由 <内存变量文件名 > 指定,文件扩展名的缺省值为 .MEM 。 说明:ALL LIKE<内存变量名框架 >] :将符合 <内存变量名框架 >的那些变量存入指定的文件。 ALL EXCEPT <内存变量名框架 >] :将不符合 <内存变量名框架 >的那些变量存入指定的文件。

Page 20: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

例如: SAVE TO VAR1 将除系统内存变量以外所有内存变量保存到 VAR1.MEM 文件中。即: AA 、 BB 、 CC、 NAME 、 A 。SAVE TO VAR2 ALL LIKE ?A* 将第一个字符是任意字符,第二个字符是 A 的所有内存变量保存到 VAR2.MEM 文件中。即 AA 、 NAME 。SAVE TO VAR3 ALL EXCEPT ?A* 将自定义内存变量中第二个字符不是 A 的所有内存变量保存到 VAR2.MEM 文件中。即 BB 、 CC、 A 。

Page 21: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发( 5 )删除内存变量命令格式: RELEASE <内存变量名表 >功能:删除指定的内存变量。当 <内存变量名表 >为多个变量时,变量名之间用“ ,”隔开。 命令格式: RELEASE ALL [LIKE|EXCEPT <内存变量名框架 >]功能:删除指定的内存变量。省略所有选择项时,则删除所有的内存变量。命令格式: CLEAR MEMORY功能:删除当前内存中的所有内存变量。它和 RELEASE ALL 的效果完全相同。例如: RELEASE BB,CC LIST MEMORY LIKE * RELEASE ALL LIKE ?A*LIST MEMORY LIKE * RELEASE ALLLIST MEMORY LIKE *

Page 22: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发( 6 )恢复内存变量 如果需要使用已保存的内存变量时,可用下述命令恢复 :命令格式: RESTORE FROM <内存变量文件名 > 功能:它将 <内存变量文件名 > 指定的内存变量文件中所保存的内存变量从磁盘读回内存重新使用。 参数描述:RESTORE :命令动词,表示执行恢复操作。FROM <内存变量文件名 > :指定恢复内存变量的来源。[ADDITIVE] :保留当前内存中的内存变量,将指定文件中的内存变量添加到当前内存变量之后。 若省略 ADDITIVE选择项,则内存中已有的内存变量全部释放,将指定文件中的内存变量调入内存。

Page 23: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

当内存变量名与字段变量名相同时,字段名优先于内存变量名,使用时可以在内存变量名前加上“M->”或“M.” 以示区别。

例如: RESTORE FROM VAR1LIST MEMORY LIKE * RESTORE FROM VAR2LIST MEMORY LIKE *RESTORE FROM VAR3 ADDITIVE LIST MEMORY LIKE *

Page 24: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

4 .数组变量

数组变量是一组具有相同名称、以下标相互区分的有序内存变量。一个数组通常都包含多个数据元素。 Visual FoxPro 系统中只允许使用一维数组和二维数组。 ( 1 )数组元素 数组中各有序变量(数据元素)组成数组的成员,称为数组元素。 数组元素的名称用数组加下标构成。如 AA ( 1 ),BB ( 2 , 3 )分别表示一维数组 AA 的第 1 个元素,二维数组 BB 中第 2 行第 3列的元素。

Page 25: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发( 2 )数组的定义 数组必须先定义后使用,定义数组是向系统申请数组元素在内存中的存储空间。 命令格式: DIMENSION | DECLARE < 数组名 1> ( < 数值表达式 1>[ , < 数值表达式 2>] ) [ , < 数组名 2> ( < 数值表达式 3>[ ,< 数值表达式 4>] )… ] 说明: (1)< 数组名 1> :指定数组的名称,其规定与内存变量名相同。 (2) 数组的下标的起始值为1 。 (3) 同一数组中的数组元素可以有不同的数据类型 。 (4) 二维数组中各元素按行的顺序依次排列 。例如:DIMENSION A(2,3),BB(4,8) DIMENSION A(6)

Page 26: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

( 3 )数组的赋值与引用 数组元素的赋值与引用,与普通内存变量的规则相同。 除了可以分别对数组元素赋值以外,也可对数组中的所有元素赋同一初值。

5 .系统变量 系统变量是 Visual FoxPro 系统特有的内存变量,它由 Visual FoxPro 系统定义、维护。系统变量有很多,其变量名均以下划线“ _”开始,因此在定义内存变量和数组变量名时,不要以下划线开始,以免与系统变量名冲突。

Page 27: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

Visual FoxPro 的函数 Visual FoxPro 系统中,函数是一段程序代码,用来进行一些特定的运算或操作。 Visual FoxPro 的函数由函数名与自变量两部分组成。标准函数是 Visual FoxPro 系统提供的系统函数,其函数名是 Visual FoxPro保留字,自定义函数是用户自已定义的函数,函数名用户指定;自变量必须用圆括号对括起来,如有多个自变量,各自变量以逗号分隔;有些函数可省略自变量,或不需自变量,但也必须保留括号。 Visual FoxPro 系统有数百种不同函数,按函数运算、处理对象和结果的数据类型,可分为数值型函数、字符型函数、日期时间型函数等。

Page 28: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发数值函数

数值函数用于数值运算。

1 .取绝对值函数 ABS( )

【格式】 ABS(<nExp>)

【功能】计算 nExp 的值,并返回该值的绝对值。

2 .指数函数 EXP( )

【格式】 EXP(<nExp>)

【功能】求以 e 为底、 nExp 值为指数的幂。

3 .取整函数 INT( )

【格式】 INT(<nExp>)

【功能】计算 nExp 的值,返回该值的整数部分

Page 29: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

4 .自然对数函数 LOG( ) 【格式】 LOG(<nExp>) 【功能】求 nExp 的自然对数。 nExp 的值必须为

正数。 5 .常用对数函数 【格式】 LOG10(<nExp>) 【功能】求 nExp 的常用对数。 nExp 的值必须为

正数。 6 .平方根函数 SQRT( ) 【格式】SQRT(<nExp>) 【功能】求非负 nExp 的平方根。

Page 30: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

7 .最大值函数 MAX( ) 和最小值函数 MIN( ) 【格式】MAX(<nExp1>, <nExp2>[ , < nExp3>...])

MIN(<nExp1>, <nExp2>[ , < nExp3>...]) 【功能】返回数值表达式中的最大值和最小值。 8 .求余数函数 MOD( ) 【格式】 MOD(<nExp1>, <nExp2>) 【功能】返回 nExp1 除以 nExp2 的余数。余数

的小数位数与 nExp1 相同,符号与 nExp2 相同。 9 .四舍五入函数 ROUND( ) 【格式】ROUND(<nExp1>, < nExp2>) 【功能】返回 nExp1 四舍五入的值, nExp2 表示保留的小数位数。

Page 31: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发 10 . π函数 PI( ) 【格式】 PI( ) 【功能】返回常量 π的近似值 11 .正弦函数 SIN( ) 【格式】SIN(<nExp>) 【功能】返回 nExp 的正弦值。 nExp 以弧度为单

位,函数值域为 [-1,1] 。 12 .余弦函数 COS( ) 【格式】COS(<nExp>) 【功能】返回 nExp 的余弦值。 nExp 以弧度为单

位,函数的值域为 [-1,1] 。 13 .正切函数 TAN( )

【格式】 TAN(<nExp>) 【功能】返回 nExp 的正切值。 nExp 以弧度为单

位,其值为 π/2 或 - π/2 时,系统返回一个绝对值很大的数。

Page 32: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发字符函数 字符函数是处理字符型数据的函数。 1 .子串位置函数 【格式】 AT(<cExp1>, < cExp 2>) 【功能】返回串 cExp1 在串 cExp2 中的起始位置。函数值为整数。如果串 cExp2 不包含串 cExp1 ,函数返回值为零。

2 .取左子串函数 LEFT( ) 【格式】 LEFT(<cExp>, <nExp>) 【功能】返回从 cExp串中第一个字符开始,截取

nExp 个字符的子串。 3 .取右子串函数 RIGHT( ) 【格式】RIGHT(<cExp >, < nExp>) 【功能】返回从 cExp串中右边第一个字符开始,截取 nExp 个字符的子串。有关说明同 LEFT( ) 函数。

Page 33: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

4 .取子串函数 SUBSTR( ) 【格式】SUBSTR (<cExp>, <nExp1> [ , < nExp2>]

) 【功能】返回从串 cExp 中第 nExp1 个字符开始,截取

nExp2 个字符的子串。 5 .字符串长度函数 LEN( ) 【格式】 LEN(<cExp>) 【功能】返回 cExp串的字符数(长度)。函数值为 N 型。 6 .删除字符串前导空格函数 LTRIM( ) 【格式】 LTRIM(<cExp>) 【功能】删除 cExp串的前导空格字符。 7 .删除字符串尾部空格函数 RTRIM( )

【格式】RTRIM (<cExp>) 【功能】删除 cExp串尾部空格字符。

Page 34: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发 8 .删除字符串最左边和最右边的所有空格函数

ALLTRIM( ) 【格式】 ALLTRIM(<cExp>)

【功能】删除 cExp串左边和最右边的所有空格。 9 .空格函数 SPACE( )

【格式】 SPACE (<nExp>) 【功能】返回一个包含 nExp 个空格的字符串。 10 .字符复制函数 REPLICATE( ) 【格式】REPLICATE (<cExp>, <nExp>) 【功能】返回将 cExp串重复 nExp次的字符串。 11 .大小写转换函数 LOWER( ) 和 UPPER( ) 【格式】 LOWER (<cExp>) UPPER (<cExp>) 【功能】 LOWER( )将 cExp串中字母全部变成小写字母, UPPER( )将 cExp串中字母全部变成大写字母,其它字符不变。

Page 35: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发日期时间函数 日期时间函数是处理日期型或日期时间型数据的函

数。 1 .系统日期函数 DATE( ) 【格式】 DATE() 【功能】返回当前系统日期,此日期由 Windows

系统设置。函数值为 D 型。 2 .系统时间函数 TIME( ) 【格式】 TIME() 【功能】返回当前系统时间,时间显示格式为 hh:

mm:ss 。函数值为 C型。 3 .日期函数 DAY( ) 【格式】 DAY(<dExp>) 【功能】返回 dExp 式中的天数。函数值为 N 型。

Page 36: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发 4 .星期函数 DOW( ) 、 CDOW( ) 【格式】 DOW(<dExp>) CDOW(<dExp>) 【功能】 DOW( ) 函数返回 dExp 式中星期的数值,用

1 ~ 7 表示星期日~星期六。函数值为 N 型。 CDOW( ) 函数返回 dExp 式中星期的英文名称。函数值为 C型。

5 .月份函数 MONTH( ) 、 CMONTH( ) 【格式】 MONTH(<dExp>) CMONTH(<dExp>) 【功能】 MONTH( )函数返回 dExp 式中月份数。

函数值为 N 型。 CMONTH( )函数则返回月份的英文名。函数值为 C型。

6 .年份函数 YEAR( ) 【格式】 YEAR(<dExp>) 【功能】函数返回 dExp 式中年份值。函数值为 N 型。

Page 37: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发转换函数 在数据库应用的过程中,经常要将不同数据类型的

数据进行相应转换。 Visual FoxPro 系统提供了若干个转换函数。

1 . ASCII 码函数 ASC( ) 【格式】 ASC (<cExp>) 【功能】返回 cExp串首字符的 ASCII码值。函数

值为 N 型。 2 . ASCII 字符函数 CHR( ) 【格式】 CHR(<nExp >) 【功能】返回以 nExp 值为 ASCII 码的 ASCII 字

符。函数值为 C型。 3 .字符日期型转换函数 CTOD( ) 【格式】CTOD(<cExp>) 【功能】把“××/××/××”格式的 cExp串转换成对应日期值。函数值为 D 型。

Page 38: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

4 .日期字符型转换函数 DTOC( ) 【格式】 DTOC(<dExp>) 【功能】把日期 dExp转换成相应的字符串。函数值为 C型。 5 .数值字符型转换函数 STR( ) 【格式】STR(<nExp1>[ , < nExp2>][ , < nExp3>]) 【功能】将 nExp1 的数值转换成字符串形式。函数值为 C型。 6 .字符数值型转换函数 VAL( ) 【格式】 VAL (<cExp>) 【功能】将 cExp 串中数字转换成对应数值,转换结果取两位小数。函数值为 N 型。

Page 39: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发测试函数 用于了解数据对象的类型、状态等属性。 1 .数据类型函数 TYPE( )

VARTYPE( ) 【格式】 TYPE(<cExp>)

VARTYPE(<Exp>) 【功能】 TYPE(<cExp>) 返回 cExp串表示的数据

的数据类型。 VARTYPE(<Exp>) 返回 Exp 表达式的数据类型。返回值是一个表示数据类型的大写字母。C:字符型, D :日期型, N :数值型, L :逻辑型, M :备注型, G :通用型, U:未定义。

2 .文件查找函数 FILE () 【格式】 FILE(<cExp>) 【功能】根据 cExp 串中指定路径查找文件,如

未指定路径,则在默认目录中查找。文件存在,返回逻辑真 (.T.) 值,否则为逻辑假 (.F.)值。

Page 40: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发 3 .条件测试函数 IIF( ) 【格式】 IIF(<lExp >, <eExp 1>, <eExp2>) 【功能】逻辑表达式 lExp 值为真 (.T.),返回表达式

eExp1 的值,否则返回表达式 eExp2 的值。 eExp1和 eExp2 可以是任意数据类型的表达式。

4 .表结束标志测试函数 EOF( ) 【格式】 EOF([<工作区号 > | <别名 >]) 【功能】测试记录指针是否移到表结束处。如果记录指针指向表中尾记录之后,函数返回真( .T. ),否则为假( .F. )。

5 .表起始标识测试函数 BOF ( ) 【格式】 BOF ([<工作区号 > | <别名 >]) 【功能】测试记录指针是否移到表起始处。如果记录指针指向表中首记录前面,函数返回真( .T. ),否则为假( .F. )。工作区说明见 EOF ()函数。

Page 41: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

6 .当前记录号函数 RECNO( ) 【格式】RECNO([<工作区号 > | <别名 >]) 【功能】返回指定工作区中表的当前记录的记录号。

对于空表返回值为 1 。 7 .当前记录逻辑删除标志测试函数 DELETED( ) 【格式】 DELETED([<工作区号 > | <别名 >]) 【功能】测试指定工作区中表的当前记录是否被逻

辑删除。如果记有逻辑删除标记,函数返回真 (.T.),否则为假 (.F.)。

8 .记录数函数 RECCOUNT( ) 【格式】RECCOUNT ([<工作区号 > | <别名 >]) 【功能】返回指定工作区中表的记录个数。如果工

作区中没有打开表则返回 0 。

Page 42: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

9 .屏幕列坐标和行坐标函数 COL( ) 、 ROW( ) 【格式】COL( ) ROW( ) 【功能】COL( ) 返回光标的列坐标值, ROW( )返回光标的行坐标值。

除了系统(标准)函数外, Visual FoxPro系统还允许用户自定义函数。

Page 43: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

运算符 功 能 表 达 式 举 例 运算结果 优先级别

( ) 圆括号 (2-5)*(3+2) -15 最高 |

|

|

|

最低

- 取相反数 -(3-8) 5

** 、^

乘幂 2**5 、 3^2 32 、 9

* 、 / 乘、除 2*10 、 25/5 20 、 5

% 取余数 20%5 0

+ 、 - 加、减 36+19 、 29-47 55 、 -18

Visual FoxPro 的表达式 在 Visual FoxPro 系统中,表达式是由常量、变量、函数单独或与运算符组成的有意义的式子。 表达式分为算术表达式、字符表达式、日期时间表达式、逻辑表达式和关系表达式五类。算术表达式 算术表达式又称数值表达式。数值运算符的功能及运算优先顺序,如下表所示。

Page 44: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

字符表达式 “ +”与 “ -”都是字符连接运算符,都将两字符串顺序连接,但“ +”是直接连接,“ -”则将串 1尾部所有空格移到串 2尾部后再连接。 “ $”运算实质上是比较两个串的包含关系,其作用是比较、判断串 1 是否为串 2 的子串,如果串 1是串 2 的子串,运算结果为“真”,否则为“假”。

运算符 功能 表达式举例 运算结果

+ 串 1+串 2 :两串顺序相连接

‘12 ’+‘56’ ‘12 56’

- 串 1-串 2 :串 1尾空格移到串 2尾后再顺序相连接

‘12 ’-‘56’ ‘1256 ’

$ 串 1$串 2 :串 1 是否为串2 子串

‘1234’$ ‘a12345’

‘1234’$ ‘34512’

.T.

.F.

Page 45: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

日期表达式

日期运算符分为“ +”和“ -”两种,可在日期型数据上增加或减少一个天数,在日期时间型数据上增加或减少一个秒数。两个日期型数据相减等于间隔的天数,两个日期时间型数据相减等于间隔的秒数。例如:{12/15/03}-{12/11/03} 的结果为 4{12/15/03}-4 的结果为 {12/11/03} {12/15/03}+4 的结果为 {12/19/03}注意:两个日期型数据不能相加,两个日期时间型数据也不能相加。

Page 46: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

运算符 功 能 表 达 式 举 例 结果< 小于 15<4*6 .T.

> 大于 ‘A’ > ‘1’ .T.= 等于 2+4 = 3*5 .F.

<> 、 # 、 !=

不等于 5 <> -10 .T.

<= 小于或等于 'bc' <= ‘ab' .F.

>= 大于或等于 {10/10/02}>={10/01/02} .T.

== 字符串恒同 ‘abc’==’abcabc’ .F.

关系表达式 关系表达式的值为逻辑值,关系表达式成立则其值为“真”,否则为“假”。

日期型或日期时间型数据以日期或时间的先后顺序为序。

Page 47: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发字符型数据的比较相对复杂,默认规则为: ( 1 )单个字符:单个字符的比较是以字符 ASCII码的大小,作为字符的“大小”,也就是先后顺序。( 2 )字符串:两个字符串进行比较的基本原则是从左到右逐个字符进行比较,但因系统相关设置状态不同,比较的结果不完全相同。相等比较:用运算符=进行两串比较时,或者到达右端串的末尾字符为止(当SET EXACT OFF 时),或者当到达两串的末端为止(当SET EXACT ON 时),以判断两串是否相等。恒等比较:用运算符==进行两串的恒同比较时,不论SET EXACT 的设置如何,只有当两串长度相同,字符相同,排列一致时才成立。大小比较:用运算符 <或 >进行两串比较时,比较到第1个不相同字符为止,否则,长度较长的串较“大”。( 3 )汉字:系统默认以汉字的拼音顺序比较“大小”。

Page 48: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

运算符 功 能 优先级别( ) 圆括号 最高

|

|

最低

.NOT. 或! 逻辑非.AND. 逻辑与.OR. 逻辑或

A B A .AND.B A .OR. B .NOT A

.T. .T. .T. .T. .F.

.T. .F. .F. .T. .F.

.F. .T. .F. .T. .T.

.F. .F. .F. .F. .T.

逻辑表达式 由逻辑运算符将逻辑型数据连接而成的式子称为逻辑表达式。

逻辑运算真值表

Page 49: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

在 Visual FoxPro 系统中,各类运算的优先顺序如下: 圆括号 >算术和日期运算 >字符串运算 > 关系运算 >逻辑运算 多个同一级别的运算,则按在表达式中出现的先后顺序进行运算。

Page 50: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发建立表

定义数据表的结构 建立表时,首先要定义数据表的结构。 在 Visual FoxPro 系统中,一张二维表对应一个数据表,称为表文件。 一张二维表由表名、表头、表的内容三部分组成,一个数据表则由数据表名、数据表的结构、数据表的记录三要素构成。 定义数据表的结构,就是根据二维表的定义来确定数据表的结构。即确定表的组织形式,定义表中的字段名、字段类型、字段宽度及是否以该字段建立索引等。( 1 )字段名:必须以字母或汉字开头,可以包括字母、汉字、数字和下划线,不要超过 10 个字符。 示例:姓名、 XB 、班级 BJ 、班级 2 、班级 _2

Page 51: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发( 2 )字段类型:共 13 种。( 3 )字段宽度:不同类型的字段具有不同的宽度。( 4 )小数位:数值型数据需要规定小数位数。( 5 )使用 NULL 值:可以指定字段是否接受 NULL值,它表示无明确的值。

系统自动设置:逻辑型 : 1

日期型 : 8

日期时间型 :8

整型 : 4

货币型 : 8

备注型 : 4

通用型 : 4

双精度型 :8

由用户定义:字符型 : 254

数值型 : 20

浮动型 : 20

小数点宽度 = 整数位 + 小数位 +1+1 符号位

关于字段宽度

Page 52: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发利用表设计器创建表 使用“表设计器”可以方便、直接地创建表,除了可以通过“项目管理器”的“数据”选项卡使用“表设计器”创建外,也可以用下面的两种办法创建: 方法一: 打开“文件”菜单,选择“新建” ;在“新建”窗口,选择“表”,再按“新建文件”按钮 ;在“创建”窗口,输入要建立的表的名字;在“表设计器”窗口,逐一地定义表中所有字段的名字、类型、宽度和是否建立索引,完成对数据表结构的建立。 方法二: 命令格式: CREATE [〈表文件名〉]说明: (1) 原来磁盘上没有这个表文件,通过 CREATE命令的执行,在磁盘上建立起一个新的表文件,若定义了备注型字段,则同时建立了一个 .FPT 为扩展名的表备注文件。

Page 53: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

(2) 若在文件名前指定了驱动器标识符,则文件建立在指定的驱动器上,否则建立在当前驱动器上。(3) 不指定文件扩展名时,缺省扩展名为 .DBF 。(4) 若磁盘上存在这个文件或文件重名,系统显示一个警告对话框,提示是否要改写表。(5) 不要用 A-J单个字母作为表文件名,因为他们是专门用于工作区别名的。利用表设计器修改表结构 方法一: 打开“文件”菜单,选择“打开” ;在“打开”窗口,输入要修改表结构的表名字;在“表设计器”窗口,修改表中所有字段的名字、类型、宽度和是否建立索引,完成对数据表结构的修改。 方法二: 命令格式: MODIFY STRUCTURE [〈表文件名〉]

Page 54: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

利用表向导创建表

在 Visual FoxPro 系统环境下,除使用表设计器创建表外,还可以用表向导创建表。

使用表向导,就是把已有的表作为“样本”,在“向导”的引导下,通过筛选、修改操作完成新表的创建。

利用表向导创建表的操作步骤是:打开“文件”菜单,选择“新建”;在“新建”窗口,选择“表”,再按“向导”按钮;在“表向导”的分步骤窗口,按需要进行选择,完成表的创建。

Page 55: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发表的打开与关闭 使用任何一个表以前,都必须首先打开表。格式: USE < 表文件名 > [EXCLUSIVE] [SHARED] [ALIAS< 别名 > ]功能:打开指定的表文件。说明:(1) < 表文件名 > :指定要打开的表的名称。 [EXCLUSIVE] :在网络上以独占的方式打开表。 [SHARED] :在网络上以共享的方式打开表。(2) 打开表时若表含有备注型字段,则 FPT 文件也同时被打开。(3) 每个表被打开时均赋予一个别名。若省略 ALIAS< 别名 > ,则其别名与主文件名相同。(4)若不选择任何参数,表示关闭当前工作区中已打开的表。(5) 在任一时刻,每个工作区最多允许打开一个表。如果指定工作区已有表打开,在打开新的表时,系统总是先自动关闭原来打开的表。

Page 56: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

通过前面的介绍,我们知道一个表是由表的结构与表中的记录两部分组成的。向表中加入记录,就是对表进行数据输入的操作。

1.创建表时立即输入数据 创建表即定义表结构是通过表设计器来完成的,

而向表中加入数据,要在表“浏览”窗口或表“编辑”窗口中进行。在创建表时,如果表中所有字段的属性已定义完成,可按“确定”按钮保存表结构,同时显示“现在输入数据吗?”的对话。选择“是”按钮,可以立即进入表“浏览”窗口,进行表中数据的输入。

向表中加入记录

Page 57: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

2.以追加方式输入数据 在建立表结构时,如果用户没有选择立即向表输

入数据,可以用追加方式向表输入数据。该操作是在表“浏览”或表“编辑”窗口进行的。

操作步骤是:打开要输入数据的表;打开“显示”菜单,选择“浏览”,然后选择“编辑”或“浏览”,可进入表“编辑” 或“浏览”窗口;在此窗口可以通过选择“显示”菜单下的“追加”选项向表输入数据,或修改表中原有数据。

无论是在表“编辑”窗口还是在表“浏览”窗口,都可以对表中的数据进行追加,只是显示方式有所不同。在这两个窗口中,不仅可以进行数据的输入,同时也可以编辑修改表中的数据。

Page 58: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发 3.备注型数据输入 备注型字段由于其长度不定,因此,该字段数据不能同其它类型的字段一样在表“编辑”窗口或表“浏览”窗口输入。 备注型字段数据输入的操作方法是,打开输入数据的表;进入表“编辑”窗口或“浏览”窗口;在“编辑”窗口或“浏览”窗口,把光标移到备注型字段下双击,即可进入备注字段的编辑窗口。 4.通用型数据的输入 因为其长度的不确定性,通用型字段数据也不能和常规类型的字段一样在表“编辑”窗口或表“浏览”窗口输入。 把光标移到通用型字段下双击,即可进入通用型字段的数据编辑窗口。然后再打开“编辑”菜单,选择“插入对象”;在“插入对象”窗口,在“对象类型”列表框中选择插入对象类型;再选择“新建”或“由文件创建”按钮。

Page 59: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发录入记录 在表结构建成并存盘关闭了“表设计器”之后,可利用命令向表中追加记录。格式: APPEND [BLANK]说明:[BLANK] :在当前表的末尾添加一条空记录。 功能:在表的末尾添加一个或多个新记录。说明:(1) 它可以向当前表的尾部追加一条或多条新记录。(2)当发出 APPEND 或 APPEND BLANK命令,并且在选定工作区中没有打开的表时,将显示一个“打开”对话框,我们可以在对话框中选择一个要添加记录的表。(3)APPEND命令打开一个编辑窗口,我们可以在其中输入一个或多个新记录。

Page 60: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

格式一: LIST [OFF] [FIELDS < 字段名列表 >] [< 范围 >] [FOR <条件 >] [WHILE <条件 >] [TO PRINTER [PROMPT] / TO FILE < 文本文件名 >] 格式二: DISPLAY [OFF] [FIELDS < 字段名列表 >] [< 范围 >] [FOR <条件 >] [WHILE <条件 >] [TO PRINTER [PROMPT] / TO FILE < 文本文件名 >]功能:显示当前表中的全部或部分记录和数据。说明:[OFF] :使用 OFF 时,不显示记录号,否则显示记录号。[< 范围 >] :范围为可选项,选择时为 ALL 、 RECORD( N )、 [ NEXT ( N )、 REST 中的一个参数,表示记录显示的范围。FIELDS < 字段名列表 > :若省略 < 字段名表列 > ,则显示当前表中的所有字段,否则显示指定的字段。如果备注字段名出现在 < 字段名表列 > 中,则它的内容按 50 个字符列宽显示。

显示表中的记录

Page 61: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

[FOR<条件 >/WHILE<条件 >] :该子句用于有选择地显示某些记录,省略时则显示 < 范围 > 限定的全部记录。 [TO PRINTER [PROMPT] / TO FILE < 文本文件名 >] :指定记录列表的输出方向。 TO PRINTER [PROMPT]指定输出到打印机。 [PROMPT]参数的使用方法同前。TO FILE < 文本文件名 >指定输出到所指定的文本文件中。 LIST 和 DISPLAY 的区别::(1)DISPLAY每显示一屏记录时暂停一次,按任意键后继续显示剩余的记录,而 LIST连续向下显示,直到记录显示完毕为止。(2)若省略所有可选项,则 DISPLAY命令显示当前记录,即范围为 NEXT 1 ,而 LIST命令显示全部记录,即范围为 ALL 。

Page 62: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

利用命令浏览和修改表中的数据 格式: BROWSE [FIELDS < 字段名表 >] [FOR < 逻辑型表达式 >]功能:在屏幕上打开一个浏览窗口,在窗口中显示表的记录。说明: [FIELDS< 字段名表 >] : 指定在浏览窗口中显示的表的字段。FOR < 逻辑型表达式 > :指定在浏览窗口中显示的记录所要求满足的条件。

BROWSE命令可以带有很多任选项。 在字段后面使用 :H参数,窗口中显示指定字段名例如: BROWSE FIELDS NAME:H=“姓名”

Page 63: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发数据表中记录的定位 在向表输入数据时,系统按照其输入的前后顺序,给每一个记录赋予一个记录号。最先输入的记录为 1 号记录,其次 2 号记录,以此类推。 在 Visual FoxPro 系统内部,有一个用以确定当前记录的记录指针,记录指针指向哪一个记录,这一个记录就是当前操作的记录,即当前记录。 当表打开时,当前记录为第一个记录。表文件一旦打开,表中的记录指针是可以移动的。数据表中记录的定位,实质上就是确定哪一个记录为当前记录。

Page 64: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

打开“表”菜单,选择“转到记录”,子菜单不同的选项,可以将记录指针移动到相应的记录上。

( 1 )选择“第一个”,确定第一个记录为当前记录;

( 2 )选择“最后一个”,确定最后一个记录为当前记录;

( 3 )选择“下一个”,确定当前记录的下一个记录为当前记录;

( 4 )选择“前一个”,确定当前记录的前一个记录为当前记录;

( 5 )选择“记录号”, 便进入“转到记录”对话窗口,在“转到记录”对话框内,可以选择记录号,确定该记录号指定的记录为当前记录;

( 6 )选择“定位”,进入“定位记录”窗口,在“定位记录”对话框内,输入定位条件表达式,确定满足定位条件表达式的第一个记录为当前记录。

Page 65: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

VFP提供了下列绝对定位和相对定位两类命令。1 、记录指针的绝对定位格式一: GOTO [RECORD < 数值表达式 > ] /TOP/BOTTOM 格式二: GO [RECORD < 数值表达式 > ] /TOP/BOTTOM格式三: < 数值表达式 >功能:将记录指针直接定位到指定的记录上。说明:< 数值表达式 > :指定一个物理记录号,记录指针移至该记录上。 TOP :将记录指针定位在表的第一个记录上。 BOTTOM :将记录指针定位在表的最后一个记录上。

记录定位的命令

Page 66: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

2 、记录指针的相对定位 相对定位与当前记录有关,它是把记录指针从当前位置作相对移动。格式: SKIP [< 数值表达式 >]功能:将记录指针向前或向后作相对若干条记录的移动。说明:(1)< 数值表达式 > :指定记录指针作相对移动的记录数据。(2)移动的记录数等于 < 数值表达式 > 的值,其值为正数时,记录指针向下移动,当 < 数值表达式 > 是负数时,记录指针向上移动。(3)省略选择项 < 数值表达式 > ,约定为向下移动一条记录,即 SKIP 等价于 SKIP 1 。

Page 67: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

1. 逻辑删除表中的记录 VFP 中删除记录是分为两步来进行的,第一步是将要删除的记录做上删除标记,第二步才是将记录真正从表是彻底删除。 逻辑删除就是给暂时不使用的记录加一个删除标记。逻辑删除表中的记录,操作方法是: 方法一:在表“浏览”窗口,把鼠标对准其删除标记栏,单击左键,这时要进行逻辑删除的记录就被加上了删除标记。这种操作方法只对单记录进行逻辑删除有效。 方法二:在“浏览”窗口,打开“表”菜单,选择“删除记录”,在“删除”窗口,可以通过选择作用范围确定要进行逻辑删除的部分记录或在 For 对话框中,设置逻辑删除条件表达式来确定逻辑删除的记录。

删除和恢复表中的数据的命令

Page 68: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

2.恢复表中逻辑删除的记录 对加上逻辑删除标记的记录,如果用户还想恢复其使用权,可对其进行恢复记录的操作。 恢复已进行逻辑删除的记录,操作方法是: 方法一:在表“浏览”窗口,把鼠标移到要进行恢复的记录上,对准其删除标记栏,单击左键除去删除标记。 方法二:在“浏览”窗口,打开“表”菜单,选择“恢复记录”;在“恢复记录”窗口,可以通过选择作用范围确定要进行恢复的部分记录;或在 For 文本框中,设置条件表达式来确定恢复的记录;指定范围或满足条件的记录都被除去了删除标记。

Page 69: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

3. 物理删除表中的记录

物理删除就是把无效的记录彻底从磁盘中删除掉。要想彻底删除表中无效的数据。 物理删除表中的记录,操作方法是,打开要进行物理删除操作的表;在表“浏览”窗口,若没有对表中记录做逻辑删除,要对进行物理删除的记录先进行逻辑删除;若已对若干记录做了逻辑删除,数据表中有了逻辑删除记录后,则选择“表”菜单,再选择“彻底删除”,在“系统”窗口,当选择“是”时,数据表中所有带有删除标记的记录将被彻底删除掉。

Page 70: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

1 、逻辑删除(为记录做上删除标记) 格式: DELETE [< 范围 >] [FOR <条件 >] [WHILE <条件 >] 功能:对当前表文件中指定的记录做删除标记。例如: GO 7DELETEGO 4DELETE NEXT 3 LIST

删除和恢复表中的数据的命令

Page 71: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

2 、物理删除(清除带有删除标记的记录)格式: PACK [DBF] [MEMO]功能:省略选择项,该命令将从当前表中删除所有带删除标记的记录。选择 DBF ,表示仅清除逻辑删除的记录而不压缩备注文件,选择MEMO 表示仅压缩备注文件中无用的空间而不清除被逻辑删除的记录。不带任何选择项时, PACK命令既清除逻辑删除的记录,又压缩备注文件。说明:用 PACK命令删除的记录是不可被恢复的。所以在使用 PACK命令前一定要检查删除标记是否加的正确。 例如:PACKLIST

Page 72: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

3 、 恢复带删除标记的记录格式: RECALL [< 范围 >] [FOR <条件 >] [WHILE <条件 >]功能:恢复当前表中带删除标记的记录,即去掉删除标记“ *” 号。当省略所有的选项时,仅恢复当前记录。

例如:RECALL ALLBROW4 、 清除所有记录格式: ZAP功能:从当前表中清除全部记录,仅保留表的结构。ZAP命令与 DELETE ALL 和 PACK 两条命令执行的结果相同,区别在于 ZAP执行的速度更快,当表中的记录很多时尤为明显。

Page 73: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

表的维护

格式一: LIST STRUCTURE [TO PRINTER[PROMPT] |TO FILE< 文本文件名 >]格式二: DISPLAY STRUCTURE [TO PRINTER[PROMPT] |TO FILE< 文本文件名 >]功能:显示当前表结构的有关信息。包括表文件名、记录个数、最后一次修改日期、各字段的字段号、字段名、类型、宽度和小数位,一条记录的字节总数。

1 、显示表结构

Page 74: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

2 、复制表结构 格式: COPY STRUCTURE TO < 表文件名 > [FIELDS < 字段名表 >]功能:将当前打开的表文件结构的部分或全部复制为 <表文件名 > 所指定的一个表的结构。 说明:复制生成的表文件中的结构部分包含哪些字段,以及字段先后顺序都由 FIELDS < 字段名表 > 所规定。若省略该子句,则按字段原来的顺序复制全部字段。 示例: USE student

COPY STRUCTURE TO student3 FIELDS 班级,姓名,家庭住址,电话 USE student3

LIST STRUCTURE

Page 75: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

1 、格式: INSERT [BLANK] [BEFORE]功能:在当前记录之前或之后插入一条或多条新记录。说明:(1)选择 [BEFORE] 子句,新记录插在当前记录之前,当前记录和其后的记录向后顺序移动。(2)选择 [BLANK] 子句,则插入一条空记录。 (3)省略所有可选项,则在当前记录之后插入新记录。

在表中插入记录

Page 76: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

2 、格式一: INSERT INTO < 表文件名 >[(< 字段名 1> [ , < 字段名 2>…])] VALUES (< 表达式 1>[,< 表达式 2>…])格式二: INSERT INTO < 表文件名 > FROM ARRAY < 数组名>| FROM MEMVAR功能:在指定的表文件的表尾追加一个包含指定字段值的记录。格式二用数组或内存变量的值赋值给表文件中各字段。 说明:[(< 字段名 1> [ , < 字段名 2>…])] :指定要插入值的字段名。[VALUES (< 表达式 1>[,< 表达式 2>…])] :新插入记录的字段值。如果省略了 VALUES 子句后的字段名,那么,必须按照定义表结构时的顺序来指定字段值。 FROM MEMVAR :把内存变量的内容插入到与它同名的字段中。若不存在同名的内存变量,则该字段为空。

Page 77: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发【例】在表文件 STUD 的末尾追加三条记录。用表达式方式追加第一条记录INSERT INTO STUD (学号,姓名,性别,班级名,系别代号,地址,出生日期,是否团员 ) VALUES (“011110” “ ” “ ” “, 李建国 , 男 , 计 0121” “, 01”,“ ”湖北武汉 , {09/28/85}, .T.)用数组方式追加第二条记录DIMENSION DATA ( 8 )DATA ( 1 ) =“011103“DATA ( 2 ) =”李宁”DATA ( 3 ) =“女”DATA ( 4 ) =“ 电 0134”DATA ( 5 ) =“02”DATA ( 6 ) =”江西九江”DATA ( 7 ) ={ 05/06/85}DATA ( 8 ) =.F.INSERT INTO STUD FROM ARRAY DATA

Page 78: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发用内存变量方式追加第三条记录学号 =“011202”姓名 =“赵娜”性别 =“女”班级名 =“ 英 0112”系别代号 =“03”地址 =“广西南宁”出生日期 ={02/21/84}是否团员 =.F.INSERT INTO STUD FROM MEMVAR

格式: APPEND FROM < 表文件名 > [FIELDS < 字段列表 >] [FOR <条件 >] 功能:从一个表中读入记录,追加到当前表的尾部。

3 、从另一个表中成批追加记录

Page 79: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

记录值替换命令 格式: REPLACE < 字段名 1> WITH < 表达式 1> [ADDITIVE] [,< 字段名 2> WITH < 表达式 2> [ADDITIVE]…] [< 范围 >] [FOR <条件 >] [WHILE <条件 >] 功能:不进入编辑方式,根据命令中指定的条件和范围,用表达式的值去更新指定字段的内容。 说明:< 字段名 1> : 指定要替换值的字段。WITH < 表达式 1> :指定用来进行替换的表达式或值。WITH后面的表达式的类型必须与 WITH前面的字段类型一致 。

说明: 如果省略 FOR 子句,则整个源文件记录都追加到当前表中。

Page 80: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

文件的显示、复制、删除与更名

1. 文件目录的显示命令格式: DIR|DIRECTORY [< 盘符 >] [<路径 >] [< 文件名 >]

或 DISPLAY FILES [< 盘符 >] [<路径 >] [< 文件名 >]

或 LIST FILES [< 盘符 >] [<路径 >] [< 文件名 >]

示例: DIR

DIR *.DBF

DIR C:\*.*2. 显示文件内容的命令格式: TYPE < 文件名 >

Page 81: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

3. 文件的复制( 1 )任意类型文件的复制 格式: COPY FILE <源文件名 > TO <目标文件名 >

示例: COPY FILE student.dbf TO student1.dbf

COPY FILE student.fpt TO student1.fpt

( 2 )数据表文件的复制 格式: COPY TO <新表文件名 > [< 范围 >] [FIELD

S < 字段名表 >] [FOR < 逻辑表达式 >] [WHILE < 逻辑表达式 >]

示例: USE student

COPY TO student2 FOR 班级 =“软件”

复制表文件需要先关闭

Page 82: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

4. 文件的更名格式: RENAME <源文件名 > TO <新文件名 >

示例: RENAME c:\student.dbf TO stu.dbf

RENAME c:\student.dbf TO stu.fpt

5. 文件的删除格式: ERASE < 文件名 >/? 或 DELETE FILE [< 文件名 >/? ]

示例: ERASE student3.dbf

DELETE FILE student.dbf

Page 83: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

命令方式建立与修改表结构

表结构的建立

【格式】参见 P161

create table< 表名 >([< 字段名 1>< 字段类型 >[( 字段宽度) [,< 小数位数 >])[, 字段名 2>...])

功能:建立一个表,表中含有指定的字段说明:( 1 )字段类型用字符表示。( 2 )命令格式中的小括号是必须的。

Page 84: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

【例】创建一个表 STUD ,它由以下字段组成:学号 ( C , 10 );姓名( C , 8 );性别( C , 2 );班级名( C , 10 );系别代号( C , 2 );地址( C ,50 );出生日期 ( D );是否团员 ( L );备注 ( M )。

CREATE TABLE STUD (学号 C ( 10 ),姓名 C( 10 ),性别 C ( 2 ),班级名 C ( 10 ) , 系别代号 C ( 2 ) ,地址 C ( 50 ) ,出生日期 D, 是否团员 L, 备注 M,照片 G )LIST STRUCTURE

Page 85: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

表结构的修改

【格式】参见 P162-164alter table< 表名 > add|alter[column]< 字段名 >< 字段类型 >[(< 字段宽度 >[,< 小数位数 >])]alter table< 表名 > drop[column]< 字段名 1>|rename column< 字段名 2> to < 字段名 3>功能:修改表的结构说明:( 1 ) add [column] 指定要添加的字段( 2 ) alter[column] 指定要修改的已有字段。( 3 ) drop[column]指定要删除的字段( 4 ) rename column 用于字段的改名

Page 86: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

删除表

【格式】 DROP TALBE < 表名 >

【功能】删除指定表的结构和内容。

说明:如果只是想删除一个表中的所有记录,则应使用 DELETE语句。

Page 87: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

表数据与数组数据转换单个记录转换1) 表中记录的数据转换为数组或内存变量scatter [fields< 字段名表 >|fields like< 通配符 >|fields except< 通配字段名 ][memo]to < 数组名 >[blank]|memvar[blank]功能:将当前记录的字段值按 < 字段名表 >顺序依次送入数组元素中,或依次送入一组内存变量。说明:( 1 )使用 memvar 能将数据复制到一组内存变量之中。( 2 )使用 to< 数组名 > 子句能将数据复制到数组元素。( 3 )若要传送备注型字段值,还需使用 memo选项。

Page 88: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

表数据与数组数据转换2) 数组或内存变量数据转换为表记录gather from < 数组名 >|memvar [fields< 字段名表 |fields like< 通配字段名 >|fields except< 通配字段名 >][memo]功能:将数组或内存变量的数据依次传送到当前记录,以替换相应字段值。说明:( 1 )修改记录前需确定指针的位置( 2 )若数组元素多于字段数,则多出的数组元素不传送;而数组元素少于字段数,则多出的字段其值不会改变。( 3 )内存变量值将传送给与它同名的字段,若某字段无同名有内存变量则不对该字段进行数据替换( 4 )若使用 fields 子句,仅 < 字段名表 > 中的字段才会被数组元素值替代。

Page 89: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

表数据与数组数据转换多个记录转换1) 表中记录的数据转换为数组copy to array< 数组名 >[fields< 字段名表 >][< 范围>][for<条件 >][while<条件功能:将当前表选定的数据复制到数组中,但不复制备注型字段 .说明:( 1 )若命令中指定的数组不存在, VFP会自动建立( 2 )可以将单个记录的数据复制到一维数组中( 3 )可以将当前表的多个记录复制到二维数组中。

Page 90: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

表数据与数组数据转换

2) 数组数据转换为表记录append from array< 数组名 >[for<条件 >][fields< 字段名表达式 >]功能:将满足条件的数组行记录依次追加到当前表中,但忽略备注型字段。说明:( 1 ) < 数组名 > 可以是一维或二维数组。( 2 )若数组列数多于字段数,多余列的数组元素将被忽略;反之,若字段数多于数组列数,则多出来的字段留空。

Page 91: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

1. 限制对字段的访问 限制字段的访问,可以通过设置“字段选择器”来完成。操作方法是打开表,在“工作区属性”窗口,利用“字段选择器”筛选出有用的字段。 2. 限制对记录的访问 在对记录进行访问时,用户可对表中记录的使用范围加以限定,使其只对某一时期或某一问题的有用数据进行操作。 限制对记录的访问方法是在“工作区属性”窗口,选择“数据过滤器”对话框输入记录的筛选条件;或按对话框后面的按钮,进入“表达式生成器”窗口,在这一窗口输入记录的筛选条件。

设置逻辑表(控制字段和记录的访问)

Page 92: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发

设置逻辑表的命令逻辑表的实现:设置字段表——选择字段格式: SET FIELDS TO < 字段名表 >设置过滤器——选择记录格式: SET FILTER TO < 逻辑表达式 >SET FIELDS ON | OFF命令决定字段表是否有效,ON 为有效。不带参数的 SET FILTER TO 命令为取消过滤器的设置。不带参数的 SET FIELDS TO 命令将封锁对任何字段的操作。SET FIELDS TO ALL命令为恢复对所有字段的操作。

Page 93: Visual FoxPro 应用基础与面向对 象程序设计教程

vfp 及其应用系统开发小结

1 、可以通过项目管理器和使用 CREATE命令建立表,也可以通过 COPY STRUCTURE命令从其它表中复制表结构,还可以使用 CREATE带 FROM 子句从一个表结构文件中得到表结构。2 、一个表由表结构和数据构成,没有数据的表是没有意义的。表结构可以通过项目管理器和 MODIFY STRUCTURE命令打开表设计器进行修改。3 、表在使用前要先打开,表中的记录可以用 APPEND 、INSERT INTO 等命令进行追加,也可以使用 DELETE命令进行删除,还可以使用 BROWSE命令打开全屏幕编辑窗口进行修改和浏览,可以用 REPLACE命令替换数据。4 、从表中提取数据时,要对表中的记录进行定位。