1.工作区号与别名
Visual FoxPro6.0提供了 32767 个工作区,每个工作区都有一个工 作区号,分别用 1~32767 表示,其工作区 1~10 还分别对应有别名 A
~J。系统还规定,可以用工作区的别名作为工作区的标识符,A~J 这 10个字母是工作区的别名。
每个工作区只能打开一个表,在一个工作区中打开其他的表时,原 来在该工作区中打开的表将自动关闭。
如果在打开表时,需用 USE 命令,格式如下:
USE <表文件名> [ALIAS <别名>] [IN <工作区号/工作区别名/表别名
>]
2.在“数据工作期”窗口查看工作区 3.6.2 选择工作区的命令
1.命令格式
SELECT <工作区号>/<别名>/0 2.命令功能
选择或切换一个工作区作为当前工作区。
0——表示未被打开的最小工作区区号。
3.6.3 使用 USE 命令指定工作区打开表 1.命令格式
USE <表名> IN <工作区号>/<别名>
2.命令功能
使用区号或别名在指定工作区中打开表文件。
学 进 程 与 设 计
如果在多个工作区同时打开多个表文件,在当前工作区中移动表的记 录指针时,其它表的记录指针是不会随之移动。如果要想其它表的记录 指针也随之移动,则要建立表间的关联。
关联就在两个或两个以上的表之间建立某种连接,使其表的记录指针 同步移动。用来建立关联的表称为父表,被关联的表称为子表。建立两 表间的关联后,父表的记录指针将带动子表的记录指针随之移动(按关 联表达式值相同)。
1.命令格式
SET RELATION TO [<关联表达式 1>] INTO <工作区>/<别名>
[,<关联表达式 2> INTO <工作区>/<别名>…]] [INTO <工作区>/<
别名>][ADDITIVE]
2.命令功能
在两个表之间建立关联。
【例 3-9】创建 xsdb 与 yy 两表之间的关联。
SELE B USE YY
INDEX ON 学号 TO XHSY SELE C
USE XSDB
SET RELATION TO 学号 INTO B DISPLAY 学号,姓名,B.听力,YY.口语 3.6.5 解除关联
用 SET RELATION 命令建立关联之后,当父表的记录指针移动时,
子表的记录指针也相应要移动,并且将要引起读/写磁盘操作,这样会降 低系统的性能,因此,当某些关联不再使用或暂时不再使用时,应及时 解除关联,以提高系统的运行速度。
1.命令格式
格式 1:SET RELATION TO
格式 2:SET RELATION OFF INTO <工作区号>/<别名>
教
2.命令功能 备注学 进 程 与 设 计
功能 1:解除当前工作区表与其它工作区表建立的关联。
功能 2:解除当前工作区与由<工作区号>/<别名>指定的工作区中 表建立的关联。该命令必须在父表所在的工作区执行。例如,要关闭当 前工作区与 C 工作区建立的关联。可以通过下述命令进行:
SET RELATION OFF INTO C
3.7 用命令对表进行操作简介
3.7.1 打开表命令 1.命令格式
USE <文 件 名 > [INDEX < 索 引 文 件 名 表 >][ALIAS< 别 名 >]
[EXCLUSIVE]
2.命令功能
打开当前工作区内的表,并且可打开相应的索引文件。如果表中含有 备注字段,相应的.FPT 文件也同时打开。当打开另一个表时,当前工作 区中先前使用的表将自动关闭。
ALIAS <别名>选择项用来给表文件指定一个别名。如果缺省此项,
表文件名本身就是别名。
EXCLUSIVE表示以独占方式使用表,即不允许其他用户在同一时刻 也使用该表。
【例 3-10】打开 XSDB 表,并为其命名别名为 XS。
USE XSDB ALIAS XS 3.7.2 关闭表命令
1.USE 命令 命令格式:USE
功能:关闭当前工作区中打开的表和相应的索引。
2.CLEAR ALL 命令 命令格式:CLEAR ALL
功能:关闭所有已打开表、索引和格式文件,释放所有的内存变量,
选择工作区 1 为当前工作区。
3.CLOSE 命令
命令格式:CLOSE ALL / DATABASE
功能:CLOSE ALL 关闭所有类型的文件,选择工作区 1 为当前工作 区。
学 进 程 与 设 计
件,选择工作区 1 为当前工作区。CLOSE 命令不释放内存变量。
4.QUIT 命令 命令格式:QUIT
功能:关闭所有打开的文件,结束 VF 并返回 Windows 操作系统。
3.7.3 显示表记录的命令 1.LIST 命令
命令格式:LIST [<范围>][FIELDS<字段名表>][FOR<条件>]
[WHILE<条件>][TO PRINT][OFF]
功能:以列表的形式显示表的全体或部分记录及字段内容。
<范围>为 ALL、RECORD <n>、NEXT <n>、REST 中的一个参 数。不指定时,默认范围为 ALL。
FIELDS <字段名表>用来指定显示的字段名、内存变量名和表达 式,其中 FIELDS 可以省略。对于备注字段及通用字段不显示具体内 容。若要显示备注字段数据,则必须在<表达式表>中明确指出该字段 名。
2.DISPLAY 命令
命令格式:DISPLAY [<范围>][FIELDS<字段名表>][FOR<条件
>][WHILE<条件>][TO PRINT] [OFF]
功能:以列表的形式显示表的全体和部分记录及字段内容。
DISPLAY命令与 LIST 命令格式相同,功能也基本相同。它们的区别 是 LIST 缺省<范围>时,显示全体记录;DISPLAY 缺省<范围>时,只 显示当前记录。LIST 连续显示记录;而 DISPLAY 分屏显示记录,当显 示满一屏后暂停,提示按任意键后继续显示。
3.7.4 利用已有的表建立新表 1.COPY STRUCTURE 命令
命令格式:COPY STRUCTURE TO <新文件名>[FIELDS<字段名 表>]
功能:复制当前打开的表结构到新的表文件中,但不复制任何数据记 录。
【例 3-12】复制“学生”表的结构,生在“XSDB1.DBF”文件。
USE XSDB
COPY STRUCTURE TO XSDB1
教
2.COPY TO 命令 备注学 进 程 与 设 计
命令格式:COPY TO <新文件名>[<范围>][FIELDS<字段名表>]
[FOR<条件>][WHILE<条件>]
功能:将打开表的全部或部分结构及数据复制到新表。
3.7.5 修改表结构的命令
命令格式:MODIFY STRUCTURE
功能:打开表设计器窗口,显示当前表的结构,并可直接修改其结 构。
3.7.6 记录定位命令
1.绝对定位 GO/GOTO 命令
命令格式 1:GO/GOTO TOP/BOTTOM
功能:记录指针定位到表的第一条记录或最后一条记录。
格式 2:GO/GOTO <数值表达式>
功能:记录指针定位到表的某一条记录,命令中<数值表达式>的值 就是指针定位的指定记录号。
【例 3-14】
USE XSDB
GO BOTTOM && 记录指针定位到表的最后一条记录 GO 3 && 记录指针定位到表的第三条记录 GO TOP && 记录指针定位到表的第一条记录 2.相对定位 SKIP 命令
命令格式:SKIP [<数值表达式>]
功能:将记录指针从当前记录位置向下或向上移动,移动的记录数等 于<数值表达式>的值。<数值表达式>值为正时向下移动,<数值表达 式>值为负时向上移动。<数值表达式>缺省时,表示向下移动一条记 录。
【例 3-15】用 SKIP 命令移动指针到指定的记录,其中 RECNO()函 数的返回值是当前记录指针的值。
USE XSDB
?RECNO() && 1 SKIP 5
?RECNO() && 6 SKIP -3
?RECNO() && 3
学 进 程 与 设 计
1.逻辑删除 DELETE 命令
命令格式:DELETE [<范围>] [FOR<条件>] [WHILE<条件>]
功能:在当前表文件中对要删除的记录加上删除标记。
【例 3-16】在 XSDB 表中,性别为“女”的记录加删除标记。
USE XSDB
DELETE FOR 性别="女"
2.恢复逻辑删除 RECALL 命令
命令格式:RECALL [<范围>][FOR<条件>][WHILE<条件>]
功能:在当前表文件中,去掉删除标记,恢复被删除的记录。
【例 3-17】删除所有非党员的记录,恢复所有被加删除标记的男生 记录.
USE XSDB
DELE FOR .NOT. 党员否 RECALL FOR 性别= '男' 3.物理删除 PACK 命令 命令格式:PACK
功能:把当前表中带删除标记的记录真正删除。
说明:使用 PACK 命令之后,带有删除标记的记录从表中永久地删 除,不能再用 RECALL 和其他命令恢复,因此使用时要特别慎重。
【例 3-18】
USE XSDB
DELE FOR 计算机<60 PACK
4.清空表 ZAP 命令 命令格式:ZAP
功能:从打开的表中删除所有的记录,只保留表的结构。
说明:用该命令删除的记录将无法恢复,使用时要特别小心。
【例 3-19】
USE XSDB1 ZAP
教
3.7.8 替换 REPLACE 命令 备注学 进 程 与 设 计
命令格式:REPLACE [<范围>]<字段名 1>WITH<表达式 1>[,<
字段名 2>WITH<表达式 2>…][FOR<表达式>][WHILE<表达式>]
功能:用来替换打开表中指定字段的数据。
【例 3-20】为“XSDB”表计算所有学生的平均分和总分。
USE XSDB
REPLACE ALL 总分 WITH 计算机+英语, 平均分 WITH 总分/2 3.7.9 条件查询 LOCATE 命令
命令格式:LOCATE [<范围>] [FOR <条件>] [WHILE <条件>]
CONTINUE
功能:按顺序搜索表,从而找到满足指定逻辑表达式的第一个记录。
3.7.10 建立单索引文件的命令
命令格式:INDEX ON <索引关键表达式> TO <索引文件名>
[UNIQUE] FOR <条件>[ADDITIVE]
功能:对当前表中满足条件的记录,按<索引表达式>的值建立一个 索引文件,并打开此索引文件,其缺省的文件扩展名为.IDX。
说明:单索引文件总是按升序的顺序排列。对于一个表文件,允许建 立多个索引文件。
【例 3-22】
USE XSDB
INDEX ON 性别+DTOC(生年月日,1) TO SY 将生成一个名为 SY.IDX 的单索引文件。
3.7.11 建立复合索引文件的命令
命令格式:INDEX ON <索引关键表达式> TAG <标记名> [OF<
复合索引文件名 >][FOR < 条件>] [ASCENDING | DESCENDING]
[UNIQUE | CANDIDATE][ADDITIVE]
功能:建立和修改复合索引文件,并打开此索引文件,其缺省的文件 扩展名为.CDX。
【例 3-23】为数据表 XSDB.dbf 按计算机从小到大建立单索引文件 xsjsj.idx,按英语从高到低建立单索引文件 xsyy.idx。
学 进 程 与 设 计
USE XSDB
INDEX ON 计算机 TO xsjsj && 单索引文件总按索引关键字升 序排列
LIST && 记录已按基本工资升序排列 INDEX ON –英语 TO xsyy;
&&给实发工资取负号后使索引关键字表达式按升序排列,以求实发 工资按降序排列
LIST && 记录已按实发工资降序排列
【例 3-24】为 XSDB.dbf 按下列要求建立结构复合索引文件,如图 所示。
(1)记录以姓名降序排列,索引标识 xm,索引类型为普通索引;
(2)记录以生年月日升序排列,索引标识 snyr,索引类型为唯一索 引;
(3)记录以院系降序排列,院系相同的按出生日期降序排列,索引 标识 yxsnyr,索引类型为候选索引;
USE XSDB
INDEX ON 姓名 TAG xm DESCENDING LIST
INDEX ON 生年月日 TAG snyr UNIQUE LIST
INDEX ON 院系+DTOS(生年月日) TAG yxsnyr DESCENDING CANDIDATE
LIST
3.7.12 追加记录 APPEND 命令 命令格式:APPEND [BLANK]
功能:在当前表的末尾追加一些新记录或空记录。
【例 3-23】在“XSDB”表的末尾追加一条空记录。
USE XSDB APPEND BLANK
3.7.13 插入记录 INSERT 命令
命令格式:INSERT [BLANK] [BEFORE]
功能:在打开表的任意位置插入新记录或空记录。
【例 3-24】在“XSDB”表的第 6 条记录之前插入一条空记录。
教
USE XSDB 备注学 进 程 与 设 计
GO 6
INSERT BEFORE BLANK 或:GO 5
INSERT BLANK
3.7.14 从其表文件中追加数据 APPEND FROM 命令
命令格式: APPEND FROM < 文件名 > [FIELDS < 字段名表 >]
[FOR <条件>]
功能:把指定表文件中的记录有条件或无条件地追加到当前表文件的 末尾。
【例 3-25】
USE JSJ
APPEND FROM XSDB FIELDS 学号,计算机 for 院系="会计系"
教学讲授小结:(5 分钟)
对使用多个表涉及到的工作区以及数据工作期的相关概念进行了阐 述。本章是全书的重点,读者应认真掌握表的建立和操作方法以及索引
对使用多个表涉及到的工作区以及数据工作期的相关概念进行了阐 述。本章是全书的重点,读者应认真掌握表的建立和操作方法以及索引