VFP6应用程序设计结构.ppt_第1页
VFP6应用程序设计结构.ppt_第2页
VFP6应用程序设计结构.ppt_第3页
VFP6应用程序设计结构.ppt_第4页
VFP6应用程序设计结构.ppt_第5页
已阅读5页,还剩206页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第6章 VFP6应用程序设计结构,数据类型和字段类型,1. 字符型(Character) 必须用西文方式的单或双引号括起。 LOCATE FOR 雇员.职务=总经理 学号、书号、电话号码、邮政编码(注意不宜用数值型) 2. 货币型(Currency) cPrice=$100.356,数据类型和字段类型,3. 日期型(Date) birthday=05/20/1980 Dblankdate= 日期格式受SET DATE、SET MARK、SET CENTURY命令的影响 工具/选项/区域 4. 日期时间型(DateTime) tdatetime=4/17/ 2000 8:30pm Tdateon

2、ly=4/17/ 2000 Ttimeonly=8:30pm Tblankdate= : 时间格式受SET HOURS、SET SECONDS命令的影响,数据类型和字段类型,5. 数值型(Numeric) STORE 3.14159 TO pi temp=100.12 6. 逻辑型(Logical) STORE .T. TO found Flag=.F. 7. 通用型(General) 用于在表中存储OLE(对象链接与嵌入)对象,常量:其值不发生变化的量 (1)常量分为四种类型: 数值型(N):直接由数字或+、-、小数点构成。 字符型(C):由字符、汉字组成,需加定界符。如沈阳、”沈阳”、沈阳

3、,同一定界符不能嵌套,如:“AB”CD”,但 AB”CD”是合法的。 日期型(D):用定界。 如00-08-30 或CTOD(“01/08/30”) 逻辑型(L):用.定界。如.t.、.f.,.Y.,.N.等 说明:请注意C、D、L型常量的定界符。注意区分”2010”为字符型常量,而不是数值型常量。逻辑型常量必须用“.”定界。注意各类型数据的宽度。,常量,常量,编译时常量 用 #DEFINE预处理命令定义 如:#DEFINE OPER “输入的数据非法!” #DEFINE pi 3.1415926 不能另作它用,变量: 程序运行中,值可能会发生变化的量 变量是内存中的一个存储单元的位置 变量名

4、是存储位置的符号标识 存储位置中存放的数据在程序操作期间通过该名称来读写,变量,变量分类:,字段名变量 数据表中已定义的数据项 每一个字段可有不同的取值 表有一个记录指针,它指向的记录定义为当前记录,字段名变量的现值,就是当前记录中对应字段的值。 记录指针是可以移动的,因此,字段名的取值随着指针的移动而改变,所以它是变量 内存变量 独立于数据库之外的,变量的创建,赋值格式: Store 表达式 to 变量 变量=表达式 在赋值的同时,完成了变量的创建STORE 3 TO nVar nVar = 3,访问变量,如字段变量和内存变量同名: 则字段变量具有更高的优先权 此时内存变量访问 M.内存变量

5、 M-内存变量,变量作用域,局部变量: 用LOCAL指定局部变量 创建它的文件中使用与修改 不能在更高层与低层中引用 私有变量: 子程序中使用 用PRIVATE指定私有变量(可以与上层同名 ) 全局变量: 用PUBLIC指定全局变量(公共 ) 任何运行的程序都能使用和修改 在命令窗口中创建的任何变量或数组被自动赋予全局属性,字段名变量,数据表中已定义的数据项 每一个字段可有不同的取值 表有一个记录指针,它指向的记录定义为当前记录,字段名变量的现值,就是当前记录中对应字段的值。 记录指针是可以移动的,因此,字段名的取值随着指针的移动而改变,所以它是变量,当前记录:记录指针指向的记录 *表刚打开,

6、当前记录是第一条记录 移动记录指针: GO TOP|BOTTOM|:绝对移动记录指针。 SKIP :相对移动记录指针,移动记录指针,说明: 注意区别命令GO TOP和GO 1,在索引文件打开时,前者把记录指针移到数据库的第一条逻辑记录,而后者为把记录指针移到记录号为1的物理记录上 若库中有记录,执行G0 TOP和GO BOTTOM后,函数BOF()和EOF()的值均为F。使BOF()为真,SKIP-1;使EOF()为真SKIP 若库中无记录,函数BOF()和EOF()的值均为.T.。 SKIP命令无任何选项时,表示向下移动一条记录,多用在对数据库中所有记录逐一处理的循环结构中,在程序填空中经常

7、出现。,移动记录指针实例,Go 1 Skip 2 ? 编号 skip Go bottom ? 编号 Skip 1 ? 编号,内存变量,变量名: 是以汉字、字母、数字或下划线组成的字符串,串长最多为10个字符或5个汉字 变量名必须以字母或汉字开头,下划线必须嵌在变量名中间,但不能嵌入空格符 内存变量分为四种类型: 数值型、字符型、逻辑型和日期型 变量赋值格式: 内存变量=表达式 STORE 表达式=内存变量表 功能:把表达式的值送到内存变量中 例如: A=20 B=100,数组: 名字相同、用下标区分的内存变量称为数组 主要有以下特点: (1)数组元素的类型,由所赋的值来决定 (2)数组变量可以

8、不带下标使用 在赋值语句的右边,表示该数组第一个元素 在赋值语句的左边,表示该数组所有元素 (3)数组和数据表之间可相互转换 即数据表中数据可以转换为数组数据 数组数据也可以转换为数据表中的数据,1.定义数组,数组名的取法和一般的变量名取法相同 定义数组命令: DIMENSION 数组名(,) ,( 命令功能:定义一个或多个内存变量数组。 说明: 最多可有3600个元素,显示内存时只算一个变量 数组下标起始值是1 数组元素隐含的逻辑值为“假” *二维数组,可用一维下标来存取。这是由于在内存中,二维数组元素是按行列次序排列 它们每个元素都可看作单独一个内存变量使用,,数组实例,DIMENSION

9、 b(2,3),? A4 ? A(2,1) ? A6 ? A(2,3),变量: 专用 在程序中用DIMENSION建立的数组为专用 公用 命令窗口下建立的数组为公用 在程序中建立公用的数组用PUBLIC命令 格式为: PUBLIC数组名(,) 例如: DIMENSIOM A(4),B(2,3) 建立一维数组A和二维数组B 二维数组有六个元素: 分别为 B(1,1)、B(1,2)、B(1,3) B(2,1)、B(2,2)、B(2,3),数组的赋值,格式: STORE 表达式 TO 数组名 数组名=表达式 命令功能: 将表达式的值赋给数组变量 上述两个命令是完全等价的 给数组赋值还可用ACCEPT

10、、INPUT、WAIT语句,数组变量的显示,命令格式: LISTDISPLAY MEMORY 命令功能: 显示内存变量(数组变量) 可以用RELEASE和CLEAR MEMORY命令删除掉已定义的数组(整个数组) 可以用SAVE命令同内存变量一起保存到磁盘内存文件(.MEM)中,需要时用RESTORE命令同内存变量一起从磁盘文件中恢复,Iif(),根据逻辑表达式的值,返回两个值中的某一个。 语法:IIF(lExpression, eExpression1, eExpression2) 参数:lExpression指定要计算的逻辑表达式。 eExpression1, eExpression2如果

11、 lExpression 计算结果为“真”(.T.),返回 eExpression1;如果 lExpression 为“假”(.F.),则返回 eExpression2。 返回值类型:字符型、数字型、货币型、日期型或日期时间型 说明 该函数也称作 Immediate IF。它计算一个逻辑表达式的值,然后根据计算结果,返回两个表达式中的一个。如果逻辑表达式的值为“真”(.T.),则 IIF( ) 返回第一个表达式;如果逻辑表达式的值为“假”(.F.),则 IIF( ) 返回第二个表达式。 提示 对于简单的条件表达式,该函数可以代替 IF . ENDIF 语句。在按条件指定报表和标签表达式中的字段

12、内容时 IIF( ) 特别有用。IIF( ) 函数比等价语句 IF . ENDIF 执行速度快得多。,表达式,表达式: 是由常数、变量、函数和运算符组成的一个有物理意义的式子 表达式总有一定的运算结果,即有一个值,所以表达式也是一种数据 表达式分为(表达式结果): 数值表达式 字符表达式 关系表达式 逻辑表达式,表达式的输出命令:,格式: ?, 功能: 计算表达式的值,并在屏幕或打印机上输出 例如: ? 4*6+10 34,1.数值表达式,数值表达式: 是由算术运算符和数值型常数、变量、函数组成。 运算结果为数值型数据。 算术运算符为:+ - * ( ) 优先次序: 括号、函数、乘方、乘除和加

13、减,同级运算从左到右依次进行 如: 362EXP(8) LOG(20) 25,2.字符表达式,字符表达式: 是由字符运算符和字符型常数(即用定界符括起来的字符串)、变量、函数组成 运算结果是字符型数据 三种字符串运算: *完全连接运算 格式:字符串1字符串2 功能:将两个字符串连接为一个字符串。 例如: ? THIS IS A PEN THIS IS A PEN *完全连接是指两个字符串合并,即包括空格在内的字符串中所有字符相加。,不完全连接运算 格式:字符串1字符串2 功能: 也是将两个字符串连接为一个字符串,但是删去字符串1尾部的空格符 例如: ? “首都*北京 首都:北京* 注:串1尾部

14、的空格移到串1后,包含运算,格式: 串1串2 功能: 如串1包含在串2中,表达式的值为真,否则为假 例如: ABACBTE结果为假(F) ABABCDE结果为真(T) 注: 包含运算是字符串的关系运算 关系运算返回的是逻辑值,3.关系表达式,关系表达式: 是由关系运算符与字符表达式或数值表达式组成 结果是一个逻辑值 关系成立结果取真(.T.),不成立结果取假(F) 关系运算符两边的数据类型要一致,(同类型) 关系运算符有6种: =, 、#或!= 注: 字符的比较是ASCII码值的大小 空格100 ? CHCA,4.逻辑表达式,逻辑表达式: 是由逻辑常数、变量和函数用逻辑运算符连接而成 条件判断

15、满足结果为真(.T.),否则结果为假(.F.) 逻辑运算符有三种: .AND 逻辑与(且)(两都成立才为真) .OR 逻辑或(只要有一个成立为真) .NOT.或! 逻辑非 *逻辑运算符的优先级别为:.NOT. .AND. .OR.,运算符的优先顺序,表达式中运算符的优先顺序: 由高到低依次为:算术或字符或日期运算关系运算逻辑运算 相同优先级的运算按从左到右的顺序计算 例如: 性别男AND职称副教授 ? (10+3)5.and.”ab”$”abcde”,表达式例: 算术表达式:结果为数值型。如3+2 字符表达式:结果为字符型。如 Good +Morning 或Good -Morning 日期表达

16、式:结果为日期或数值。如DATE()+5 、DATE()-5 或DATE()-00-08-20 关系表达式:结果为逻辑型。如”AB”$”ABCD”、”AB”2 .AND. .NOT.56 说明: 在日期型表达式中,两个日期表达式相减,结果为数值,表示两日期之间相差的天数,两日期表达式相加,属非法表达式;一个日期表达式与一个数值表达式相加,结果为日期型表达式,表示从当前日期往后数N天;一个日期表达式与一数值表达式相减,表示从当前日期向前数N天。 逻辑表达式包含关系表达式,关系表达式中包含算术表达式。注意,关系表达式与逻辑表达式的结果都为逻辑型。,命令格式,由两部分组成 命令动词,表示应执行的操作

17、 若干个短语,对操作提供某些限制性说明。 一般格式如下: 命令动词 短语 如:copy to aa for 性别=“男”,与表有关的命令,与表有关的命令格式: 命令动词 范围 FOR FIELDS 命令中的FOR、FIELDS是关键字,用户不得随意更改。 约定: 表示可选项,不选用系统的默认值 表示必选项 :表示对表记录操作的范围 ALL 表示全体记录 NEXT N 当前记录开始后续共计 N 个记录 RECORD N 特指第 N 号记录。 REST 从当前记录开始到表尾的所有记录 FOR条件 选择操作 FIELDS 投影操作,操作释例,Go 3 Disp all Go 2 Disp next

18、2 Go 3 Disp rest Go 3 Disp record 5,命令书写的规则,命令以命令动词,与动词短语的顺序无关 用空格来分隔各单词短语 命令的最长是254个字符,用分行符;分行 命令动词和关键字可以缩写为前四个字符 如MODIFY STRUCTURE可写为MODI STRU 不分大小写,可以混合使用 变量名、字段名和文件名时,应避免与命令动词和关键字同名,以免运行时发生混乱,End,6.2 数据库的操作命令,常用的操作命令 包括 数据库的建立 打开 设置 关闭 删除,1.创建数据库 CREATE DATABASE 命令 命令格式: CREATE DATABASE 数据库名|? 命

19、令功能:用于创建一个数据库,说明:,(1)数据库名已经存在,则提示新的路径或文件名 (2)参数“?”或无参数,弹出对话框,位置及名称 (3)数据库以.DBC为其扩展名,以.DCT为备注文件,索引文件则以.DCX为扩展名 (4)该命令以独占方式创建并打开一个数据库 例如:创建一个名为t1.dbc的数据库,并显示有关数据库的信息 CREATE DATABASE t1 创建数据库t1 CLEAR 清除屏幕 DISPLAY DATABASE 显示数据库t1信息,2.打开数据库,用OPEN DATABASE命令打开已经存在的数据库 命令格式: OPEN DATABASE 数据库名|? 命令功能: 打开一

20、个指定的数据库。 说明:,6.2 数据库的操作命令,常用的操作命令 包括 数据库的建立 打开 设置 关闭 删除,1.创建数据库 CREATE DATABASE 命令 命令格式: CREATE DATABASE 数据库名|? 命令功能:用于创建一个数据库,说明:,(1)数据库名已经存在,则提示新的路径或文件名 (2)参数“?”或无参数,弹出对话框,位置及名称 (3)数据库以.DBC为其扩展名,以.DCT为备注文件,索引文件则以.DCX为扩展名 例如:创建一个名为t1.dbc的数据库,并显示有关数据库的信息 CREATE DATABASE t1 创建数据库t1 CLEAR 清除屏幕 DISPLAY

21、 DATABASE 显示数据库t1信息,2.打开数据库,用OPEN DATABASE命令打开已经存在的数据库 命令格式: OPEN DATABASE 数据库名|? 命令功能: 打开一个指定的数据库。,3.设置当前数据库,SET DATABASE TO命令 命令格式: SET DATABASE TO 数据库名 命令功能: 设置当前数据库。,说明:,(1)数据库名为当前要打开的数据库名称 (2)略名,弹出一个显库对话框 例如: OPEN DATABASE t1 库t1.dbc OPEN DATABASE t2 库t2.dbc DISPLAY DATABASE 显示当库t2.dbc的信息 SET D

22、ATABASE TO t1 置t1为当前库 DILPLAY DATABASE 显示当库t1的信息 SET DATABASE TO t2 设t2为当库 DISPLAY DATABASE 显库t2.dbc的信息,4.关闭数据库,命令格式: CLOSE DATABASE ALL 命令功能: 关闭数据库。 说明: ALL用于关闭所有打开的数据库 如果没有指定此参数,则将关闭当前数据库,5.删除数据库,命令格式: DELETE DATABASE 数据库名|? DELETETABLESRECYCLE 命令功能: 删除数据库,说明,要删除的数据库文件必须保证处于非使用状态 ?弹出一个“删除”对话框 DELE

23、TE TABLES删除数据库中包含的表和包含这些表的数据库 RECYCLE文件放入回收站中,可恢复删除的文件 SET SAFETY的值为ON,删文件前会提示用户 SET SAFTY设置为OFF,VFP将不做任何提示,表的操作命令,包括: 创建表 打开一个存在的表 将一个自由表加入到 数据库中去 从数据库中移去表 显示表中信息 关闭 删除表,1.创建表,命令格式: CREATE 数据库表名 命令功能: 创建数据库表或自由表,其扩展名为.dbf 如有数据库打开,则该表是数据库表,且已加入到该数据库中 否则,该表是自由表,例如: 新建一个表a1,将它包含到数据库t1中 OPEN DATABASE t

24、1 打开数据库t1 CREATE TABLE a1 创建表a1.dbf,将其包含到数据库t1中,2.将表加入到数据库中,命令格式: ADD TABLE自由表名|? 命令功能: 将自由表加到指定数据库中去,说明:,自由表名指定要加入到一个已打开的数据库中的自由表的名称 不指定名称或“?”作为参数,弹出对话框 表一旦加入到库中,不再是自由 可以通过REMOVE TABLE命令将该表从数据库中移出,使之成为新的自由表,库中表的一些规定:,必须是一个有效的.DBF文件 不能与数据库中已存在的表重名 一个表只能属于一个数据库,不能再成为其他数据库中的表,3.将表从数据库中移出,命令格式: REMOVE

25、TABLE 数据库表名|? DELETERECYCLE 命令功能: 将数据库中的数据库表移出去 使之成为自由表或删除表,说明:,参数?或忽略数据库表名时,对话框 参数DELETE 用于指定将表从数据库和磁盘中删除 RECYCLE参数,先放回收站中,不立即删,可恢复 与表相连的主索引、默认值及有效性规则将被删除 当一个表从数据库中移出时,它将变成一个自由表,例如,建2个表并加入到库t1中,而后执行删除命令 OPEN DATABASE t1 打开数据库 CREATE c1 创建表c1.dbf CREATE c2 创建表c2.dbf CLEAR 清屏幕 DISPLAY DATABASE 显示当前数据

26、库信息 REMOVE TABLE c2 移动数据库表c2.dbf CLEAR 清屏幕 DISPLAY DATABASE 显示当前数据库信息 ADD TABLE c2 将表c2添加到当前库中 DELETE DATABASE t1 删除数据库t1,4.显示表的结构,命令格式: LIST STRUCTURE TO PRINTER|TO FILE 文件名 命令功能:显示表的结构 说明: (1)有TO PRINTER选项时,将屏幕显示的信息输出到打印机 (2)有TO FILE 文件名选项时,将屏幕显示的信息输出到指定的文件,5.修改表的结构,命令格式: ALT TABLE 表名 命令功能: 修改表的结构

27、,6.输入记录,表的结构建立,没有数据,是空表 命令格式: APPEND BLANK 命令功能: 从表的末尾追加记录 BLANK,末尾追加一空记录,不出现APPEND输入记录窗口,7.打开表?,命令格式: USE 表名 命令功能: 打开一个和多个已经存在的表 说明: 表名用于指定需要打开表的名称,8.关闭表,命令格式: USE CLOSE TABLES ALL 命令功能: USE关闭已打开的表 CLOSE TABLES ALL可以同时关闭多个表。 说明: 及时关闭,从内存上卸下表,以防止操作不当,*记录指针定位,用RECNO()函数,可测试当前记录指针 绝对指针定位 命令格式: GO TO T

28、OP GO TO BOTTOM GO TO RECORD N GO TO 数值表达式 GO TO N 命令功能: 使记录指针指向表中的指定记录,说明,GO TOP 定位第一个逻辑记录 GO BOTTOM 定位最后一个逻辑记录 GO RECORD N 指针定位到表的N号记录 GO数值表达式定到表达式值取整后的记录 GO N 指针定位到N号记录 当选用参数N时,GO、TO均可省略不写,2.相对指针转移,命令格式: SKIP +-数值表达式 命令功能: 相对当前位置按表达式值移动若干个记录 值为正时,指针向后移 为负值时,指针向前移 缺省选择项时指针向后移一个记录 说明: GO绝对定位,都定位到所指

29、的记录 SKIP是相对定位命令, 以当前记录为中心,按给定的表达式值相对地移动若干记录,记录的显示,两种格式: LIST 范围FIELDS字段名表FOR条件TO PRINTER OFFTO FILE文件名NOCONSOLENOOPTIMIZE DISPLAY 范围FIELDS字段名表FOR条件TO P RINTEROFFTO FILE文件名NOCONSOLENOOPTIMIZE,说明:,LIST=DISPLAY ALL显示的全部记录 OFF时,不显示记录号 有FOR条件显示出满足条件表达式的记录 FIELDS字段名表,显示指定字段 有范围,显示指定范围 TO PRINTER,显示的结果送到打印

30、机输出 TO FILE文件名,结果输出到文件 NOCONSOLE,不将显示结果送到主窗口和TO PRINTERTO FILE 文件名一起使用 NOOPTIMIZE短语时,不使用RUSHMORE优化技术,差别有两点:,LIST缺省范围是显示全体记录 DISPLAY缺省当前记录 LIST具有连续显示特点 DISPLAY具有分页显示,满一页就停止,并提示按任一键继续显示下页内容,例6.1,将ZGDA表中职称是讲师的、年龄在45岁以下的记录显示出来,并且只列出 姓名、年龄、职称三个字段 USE ZGDA LIST FIELDS 姓名,年龄,职称 FOR 职称“讲师”AND年龄45,【例6.2】 将ZG

31、DA表的后4个记录显示出来,并且将第1和第5个记录分别显示出来 【例6.3】 将ZGDA表中1995年1月1日以后参加工作的记录显示出来 【例6.4】 将ZGDA表的后4个记录中性别是女的记录显示出来,6.3 表的修改和维护,1.EDIT和CHANGE命令 格式分别是: EDIT 范围 FIELDS 字段名表 FOR 条件 CHANGE 范围 FIELDS 字段名表 FOR 条件 命令功能: 进入全屏幕编辑方式,对当前打开的表的记录进行修改,说明:,缺省所有的选择项,从当前记录开始进行修改 FIELDS字段名表,对列出的字段进行修 改 范围和FOR条件,范围内满足条件的记录进行修改 缺省了范围

32、是指全部记录,2.BROWSE命令,命令格式: BROWSE FIELDS 字段名表 命令功能: 该命令以窗口方式显示当前表的内容,并可以对窗口内的数据按需要进行修改 使用EDIT命令和CHANGE命令时 一行只显示一个字段 每屏幕只能显示一个记录 VFP系统提供了窗口显示与修改命 BROWSE,3.REPLACE命令*,命令格式: REPLACE 范围 字段1 WITH 表达式1ADDITIVE,字段2 WITH 表达式2ADDITIVE FOR 条件 命令功能: 成批地、快速地修改满足给定条件的一批记录 修改的方法是 用WITH后面表达式的值替换WITH前面的字段内容,说明:,(1) 系统

33、不进入全屏幕编辑方式 (2) 范围和FOR条件,修改范围内满足条件的所有记录 缺省范围,当前记录 (3)REPLACE命令可以对备注字段的数据进行替换 可用关键字ADDITIVE,追加到备注的文本内容的尾部 否则表达式的内容覆盖备注字段中的原有内容 (4)字段名和表达式的数据类型必须相同 数值字段,表达式的值大于字段宽度时,四舍五入运算,或采取科学计数法,【例6.5】,在表DA.DBF中,对工资小于800元的职工各增加10元 USE DA REPLACE ALL 工资 WITH 工资+10 FOR 工资800 USE,记录的插入与删除,1.记录的插入 APPEND 命令是从表末尾增加新记录 命

34、令格式: INSERT BLANK BEFORE 命令功能: 在当前表中的当前记录之前或之后插入记录,说明:,(1)没有选择项,是在当前记录之后插入一个记录 (2)如果有BEFORE选择项,是在当前记录之前插入一个记录 (3)如果有BLANK选择项,是在当前记录之后插入一个空白记录,2.记录的删除,分两步进行: 是对欲删除的记录打删除标记 “*”,称为逻辑删除 必要时,可恢复,即把“*”去掉 是把带有删除标记的记录真正删除,称为永久性删除记录或称物理删除记录,(1)逻辑删除记录命令,命令格式: DELETE 范围 FOR条件 命令功能: 指定范围内满足条件的那些记录加上删除标记“*” 说明:

35、若省略两个选择项,则给当前记录打删除标记“*” 当用命令 SET DELETE ON 在显示或有关操作时,作了删除标记的记录就不起作用,如同真正删除这些记录一样,【例6.6】,将表DADBF的4号记录打上删除标记 USE DA DELETE RECORD 4 LIST,(2)记录恢复删除命令,命令格式: RECALL 范围 FOR条件 命令功能: 将规定范围内的、符合条件的、已作了删除标记的记录恢复。即把删除 标记“*”去掉,(3)永久性删除记录命令,命令格式: PACK 命令功能: 将带有删除标记的记录从当前表中删除 并重新调整表的记录号 说明: 执行PACK命令后,删除的记录在表中不再存在

36、,并且不能被恢复,称永久性删除记录,(4)删除表的全部记录命令,命令格式: ZAP 命令功能: 将已打开的表中的全部记录一次性删除 说明: (1)执行此命令,只是删除全部记录,而表的结构仍然保留 (2)该命令等效于执行了DELETE ALL命令后再执行PACK命令,表的排序,按一定的条件在已有的表之外产生一个新的有序表 ,从而实现数据的重新组织 命令格式: SORT TO 文件名 ON 字段名1 ACD,字段名2ACDASCENDING|DESCENDING 范围FOR条件FIELDS 字段名表 命令功能:对当前表中指定范围内满足条件的记录,根据关键字段按字符顺序 、数值大小或时间顺序进行重新

37、排列,生成一个新的表,说明:,新生成的表,扩展名为.DBF 不选择范围和条件时,对全部记录进行排序 不指定FIELDS,新表结构全部字段组成 多重排序,即先对字段名1 排序,对于记录相同的记录,再按字段名2排序,依此类推 A和D分别表示升序和降序,升序符号可以省略不写 C使排序时不分大小写字母 C可以和A或D连用,两种选择可以只用一条斜线,如AC或 DC (6)ASCENDING和DESCENDING仅对那些没有指定A和D的关键字段起作用,关键字段默认按升序 A排序,【例6.7】,将表A1.DBF按工资排序,排序后的表名为GZ.DBF USE A1 SORT ON 工资 TO GZ USE G

38、Z LIST,索引文件,表排序的方法: 分类方法 索引 两种索引文件类型 一种为单入口索引文件 其扩展名为.IDX索引文件 复合索引文件 其扩展名为.CDX索引文件 索引就像一本书的目录索引可使读者快速找到所需的内容一样,(1)单入口索引文件,是与FoxBASE表索引文件相兼容的索引文件 一个表可以有多个这样的索引文件 其扩展名为.IDX索引文件,(2)复合索引文件 包含许多索引 每个索引都有一个TAG标志 复合索引文件就好像是许多单个索引的集合 1)结构复合索引文件: 这样的索引文件与相关的表同名 但扩展名为.CDX 当表被打开时,索引文件也自动被打开 并能自动及时更新 2)独立型复合索引文

39、件: 这样的索引文件不与相关的表同名 且不会随相关表的打开而自动打开,2.建立索引文件,命令格式: INDEX ON 索引表达式 TO IDX索引文件名|TAG标志名OFCDX索引文件名FOR条件COMPACTASCENDING|DESCENDINGUNIQUEADDITIVE 命令的功能: 对满足指定条件的记录按索引表达式进行索引, 形成.IDX索引文件或.CDX索引文件。,说明:,如有关键字TAG,表示建立复合索引 TAG关键字标志名为复合索引一个索引标志 选择OFCDX索引文件名时,可建立独立型复合索引文件 缺省时可建立与表 同名的结构化复合索引文件 有FOR条件时,按满足条件的记录进行

40、索引 ASCENDING任选项,排序方式是按升序 DESCENDING任选项,排 序方式是按降序 默认时为升序,说明:,索引表达式中的字段名可以是数值型、字符型或日期型 表达式由多个字段组成时,必须转换成相同的数据类型 转换可使用VAL()、STR()、CTOD()、DTOC ()函数。如果索引表达式的字段类型一致时,必须用“+”连接。 选择COMPACT项时,在建立单入口索引时使用,表示可生成一个压缩的单独索引文件 复合索引文件自动采用压缩方式。 UNIQUE项时,多记录有相同的关键字表达式值,第一个记录有效,包含在索引文件中 若未指定UNIQUE,则所有记录均包含在索引文件中 ADDITI

41、VE关键字时,决定是否在建立新的索引时关闭已打开的索引文件。 选择关键字表示不关闭,否则表示关闭所有已打开的索引文件,3.打开和关闭索引文件,两种命令 1)用USE打开表和索引文件 2)用SET INDEX打开索引文件,1)用USE打开表和索引文件,命令格式: USE 表文件名 INDEX 索引文件名表|?ORDER数值表达式|IDX文件名 命令功能: 本命令将索引文件连同表主文件一起打开 执行此命令后,关闭当前工作 区前使用的表及索引文件,2)用SET INDEX打开索引文件,命令格式 SET INDEX TO 索引文件名表|?ADDITIVE 命令功能: 打开表主文件后,用此命令打开已建立

42、的索引文件 说明: 凡与表一同打开的多个索引文件,用APPEND、BROWSE、EDIT及REP LACE命令修改时,均会自动地修改所有的索引文件 结构化复合索引文件随着表的打开而打开,随着表的关闭而关闭 对于单入口索引 文件和独立型索引文件可以用上述命令,该命令可以一次打开一个或多个索引文件,(2)确定主控索引,命令格式: SET ORDER TO 数值表达式|IDX文件名|TAG标志名OFCDX索引文件名ASCENDING|DESCENDING 一个表可以同时打开多个索引文件 但是只有一个索引起作用,称之为主索引,(3)关闭索引文件,命令格式: 1)USE 2)SET INDEX TO 3

43、)CLOSE INDEX 命令功能: 关闭当前工作区内已打开的索引文件。 说明: 格式1)可以关闭表及其索引文件 格式2)与格式3)功能相同,可以关闭.IDX文件与独立型复合索引文件,但不能关闭结构化复合索引文件,【例6.8】,有一个表A1.DBF,按工资建立单入口的索引文件(.IDX文件), 其文件名为GZ.IDX。 USE A1 INDEX ON 工资 TO GZ 6 records indexed SET INDEX TO GZ LIST,4.添加记录与重新索引,命令格式: REINDEX 命令功能: 重新建立已索引过的索引文件。 说明: 已有索引文件,在输入记录前,并没有打开 需要再一

44、次建立索引 文件 使用该命令时,必须先打开索引文件,数据检索,数据检索的命令: 顺序检索 LOCATE CONTINUE 索引检索 FIND SEEK,1.查找命令FIND,命令格式: FIND 字符串数字 命令功能: 从表的索引文件中查找指定字符串或与数字相匹配的记录 找到: 将记录指针指向 函数FOUND()返回逻辑真值 未找到: 指向文件尾,eof()为真 此时的记录号为表的最大记录号+1 函数FOUND()返回逻辑假值,说明:,检索值可以是字符串和数字,但不能是表达式 若使用字符型内存变量检索时,必须使用宏代换N=N+1 ENDDO ? “S=”,S,多重循环中LOOP和EXIT的作用

45、域,循环的嵌套: 如果在一个循环程序的循环体内又包含着另一些循环,就构成了多层次(多重)循环 LOOP和EXIT语句放在哪一个层次,它就只能在那个层次中起作用, 这个层次就是它的作用域 P121,DO WHILE DO WHILE LOOP EXIT ENDDO LOOP EXIT ENDDO,FORENDFOR循环,语句格式: FOR 循环变量=初值TO终值STEP步长 命令序列 LOOP EXIT ENDFOR 语句功能: 循环过程是首先将初值赋于循环变量,每当执行一次循环,循环变量增加一个步长,直到循环变量值大于终值时结束循环 LOOP语句用于转到FOR语句继续执行循环 EXIT用于跳出

46、循环,转到ENDFOR后面命令执行,例,1、输出几个星 For n=1 to 11 step 2 ? “*” 2、输出几个星 For n=1 to 10 -1 ? “*” 3、输出几个星 For n=1 to 10 ? “*”,【例6.28】最大值,找出表中年龄最大的记录 SET TALK OFF USE ZGDA MAX=年龄 J=RECCOUNT() 指表中所含的记录的总数 FOR I=1 TO J IF MAX 年龄 MAX=年龄 RSC=RECNO() ENDIF SKIP ENDFOR USE ? RSC,SCANENDSCAN循环,语句格式: SCAN范围FOR条件表达式 命令序列

47、 LOOP EXIT ENDSCAN,语句功能:,SCAN的功能是在表中移动并重执行命令序列 循环开始时记录指针指向满足条件的第一个记录 执行到ENDSCAN时,记录指针指向第二个满足条件记录 控制又回到SCAN循环的开始,直到所有记录处理完,循环也就结束了,【例6.29】(改为do while),查找职称为“讲师”的记录,计算满足条件的记录个数(工资的总和) SET TALK OFF USE ZGDA S=0 N=0 SCAN FOR 职称=讲师 DISPLAY S=S+工资 N=N+1 ENDSCAN USE RETURN,【例6.30】 (改为do while),用SCANENDSCAN

48、命令显示表的记录。 USE ZGDA SCAN DISPLAY ENDSCAN RETURN 【例6.31】用FOR.ENDFOR命令显示表的记录 USE ZGDA FOR I=1 TO 5 GO I DISPLAY ENDFOR RETURN,6.10 过程及其调用,过程 程序设计时,常常有些运算或处理程序是相同的 可以将重复出现的或能单独使用的程序写成可供其他程序调用的独立程序段称为子程序,在VFP中也称为过程 过程与主程序 同样的方法建立 、运行 同样的文件形式存放在磁盘上 有相同的扩展名(.PRG) 惟一不同的是,一个过程中至少应有一条返回语句,返回语句,语句格式: RETURN TO

49、 MASTER 语句功能: 结束过程的运行 使执行返回调用它的主程序或最高一级主程序中,说明:,TO MASTER是在过程嵌套中使用 无此项时,回到调用它的原处去; 有此项时,执行回到最高一级主程序 若直接运行一个程序,执行到RETURN时,则返回到VFP的命令状态 在命令文件中用DO语句来运行另一个命令文件,这就是过程调用 被调用的命令文件必须有RETURN语句,以返回调用它的主程序中,过程文件,过程文件是一种包含有过程的命令文件 可以容纳128个过程 过程文件被打开后,系统就能找到该文件所容纳的各个过程所在位置 过程文件也是命令文件,建立方法与命令文件一样,扩展名也是.PRG 一个程序可以

50、有多个过程文件,但同一时间只能打开一个过程文件 每个独立子过程的开始应该用PROCEDURE 过程名进行标识 过程名是以字母开头的字符串(包含字母、数字及下划线),最多可达8个字符,1.过程文件的建立,语句格式: PROCEDURE 子过程名 语句组 RETURN,2.打开过程文件,语句格式: SET PROCEDURE TO 过程文件名 语句功能: 打开过程文件名所指定的过程文件 说明: 调用过程文件仍使用DO语句,3.关闭过程文件,在主程序结束之前应用下面语句关闭过程文件 语句格式: CLOSE PROCEDURE 语句功能: 关闭已打开的过程文件。,带参数的过程调用,允许在调用命令和被调

51、用过程中设置数量相同,类型一致的参数,按其排列顺序一一对应 调用命令将一系列参数的 值传送给被调用程序中的对应参数 被调用程序运行结束时,再将相应参数的值(可能已被改变)返回 这种方法可用带参数传递语句来实现,带参数的过程调用,语句格式: DO 文件名 WITH 发送参数表 语句功能: 带参数调用一般过程和过程文件中的过程及应用程序,说明:,参数可以是常量、变量和表达式 被调用的程序中第一个可执行的语句必须是参数语句,参数语句有以下格式: 语句格式: PARAMETERS 接受参数表 语句功能: 接受调用命令中相应参数的值,并在调用结束后返回对应参数的计算值 说明: 参数表必须与调用命令中的参

52、数相匹配。 参数语句与带参数调用语句必须配合使用,成对出现,6.10.4 过程调用的嵌套,RETURN TO MASTER 过程运行完毕便直接返回主程序 RETURN,建立表操作 1.建立一个表ZGDA.DBF,表的内容可以自己定义(备注型字段的内容如何查阅、修改),4.将ZGDA.DBF表先添加一个“工资”字段,然后进行如下操作:,(1)显示工资小于140元的姓名、工资两个字段的内容 (2)显示性别为“男”的全部记录的内容 (3)显示性别为“女”的姓名、职称与工资的内容 (4)显示全部姓“刘”的记录内容 (5)显示职称是“讲师”且年龄为40岁以下的记录 (6)显示年龄在50岁以下,工资在650元以上记录的内容,1.将ZGDADBF表拷贝生成一个新表Z1DBF 并进行下面的修改操作: (1)用EDIT命令只修改第四号记录“王秋

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论