2.7 工作区的使用
在Visual FoxPro 6.0中使用多个表,就要使用多个工作区。所谓工作区就是在内存中为表独立开辟的存储空间。一个工作区只能打开一个表,多个工作区就可以同时打开多个表。Visual FoxPro 6.0系统提供了32767个工作区,一个工作区同一时刻只能打开一个表,但一个表可以在多个工作区同时打开,当前使用的工作区称为当前工作区。
系统为每个工作区规定了一个工作区号,分别是1~32767,其中1~10号工作区可以用别名A~J来表示。
2.7.1 选择工作区
每当启动Visual FoxPro 6.0后,系统默认的工作区是1号工作区,用户可以选择其他工作区。在系统菜单“窗口”中选择“数据工作期”命令,打开如图2-46所示的“数据工作期”窗口,当前系统默认的工作区是1号工作区。
图2-46 “数据工作期”窗口
【例15】当前工作区已经打开“学籍”表(如图2-46所示),在另一工作区打开“成绩”表。
操作步骤如下:
在“数据工作期”窗口,单击“打开”按钮,打开“打开”对话框,如图2-47所示,选择要打开的“成绩”表,单击“确定”按钮,返回“数据工作期”窗口。这时表的别名出现在“别名”列表中。
图2-47 “打开”对话框
在“数据工作期”窗口的“别名”列表中,选择要浏览的表,单击“浏览”按钮,可以浏览当前工作区表中的记录;单击“关闭”按钮,则关闭当前工作区打开的表。
使用SELECT命令选择工作区,命令格式如下:
SELECT <工作区号> | <别名> | <0>
说明:
选择一个工作区为当前工作区。工作区号可以直接使用1~32767的数字;别名是打开表时指定的别名;<0>表示没有使用的最小区号的工作区成为当前工作区。
使用USE命令打开表的格式如下:
USE <表名> [ALIAS <别名>] [AGAIN]
说明:
打开表时如果不指定别名,系统默认表名就是它的别名。
AGAIN表示可以在不同工作区再次打开已经打开的表。如果使用不带AGAIN选项的USE命令在不同的工作区再次打开已经打开的表,系统将出现出错信息“文件正在使用”。
下面的例子是在不同工作区打开表:
SELECT 1 &&选择1号工作区 USE 学籍 ALIAS XJ &&打开“学籍”表,别名为XJ SELECT C &&选择3号工作区 USE 成绩 &&打开“成绩”表 SELECT 0 &&选择当前没有使用的最小工作区,即2号工作区 USE 学籍 AGAIN &&再次打开“学籍”表 SELECT XJ &&选择别名是XJ工作区,即1号工作区
2.7.2 多表的打开与关闭
1.打开多个表
在上面打开表的例子中,每打开一个表,需要使用SELECT命令选择一个工作区。Visual FoxPro 6.0中使用“数据工作期”窗口打开多个表时,系统自动分配最小未使用的工作区。另外使用命令方式还可以在当前工作区打开其他工作区表。命令格式如下:
USE <表名> IN <工作区号> | <别名> | <0>
说明:
在指定工作区号或别名打开指定的表,当前工作区不变。
例如:
CLEAR ALL &&清理系统内存,关闭打开的表 USE 学籍 IN 2 &&在2号工作区打开“学籍”表 USE 成绩 IN 5 ALIAS CJ &&在5号工作区打开“成绩”表,别名为CJ
2.关闭多个表
当关闭打开的表时,可以使用SELECT命令和USE命令逐个关闭。例如:
SELECT 5 USE &&关闭5号工作区中的表,当前工作区号是5号 SELECT 2 USE &&关闭2号工作区中的表,当前工作区号是2号
另外也可以使用下面的命令逐个关闭打开的表。命令格式如下:
USE IN <工作区号> | <别名>
说明:
在当前工作区关闭其他工作区打开的表。
例如:
USE 学籍 IN 2 &&在2号工作区打开“学籍”表 USE 成绩 IN 5 ALIAS CJ &&在5号工作区打开“成绩”表,别名为CJ USE IN B &&关闭2号工作区打开的“学籍”表 USE IN CJ &&关闭5号工作区别名是CJ的“成绩”表
如果要将各工作区打开的表全部关闭,可以使用CLOSE DATABASE ALL命令。
2.7.3 访问其他工作区
在当前工作区要访问其他工作区表中的数据,必须在非当前工作区字段名前加上<别名>,表示指定工作区的数据。访问命令格式如下:
<别名>-><字段名> 或 <别名>.<字段名>
【例16】在第1工作区打开“学籍”表,在第3工作区打开“成绩”表,并同时显示“学籍”表中第2条记录的姓名、专业字段内容,“成绩”表中第2条记录的姓名、总分字段内容。
操作命令如下:
USE 学籍 IN 1 GO 2 SELECT 3 USE 成绩 GO 2 SELECT 1 DISPLAY OF 姓名,专业,成绩->姓名,C.总分
屏幕显示:
姓名 专业 成绩->姓名 C.总分 李国华 国际商务 李国华 296.0