《VFP6.0程序设计第2章-Visual-FoxPro-6.0-编程基础.ppt》由会员分享,可在线阅读,更多相关《VFP6.0程序设计第2章-Visual-FoxPro-6.0-编程基础.ppt(65页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2.1 2.1 数据类型数据类型Visual FoxPro 6.0 的数据类型共有如下14种:字符型、货币型、数值型、浮点型、日期型、日期时间型、双精度型、整型、逻辑型、备注型、通用型、字符型(二进制)、备注型(二进制)、对象型 2.1.1 2.1.1 字符型(字符型(Character)Character) 字符型数据是由字母(包括汉字)、数字、空格等任意ASCII码字符组成,其长度为0 254,每个字符占用一个字节。 字符型常量是用单撇号或双撇号括起来的字符串。 如:“abc”、12c、中国等。 2.1.2 2.1.2 货币型(货币型(Currency)Currency) 当使用人民币或美
2、元等货币数据时,可采用货币型数据类型 。货币型数据的取值范围是: -922337203685477.5808 922337203685477.5807 当小数位超过四位时系统自动进行四舍五入处理。每个货币型数据占用8个字节。2.1.3 2.1.3 日期型(日期型(Date)Date) 日期型数据的格式为“yyyy-mm-dd”。其中:yyyy代表年,mm代表月,dd代表日。 日期型数据还可以表示为“mm/dd/yyyy”等格式。 例如:2002-05-23是正确的日期型常量。 2.1.4 2.1.4 日期时间型(日期时间型(Date time)Date time) 除了能够保存日期还能够保存时
3、间,日期时间型数据 存储格式为:yyyymmddhh:mm:ssa|p。其中yyyy代表年,mm代表月,dd代表日,hh代表小时,mm代表分钟,ss代表秒,a|p代表上午或下午。 例如:2002-05-23 10:20:33是正确的日期时间型常量。 注意: 中的数据可以省略。 2.1.5 2.1.5 逻辑型(逻辑型(Logical)Logical) 该数据类型只有真(Ture)和假(False)两种状态。具体输入逻辑型数据时,逻辑真输入“Y”或“T”,逻辑假输入“N”或“F”。2.1.6 2.1.6 数值型与浮点型(数值型与浮点型(Numeric and Float)Numeric and F
4、loat) 当存储诸如年产量、月工资等数值型数据时,可用数值型数据类型。数值型数据由数字09,一个符号(+或-)和一个小数点(.)组成。其长度为120位,每个数据占8个字节。2.1.7 2.1.7 双精度型双精度型 (Double)(Double) 具有比数值型更高的精度,用于数据表中字段的定义,采用固定存储长度的浮点数形式。 双精度型数值的取值范围: /4.94065645841247E-324 /1.79769313486232E308 每个双精度数据占8个字节。2.1.8 2.1.8 整型(整型(Integer)Integer) 当存储诸如“职工人数”等数据时,可用整型数据类型。整型数值
5、没有小数点部分,只能用于表中字段的定义。其取值范围是:21474836472147483646 ,整型字段占4个字节。2.1.9 2.1.9 备注型(备注型(Memo)Memo) 当存储诸如“工作简历”等数据时,可用备注型数据类型。备注型只能用于表中字段的定义,备注内容的多少只受内存可用空间的限制。备注型字段的内容不能直接存放于.dbf文件中,系统将备注的内容存放在扩展名为.fpt的文件中。2.1.10 2.1.10 通用型(通用型(General)General) 通用型是用途十分广泛的数据类型,当存储诸如“照片”、“Word文档”、“Excel工作簿”等OLE对象时,可用通用型数据类型。该
6、类型只能用于表中字段的定义。通用型数据的多少只受内存可用空间的限制。 2.1.11 2.1.11 二进制数据类型二进制数据类型 二进制数据类型包括:字符型(二进制)和备注型(二进制)两种。用于存储任意不经过代码页修改的字符型数据或备注型数据。2.1.12 2.1.12 对象型(对象型(Object)Object) 对象型是用于存储类的具体实例的数据类型。对象型的数据可以存取表单、控件等系统对象,还可以存取用户自定义对象。2.2 2.2 数据容器数据容器 数据容器包括存储数据的变量、数组、字段、记录、对象等,是数据的载体。 2.2.1 常量 2.2.4 字段 2.2.2 变量 2.2.5 记录
7、2.2.3 数组 2.2.6 对象 2.2.1 2.2.1 常量常量 在整个操作过程中其值保持不变的量称为常量。 1.1.常量的类型常量的类型 常量有数值型、字符型、日期型、逻辑型和货币型等多种类型。 例如:2002/08/30是日期型常量。 (1) (1) 数值型常量数值型常量 用整数、小数、科学计数法表示的数都是数值型常量。 例如:3.14159265、1.234、-200、0.313233E3。 (2) (2) 字符型常量字符型常量 用双撇号、单撇号或方括号等定界符括起来的字符串。 例如: “计算机”、 110、 XYZ。 VFP的字符串的最大长度为254个字符。若字符串中含有定界 符,
8、则须用另一种定界符括起来。 例如: I am a student 。 (3 3)日期型常量)日期型常量 日期型常量必须用花括号括起来。 例如:10/12/2002;05/23/2002 12:23am。 空白的日期可表示为或/,空白的日期时间可表示为/:。在日期数据的输入时,若使用符号表示使用严格的日期格式 ,按照YMD(即年、月、日)的格式来解释日期和日期时间。 例如:2002/08/30。 (4 4)逻辑型常量)逻辑型常量 逻辑型常量只有逻辑真和逻辑假两种。.T.、.t.、.Y.、.y.都表示逻辑真;.F.、.f.、.N.、.n.都表示逻辑假。 (5 5)货币型常量)货币型常量 货币型常量
9、以$或¥符号开头,并四舍五入至小数四位。 例如:货币型常量$123.45678,计算结果为$123.4568。 2.2.常量的定义常量的定义 在程序中可用伪编译指令#DEFINE定义常量。 例如: #DEFINE NOEDIT “表中没有记录,不可编辑” 定义了NOEDIT常量之后,在源代码中就可使用NOEDIT 。在编译之后,凡是出现NOEDIT的地方,均用字符串“表中没有记录,不可编辑”取代。 用#DEFINE定义的常量必须用伪编译指令#UNDEF取消,下面的语句 取消了上述的定义。 例如:#UNDEF NOEDIT 2.2.2 2.2.2 变量变量 变量是一种其值可以发生变化的数据。Vi
10、sual FoxPro中的变量有两种:字段变量和内存变量。 字段变量也称为字段名变量,是用户已定义的数据库结构中的任一数据项。本书如没有特别说明,常指内存变量。 内存变量是用变量名来表示的,变量名是内存中存储一个数据的位置名称,可理解为房间名称,而数据放在房间中。在这个存储位置中存放的数据通过这个名称来读和写。 1. 内存变量的命名内存变量的命名 内存变量的命名与字段、文件的命名有所不同, 其规则为:以字母或汉字或下划线开头;由字母、数字、下划线组成;至多128个字符可与系统保留字同名。所 谓系统保留字就是VFP语言中使用的字,例如 :USE命令中的USE就是一个系统保留字。 2. 内存变量的
11、赋值内存变量的赋值 内存变量的赋值有如下几种: (1)利用赋值号“=”赋值; (2)利用STORE命令赋值。 例2-1:在命令窗口中为内存变量V1、V2、V3、V4赋值。 在命令窗口中的赋值如图2-1所示。在图2-1中,第1 条命令将“Visual FoxPro 6.0”字符串 给变量V1;第2条命令将表达式“5*6/3” 值同时给变量V2,V3和V4。图2-1 使用赋值语句的命令窗口 说明:说明: (1) 内存变量赋值时定义了它的值及其数据类型。 (2) STORE语句可同时为多个内存变量赋值,各变量需用逗号 隔开,而采用“=”赋值仅可为一个内存变量赋值。 3. 表达式值的显示命令表达式值的
12、显示命令 在命令窗口或程序中,可用“?”命令显示内存变量、表达式的值。 例2-2:在命令窗口中显示内存变量V1、V2、V3、V4的数值。 具体操作如图2-2所示。从图2-2可以看出: ?:在下一行显示表达式的内容; ? :在当前行显示表达式的内容。 说明说明:中的是必须要输入的,表达式表是指可 用逗号隔开的多个表达式。图2-2 在命令窗口中显示内存变量的值 4. 内存变量的定义内存变量的定义 在Visual FoxPro 6.0的程序中可用LOCAL、PUBLIC和 PRIVATE命令来定义变量的作用范围。 (1) 用“LOCAL 变量名” 定义的变量为局部变量,它只能在当前程序中使用,而不影
13、响其他程序同名变量的原始值。 (2) 用“PUBLIC 变量名”定义的变量为全局变量,在本次Visual FoxPro程序运行期间,所有程序都可以使用这些全局变量。 (3) 用“PRIVATE 变量名”定义的变量为私有变量。 2.2.3 2.2.3 数组数组 数组是一系列数据值的集合,其中每个数据值称为数组中的一个元素,而且每个元素都可以通过一个数值下标来被引用。数组中的元素可以是不同的数据类型。 1.1.数组的定义数组的定义 数组可以理解为特殊的内存变量,在使用前必须定义,其定义的方式有: (1) DECLARE 数组名 定义 数组为私有数组,它只能在当前程序中使用,而不影响其他程序同名数组
14、的原始值。 例如:DECLAER ABC(3) &定义了数组名为abc的一维数组,其下标的上界为3。 (2) DIMENSION 数组名 定义的数组为私有数组,含义同上。 (3) 用 PUBLIC 数组名 定义的数组为全局数组,在本次 Visual FoxPro 运行期间,所有程序都可以使用全局数组。 例如:PUBLIC xyz(2,3) &定义了数组名为xyz的二维数组。 (4) 用 LOCAL 数组名 定义的数组为局部数组。 有关数组的说明: (1) 系统规定数组的下标的下界为1。 例如:通过DECLARE abc(3),定义的数组abc有3个数组元素,分别为abc(1)、abc(2)、a
15、bc(3)。 (2) VFP6.0最多可定义65000个数组,且数组最多可包含65000个元素。 2. 数组的赋值数组的赋值 (1) VFP 6.0允许同一数组的不同元素可取不同数据类型,而且同一元素的前、后类型也允许改变。 (2) 数组的赋值与内存变量的赋值基本相同,可为数组元素单个地赋值,也可以给整个数组的各个元素赋以相同的值。 2.2.4 2.2.4 字段字段 数据是以二维表的方式 在数据库中存储,二维表的列可理解为字段(Fields)。 字段名的定义与内存变量名的定义类同,可用英文字母或汉字定义,不超过10个字符。 字段名可理解为变量,称字段变量。例如:在具有姓名、性别、出生日期等字段
16、的人员登记表中,姓名是字段名,称为字段变量,随着记录指针的移动,姓名所代表的值是变动的。 字段数据类型的定义可有13种,通常情况下,编号、姓名、性别等字段定义为字符型;工资字段定义为数值型;出生日期定义为日期型等等。 2.2.5 2.2.5 记录记录 当数据在二维表上存储时,二维表中的行可理解为记录(Records),记录是字段的集合,也是构成表的基本单位。一条记录最多可以有255个字段,同一个数据表中的记录具有相同的结构,即具有相同的字段名、字段类型、字段宽度等。一个二维表中的记录数最多可达到10亿条。 2.2.62.2.6对象对象 Visual FoxPro 6.0 的对象可以是窗口、表单
17、、控件、用户自定义对象等。合理的运用对象,通过代码的重用、对象的继承,能够加快系统开发的进程。用户可以通过对象的事件、属性和方法来处理对象。 2.3 2.3 操作符和表达式操作符和表达式2.3.1 操作符操作符2.3.2 表达式表达式 2.3.1 操操 作作 符符 1. 算术操作符2. 关系操作符3. 逻辑操作符4. 字符操作符5. 日期时间操作符6. 类和对象操作符 1. 算术操作符算术操作符 算术操作符的操作对象必须是数值,操作的结果也是数值。 操作顺序是先乘方、再乘除与取余、后加减。同一级别的操作顺序为从左向右。算术操作符的意义及应用如表2-1所示。 2. 关系操作符关系操作符 关系操作
18、符的操作对象的数据类型必须一致,操作比较的结果 是逻辑值。数值型数据按数值大小进行比较;日期型数据按年、月、日的顺序进行比较;字符型数据按相应位置上两个字符的ASCII码的大小进行比较。表2-1 算术操作符及应用举例操作符 意 义应用举例* , 乘 幂 3*4,34 &81 *,/乘,除 3*4/2 &6 %模运算(取余) 30%5 &0 +,_加,减 3+4-2 &5关系操作符的比较意义及其应用如表2-2所示。表2-2 关系操作符比较意义及应用举例操作符意义应用举例小于10大于1016 &.F.=等于10=10 &.T.,#,!=不等于1012 &.T.=小于等于10=小于等于10=8 &.
19、T.= =完全相等“a”=“b” &.F.$包含于“zha”$”zha”&.T. 表2-3 逻辑操作符的意义及其应用举例 3. 逻辑操作符逻辑操作符 逻辑操作符的操作对象是逻辑值,运算结果也是逻辑值。若操作数不符合要求,会出现“操作符/操作数不一致”的错误提示。关系操作常用来描述某种条件,而逻辑操作常用来描述复合条件。若两个条件中只要有一个满足条件即可,则用OR运算;若两个条件中必须同时成立才算成立,则用AND运算;至于NOT则用于否定一个条件。逻辑操作符的含义及其应用举例如表2-3所示。 操作符意义应用举例.OR.逻辑或32.OR.4=5&.T.AND.逻辑与32.AND.4=5&.F.NO
20、T.逻辑非.NOT.”BC”$”ABCD” &.T. 4. 字符操作符字符操作符 字符操作符用于连接两个字符串,有“+”和“-”两个运算符,其含义和应用举例如表2-4所示。 5. 日期时间操作符日期时间操作符 日期时间操作符有“+”和“-”两个,其含义和应用举例如表2-5所示。 表2-4 字符操作符的意义及其应用举例 表2-5 日期操作符的意义及其应用举例操作符意义应用举例+连接两个字符型数据a +b &a b-删除尾部空格后连接两个字符型数据a -b &ab操作符意义应用举例% +日期相加05/16/2002+10 &05/26/2002% -日期相减05/16/2002-10 &05/06
21、/2002 6. 类和对象操作符类和对象操作符 类和对象操作符有“.” 和“:”两个,其含义和应用举例如表2-6 所示。 表2-6 类和对象操作符的意义及其应用举例操作符意义应用举例.点操作符。用于对象符的意义及其应用举例Thisform.cmd2.name:作用域操作符。用于在子类中调用父类中调用父类的方法Thisform:click 2.3.2 2.3.2 表达式表达式1.算术表达式2.字符表达式3.日期表达式4.关系表达式5.逻辑表达式6.名称表达式 1. 算术表达式算术表达式 算术表达式是由算术操作符将数值型常量、数值型变量或数组元素、数值型字段、返回数值型数据的函数连接成的式子。 例
22、如:(11+22)*2/3 &结果应为 22 2. 字符表达式字符表达式 字符表达式是由字符操作符将字符型常量、字符型变量或数组元素、字符型字段、返回字符型数值的函数连接成的式子。 例如: “abc ”+“def” &结果应为“abc def” 3. 日期表达式日期表达式 日期表达式是由日期操作符将日期(日期时间)型常量、日期(日期时间)型变量或数组元素、日期(日期时间)型字段、返回日期(日期时间)型数值的函数连接成的式子。 例如:05/16/2002+30 &结果应为06/15/2002 05/16/2002-05/16/2001 &结果应为365 4. 关系表达式关系表达式 关系表达式是由
23、关系操作符将数值型、字符型、日期型三种类型的常量、变量或数组元素、字段、函数连接构成的式子。 例如: 姓名=“张三” &姓名为字符型字段 工资1800 &工资为数值型字段 “ABCD”=“CDEF” &结果应为.T. 5. 逻辑表达式逻辑表达式 逻辑表达式是由逻辑操作符将逻辑型常量(.T.或.F.)、逻辑型变量或数组元素、逻辑型字段、返回逻辑型数据的函数、关系表达式连接的式子。 例如:性别=“女”.and.技术职称=“高级工程师” &性别、技术职称均为字符型字段 是否培训.or.出生日期10/01/1949 &是否培训为逻辑型字段;出生日期为日期型字段 6. 名称表达式名称表达式 这里的名称指
24、数据库表文件名、字段名、表单名、对象名等。所谓名称表达式是指将名称存放到变量或数组元素中并将其用一对括号括起来。 例如: STORE “NAME” TO VAR_NAME &将字段名存入内存变量VAR_NAME中 REPLACE (VAR_NAME) WITH “张三” &用“张三”替换当前记录的NAME字段,字段名NAME被存放到变量VAR_NAME中。 在使用REPLACE命令时名称表达式(VAR_NAME)将用字段名NAME代替变量。 2.4 2.4 命令和函数命令和函数2.4.1 命令2.4.2 函数 2.4.1 2.4.1 命令命令 1. 命令命令 Visual FoxPro 6.0
25、的命令由一个命令关键字开头,后面通常 是被命令的对象构成的命令子句。 2. 命令书写有关约定命令书写有关约定 Visual FoxPro 6.0中的命令不区分大小写,但为了程序的可读性,一般变量采用小写,系统关键字采用大写。 例如:定义一个全局二维数组xyz(2,3), 其书写格式如下: PUBLIC xyz(2,3) 3.Visual FoxPro 6.03.Visual FoxPro 6.0的文件命名方法的文件命名方法 文件名由主文件名和扩展名两部分组成:主文件名最长由10个字符组成,可以包括字母、数字、下划线、连字符,但不能使用“*”、“?”、“/”等。但加入到了数据库中的表和字段名均可
26、以为长文件名,最长为128个字符。扩展名由“.” 加3个字母组成,表示文件类型。 4.4.命令构成的基本格式命令构成的基本格式 1)Visual FoxPro 6.0 的一般语法格式: FORWHILETO FILE /TO PRINTER/TO ARRAY/TO ALL LIKE/EXCEPT IN 可以将命令分为如下八个部分。 命令动词:命令动词:它是VFP的命令名,用来指示计算机要完成的操作 。 表达式表:表达式表:用来指示计算机执行该命令所操作的结果参数。 范围:范围:指定命令可以操作的记录集。范围有下列四种选择: ALLALL:当前表中的全部记录。 NEXT NEXT :从当前记录开
27、始的连续N条记录。 RECORD RECORD :当前表中的第N号记录。 RESTREST:从当前记录开始到最后一条记录为止的所有记录。 FOR :它规定只对满足条件的记录进行操作 。 WHILE :从当前记录开始,按记录顺序从上向下处理,一旦遇到不满足条件的记录,就停止搜索 。 TO子句:子句:它控制操作结果的输出去向。 ALL LIKE/EXCEPT :它指出包括或不包括与通配符相匹配的文件、字段或内存变量。 IN : 它允许在当前工作区操作指定工作区。 例如: (1) quit &退出本系统 (2) use custom &打开名字为custom的数据库表 (3) list for na
28、me=“李明” &显示名字为李明的记录 (4) replace all price with 1.3*price &把当前数据库中所有记 录的price字段都提高到1.3倍 2. .4. .2 函数函数 函数用来完成特定的功能,在Visual FoxPro 中,系统提供了400多种函数,加强了Visual FoxPro语言的功能。 函数由函数名、参数和函数值构成。其中,函数名起标识作用;参数是自变量,用于在程序之间传递信息,一般以表达式的方式存在于函数的括号内;函数值是函数运算结束后的返回值。 根据返回值类型的不同,函数可分为: 数值型函数 字符型函数 日期型函数 逻辑型函数 其他函数VFP有
29、关函数的说明,均遵守如下约定: 中的项目是必须输入的,不可省略; 中的项目是可输可不输,可以省略; /具有或者的意思,其两端只能选一。 1. 数值型函数数值型函数 (1)ABS():求的绝对值。 (2)SQRT( ):求的平方根。 (3)INT():求的整数部分。 (4)ROUND( ,): 四舍五入,保留 位小数。 (5)MAX( ,, ):求N个数值表达式的最大值。 (6)MOD( ,): 返回除以所得的余数。 (7)RAND():返回一个0-1之间的随机数。 2. 字符型函数字符型函数 (1)ASC():求字符的ASCII码值。 (2)CHR() :从表示的ASCII码返回字符。 (3)
30、SUBSTR(, , ) :返回中第位起的长度为的子串。 (4)LEFT( , ) :返回左起长度为 个字符的子串。 (5)RIGHT (, ) :返回右起长度为 个字符的子串。 (6)LEN() :求字符串的长度。 (7)AT(, , ) :返回字符串在中第次出现的位置。 (8)ALLTRIM() :删除字符表达式首尾的空格。 (9)UPPER() :将小写字符大写。 (10)LOWER() :将大写字符转换为小写。 (11)VAL() :将字符串转换为数值。 3. 日期型函数日期型函数 (1)CTOD() :将 转化成日期。 (2)DTOC() :将转化成字符串。 (3)TIME( ) :
31、返回系统当前日期。 (4)DATE( ) :返回系统的当前日期。 (5)YEAR() :返回的年份。 4. 逻辑型函数逻辑型函数 (1)BOF(/):记录指针指向第一条记录之前时返回.T.,否则返回.F.。 (2)EOF (/):记录指针指向最后一条记录之后时返回.T.,否则返回.F. 。 说明: 表示工作区号或工作区别名,用来指定工作区。 5. 其其他他函数函数 (1)DBF():返回工作区中打开表的名称。 (2 )RECNO ():返回工作区中当前记录的记录号。 (3)TYPE(“”):返回表达式类型,以N、C、D、L等表示。 (4)INLIST( , , ):判断是否包含在后面的表达式中
32、,若包含,则返回.T.,否则返回.F.。2.5 2.5 流程控制语句流程控制语句2.5.1 顺序结构 2.5.2 分支选择结构 2.5.3 循环语句2.5.1 顺序结构顺序结构 Visual FoxPro 6.0的程序从主体上来说都是顺序的,程序运行时按照语句排列的先后顺序,依次自动执行。 2.5.2 分支选择结构分支选择结构 一个功能复杂的程序往往都有判断功能,而判断是靠程序实现的,VFP能用条件语句或多分支语句构成分支条件,并根据条件的不同而执行不同的程序段。 条件语句依据其简易程度可分成带ELSE与不带ELSE两种格式。 1. 简单条件语句简单条件语句 其语句格式如下: IF ENDIF
33、 简单条件语句的执行过程,如图2-3所示。计算机首先判断的值,如果为真,则执行IF和ENDIF之间的语句序列(程序段);如果为假,则跳过IF和ENDIF之间的语句序列,执行ENDIF后面的语句。图2-3简单条件语句框图图2-4带ELSE条件语句框图 2. 带带ELSE的条件语句的条件语句 其语句格式如下: IF ELSE ENDIF 带ELSE的条件语句的执行过程如框图2-4所示。计算机首先判断 的值,如果为真则执行语句序列1,否则执行语句序列2,然后执行ENDIF后面的语句。 3. 多分支条件语句多分支条件语句 其语句格式如下: DO CASE CASE CASE CASE OTHERWIS
34、E ENDCASE 执行多分支语句的过程如框图2-5所示。系统首先依次判断条件表达式1、条件表达式2、条件表达式n是否为真,如果某个条件表达式为真,则执行该CASE段的,然后执行ENDCASE后面的语句。 如果所有的条件表达式的值都为假,若有OTHERWISE子句,就执行 ,最后执行ENDCASE后面的语句。图2-5多分支结构框图 在编写分支结构程序时需注意 : ( 1)条件语句中的IF和ENDIF必须配对出现;同样,多分支条件语句中的DOCASE和ENDCASE也必须配对出现。 (2)分支选择结构、循环结构的语句因为不能在一个命令行中输入完毕 ,所以不能在命令窗口中使用这些语句。 (3)为使
35、程序清晰易读,分支选择结构、循环结构应使用缩格书写方式。2.5.3 循环结构循环结构 通过VFP程序解决实际问题时,经常遇到从某一语句开始反复有规律的执行某个程序段的现象,我们把这个程序段称为循环体。按照循环体的执行方式和条件的不同,可将循环分为: 1. 条件循环 (do while型) 2. 步长循环 (for型) 3. 扫描循环 (scan型) 1. 条件循环条件循环 其语句格式如下: DO WHILE ENDDO 当条件表达式为真时,系统反复执行程序段,当条件表达式为假时,终止程序段的执行。因而,如果条件表达式开始就是假时,则程序段不执行。 所以,条件循环的循环体执行次数最少为0次。 在
36、具体执行过程中,首先执行DO WHILE语句判断条件表达式的值,如果为假,则直接执行ENDDO后面的语句;如果为真,则执行程序段,程序段全部执行完毕后,遇到ENDDO 之后,重新执行DO WHILE语句,并重新判断条件表达式的值,根据这个值是否为真来决定是否继续循环。 2. 步长循环步长循环 其语句格式如下: FOR=TO step EXIT LOOP ENDFOR|NEXT 语句格式中的称为循环变量, 、 、 分别称为初值、终值和步长。步长默认为1。 EXIT:将控制从FORENDFOR循环中跳出,转去执行ENDFOR后第一条语句。可把EXIT放在FORENDFOR中任何位置 。 LOOP:
37、将控制直接转回到FOR子句,而不执行LOOP、ENDFOR之间的语句。 具体执行过程中,当步长为正数时,通过比较循环变量与数值表达式2来决定是否执行程序段,当循环变量不大于数值表达式2就执行程序段;当步长为负时,循环变量不小于数值表达式2就执行程序段。程序段遇到ENDFOR或NEXT时,循环变量的值加上步长,然后返回到FOR重新与数值表达式2进行比较以决定是否执行程序段。 3. 扫描循环扫描循环 其语句格式如下: SCANFOR WHILE ENDSCAN 扫描循环针对当前数据库表进行循环, 子句表示记录范围,缺省值为ALL.语句执行时,在 内依次筛选满足FOR条件或WHILE条件的记录,并对
38、找到的记录执行 。2.6 程序文件程序文件 2.6.1 程序文件的创建与编辑2.6.2 程序文件的运行 2.6.1 2.6.1 程序文件的创建与编辑程序文件的创建与编辑 1. 用菜单方式创建程序文件用菜单方式创建程序文件 在Visual FoxPro 6.0 主菜单下,单击【文件】菜单的【新建】命令,出现新建文件类型选择对话框。在对话框中,选择【程序】单选按钮,再选【新建文件】按钮,出现如图2-6所示的程序文件编辑器窗口。用户可以直接在该窗口中输入程序文件的语句。图2-6 程序文件编辑窗口 需要注意的问题: (1)如图2-6所示,系统默认的程序文件名为“程序1.prg”,用户第一次存盘时注意重
39、新命名。 (2)如图2-6所示的程序文件编辑窗口,除可以编辑程序文件外,还可以编辑任意其它类型的文本文件,如批处理文 件.bat、文本文件.txt等,这些文件的扩展名必须由用户输入,若用户不输入,系统默认的扩展名为.prg。 2. 使用命令方式创建程序文件使用命令方式创建程序文件 在Visual FoxPro 6.0 的命令窗口中,建立和修改程序文件统一使用如下命令: MODIFY COMMAND 当不存在时,系统将建立一个新的程序文件,当已经存在时,系统将这个文件打开,用户可以对其进行编辑修改。 2.6.2 2.6.2 程序文件的运行程序文件的运行 程序文件编写完毕后,可以运行程序文件,其方
40、法有菜单方式或命令方式。 1. 使用菜单方式运行程序文件使用菜单方式运行程序文件 单击Visual FoxPro 6.0 的主菜单中的【程序】 | 【运行】命令,弹出一个选择文件的对话框 ,如图2-7所示。用户可选择某一个程序文件后,单击【运行】按钮,即可运行选定的程序文件。 图2-7 程序文件选择窗口 2. 使用命令方式运行程序文件使用命令方式运行程序文件 在命令窗口下,直接键入以下命令: DO 便可执行该程序文件。使用该命令时,需要了解程序文件的执行顺序:首先查找是否有扩展名为.fxp的同名文件,如果找到便将它装入内存执行;如果找不到.fxp文件,则查找具有同名的扩展名为.prg的源程序文
41、件,然后将它编译后建立同名的目标文件,最后执行该目标文件。如果找不到同名目标文件和源程序文件,系统将会弹出一个红色的错误框,告诉用户找不到该文件。 应用举例:编写一个程序,在屏幕上输出“欢迎使用Visual FoxPro 6.0 系统”等字样,其操作步骤如下: (1)在主窗口的命令窗口内键入 : MODIFY COMMAND ABC (2) 系统进入程序编辑窗口,并键入以下命令: Set talk off clear wait “欢迎使用Visual FoxPro 6.0 系统” cancel (3 ) 键入Ctrl+w存盘后,系统回到主菜单。 (4)在命令窗口下键入如下命令并回车 DO ABC 此时,屏幕显示如图2-8所示的提示窗口,说明程序运行正常。欢迎使用Visual FoxPro 6.0系统图2-8 程序运行结果的提示窗口