set relation 是一个很用的命令,只是对它的使用不很清楚,所以用的不多,今天专一看了它的用法,并把它写在博文上,以备后用。
sele 工作区
set relation to 字段 into 工作区名
说明:sele 工作区,选择的是父表,控制着指针的移动
into 工作区名 到的是子表。搞明白这个,其它的也就很简单了。
additive 就是保留前一个联接。
【格式】SET RELATION TO [<关键字段表达式> | <数值表达式>] [INTO<别名> | <工作区号>] [ADDITIVE]
【功能】将当前工作区的表文件与<别名>(或工作区号)指定的工作区中的表文件按<关键字段表达式>或<数值表达式>建立关联。
【说明】当用<关键字段表达式>建立关联时,关键字必须是两个表文件共有字段,且别名表文件已按关键字段建立了索引文件,并已指定关键字段为主索引。
当父表文件的记录指针移动时,子表文件的记录指针根据主索引文件指向关键字段值与父表文件相同的记录。如果子表中没有与关键字段值相同的记录,记录指针指向文件尾,EOF()为.T.
当按<数值表达式>建立关联时,别名表不需要打开索引文件,两个表文件按照记录号相联系,父表文件的记录指针移动时,子表文件的记录指针移至与数值表达式相等的记录上。若找不到此记录,记录指针指向文件尾,EOF()为.T.。
ADDITIVE:表示当前表与其他工作区表己有的关联仍有效,实现一个表和多个表之间的关联;否则取消当前表与其他工作区表已有的关联,当前表只能与一个表建立关联。
SET RELATION TO则表示取消当前工作区与其他工作区的关联。
【例5-2】 将表文件STUD.DBF和SC.DBF以学号为关键字段建立关联。
SELECT 2 && 选择工作区2
USE SC && 打开表文件SCORE.DBF
INDEX ON 学号 TAG 学号 && 建立学号标识
SET ORDER TO TAG 学号 && 指定学号为主索引
SELECT 1 && 选择工作区1
USE STUD && 打开表文件STUD.DBF
SET RELATION TO 学号 INTO 2 && 建立一对一关联
【例5-3】 将表文件STUD.DBF和SC.DBF按数值表达式建立关联。
SELECT 2 && 选择工作区2
USE SC && 打开表文件SC.DBF
SELECT 1 && 选择工作区1
USE STUD && 打开表文件STUR.DBF
SET RELATION TO RECNO() INTO 2
2)一对多关联的建立
1)命令方式
【格式】SET SKIP TO [<别名1>[, <别名2>] ...]
【功能】将当前表文件与其他工作区中的表文件建立一对多关联。
【说明】先要用SET RELATION命令建立了一对一的关联,然后才能将一对一的关联进一步定义成一对多的关联。
当前工作区表记录指针移动时,别名库文件的记录指针指向第一个与关键字表达式值相匹配的记录,若找不到相匹配的记录,则记录指针指向文件尾部,EOF()为.T.。
当父表中的一个记录与子库的多个记录匹配时,在父表中使用SKIP命令,并不使父表的指针移动,而子表的指针却向前移动,指向下一个与父表相匹配的记录;重复使用SKIP命令,直至在子表中没有与父表当前记录相匹配的记录后,父表的指针才真正向前发生移动。