前面对数据表的各种操作,都是针对单表进行操作的。在Visual FoxPro中,规定在同一个内存工作区中只能打开一个数据表,如果要打开一个新的数据表,则原先打开的数据表将自动关闭。如果需要同时对多个数据表进行操作,可以在内存中开辟多个工作区,然后在每个工作区中打开相应的数据表。
在2.2.1节中已经对工作区和数据表的打开做了简要介绍,下面将对其进行具体的讲解。
在进行多数据表操作之前,先来了解一下相关的概念和函数。
(1)工作区,实际上是一些内存赋以序号1~32767的标识,对应的字符是A~J和W11~W32767,超过了字符的工作区只能用数字表示。
(2)表的别名,是在工作区中打开表时为该表所定义的名称。可以自定义别名,否则系统默认就以表名作为别名。若一张表在多个工作区中被打开,系统默认在表名后依次加_a 、_b…,在进行自定义别名时,其格式为:
USE <表名> ALIAS <别名>
(3)当前工作区,为正在使用的工作区,可以通过“数据工作期窗口”或用 SELECT命令将任何一个工作区设置为当前工作区,其格式为:
SELECT <工作区号>|<别名>
如果要操作非当前工作区中的表,可以将其他工作区选为当前工作区,或在命令中强行指定工作区,其格式为:
IN <工作区号>|<别名>
(4)ALIAS函数,测试指定工作区中表的别名,其格式为:
ALIAS([工作区号])
(5)SELECT函数,测试指定别名的表所在的工作区号,其格式为:
SELECT([别名])
【例2-25】 在不同的工作区中分别打开学生档案表(xsda.dbf)和学生成绩表(xscj.dbf),然后进行浏览。
SELECT 1
USE xsda ALIAS 学生档案表
TT1=ALIAS()
BROWSE TITLE "当前的工作区别名为:&TT1" &&浏览窗口如图2-44所示
SELECT 2
USE xscj ALIAS 学生成绩表
TT2=ALIAS()
BROWSE TITLE "当前的工作区别名为:&TT2" &&浏览窗口如图2-45所示
图2-44 学生档案表 图2-45 学生成绩表
在讲解本节之前,先来了解表的两个概念,即独占使用与共享使用。独占使用表示一张表只能被一个用户打开,Visual FoxPro 6.0在默认状态以独占方式打开;共享使用表示一张表可以被多个用户同时打开。
如果用户需要更改系统默认的打开方式,可选择“工具”→“选项”命令,在“数据”选项下勾选“以独占方式打开”复选框,如图2-46所示。
图2-46 设置数据表的打开方式
用户也可以通过命令来设置表的打开方式,其命令为:
SET EXCLUSIVE OFF && 默认打开方式为共享
SET EXCLUSIVE ON && 默认打开方式为独占
或强行打开,其命令为:
USE xsda SHARED &&以共享方式打开xsda表
USE xsda EXCLUSIVE &&以独占方式打开xsda表
数据缓冲表示先将对表记录的修改存放在缓冲区中,然后由用户决定是否用缓冲区中的数据更新表文件。它是Visual FoxPro在多用户环境下用来保护对表记录所做的数据更新和数据维护操作的一种技术。
要设置数据缓冲类型,可选择“工具”→“选项”命令,然后在“数据”选项卡的“缓冲”组合框中选择相应的类型即可,如图2-47所示。
图2-47 设置数据缓冲类型