VFP中实现表之间的临时关系的命令是?
1个回答
2013-04-04
展开全部
用 set relation to 请看我的实例(租赁结算的一个小子过程)及set relation to语法:
PROCE SDL42_1
*租赁结算--按工地对账方式进行结算
select 8
use .\dbf\dssl &&丢失数量
select 1
use .\dbf\dwname
zldm00=zldm
name0=c
use
zldm00 = ".\dbf\kcwzcbj."+zldm00
use (zldm00) Alias kcwzcbjX
index on dm to .\idx\dm0
select 8
set relation to dm into kcwzcbjX && 8区dssl与价格库 1 区 相联
&&这样8区移动指针,相应的1区指针也随着移动
go top
do while .not. eof()
replace dm with dssl->dm, sl with dssl->sl
replace zsl with djmj*sl
skip
enddo
set relation 命令
在两个打开的表之间建立关系。
语法
SET RELATION TO
[eExpression1 INTO nWorkArea1 | cTableAlias1
[, eExpression2 INTO nWorkArea2 | cTableAlias2 ...]
[IN nWorkArea | cTableAlias]
[ADDITIVE]]
参数
eExpression1
指定用来在父表和子表之间建立关系的关系表达式。关系表达式通常是子表主控索引的索引表达式。
子表的索引可以是单项索引 (.IDX)、多项结构复合索引 (.CDX) 或独立复合索引。如果是复合索引,应指定适当的索引标识来排序子表。SET ORDER 可用来指定排序子表的索引标识。
例如,考虑“说明”部分描述的 customer 和 orders 两表。假定子表 orders 已经建立索引,并且使用如下命令用顾客编号进行排序:
SET ORDER TO TAG cust_id
要在 customer 和 orders 两表的顾客编号上建立关系,应选择包含父表 customer 的工作区或使用 IN 子句来指定父表的工作区或别名。然后,发出 set relation 命令,用如下关系表达式指定索引表达式:
SET RELATION TO cust_id INTO orders
除非关系表达式是数值型的,否则子表必须建立索引。如果发出包含非数值关系表达式的 set relation 命令时,子表没有使用索引进行排序, Visual FoxPro 显示错误信息。
如果 eExpression1 是数值型表达式,那么当记录指针在父表中移动时,将计算此表达式。然后,子表的记录指针移到记录编号为 eExpression1 的记录上。
INTO nWorkArea1 | cTableAlias1
指定子表的工作区编号 (nWorkArea1) 或子表的表别名 (cTableAlias1)。
eExpression2 INTO nWorkArea2 | cTableAlias2 ...
指定其他关系表达式 (eExpression2) 和子表,建立另一个父表和子表之间的关系。在一条 set relation 命令中可以创建单个父表与多个子表之间的关系,但是各个关系之间要用逗号隔开。
nWorkArea2 指定工作区编号,cTableAlias2 指定子表的别名。
IN nWorkArea
指定父表的工作区。
IN cTableAlias
指定父表的别名。
IN 子句允许创建关系时不必首先选择父表工作区。如果 set relation 命令中省略了 nWorkArea 和 cTableAlias,父表必须在当前选定的工作区中打开。
ADDITIVE
保留当前工作区中所有已存在的关系并创建指定的新关系。如果命令中不包括 ADDITIVE 子句,将断开当前工作区中的所有关系,然后再创建指定的关系。
说明
在建立关系之前,必须打开一个表(父表),而且还必须在另一个工作区内打开其他表(子表)。
相关的各表通常有一个相同的字段。例如,假定表 customer 包含顾客信息,有顾客姓名、地址和唯一的顾客编号等字段。表 orders 包含订货信息,也有顾客编号字段,同时还有日期和发货信息等字段。SET RELATION 通过相同的字段,即顾客编号字段来联系两个表。要建立这种关系,子表必须在公共字段上建立索引。建立关系后,不论何时在父表 customer 中移动记录指针到指定顾客编号的记录上时,子表 orders 中的记录指针也将同时移到相同顾客编号的记录上。如果子表中找不到相匹配的记录,子表中的记录指针将停在表尾。
不带任何参数的 SET RELATION TO 命令将移去当前选定工作区中的所有关系。可用 SET RELATION OFF 移去指定的父子关系。
PROCE SDL42_1
*租赁结算--按工地对账方式进行结算
select 8
use .\dbf\dssl &&丢失数量
select 1
use .\dbf\dwname
zldm00=zldm
name0=c
use
zldm00 = ".\dbf\kcwzcbj."+zldm00
use (zldm00) Alias kcwzcbjX
index on dm to .\idx\dm0
select 8
set relation to dm into kcwzcbjX && 8区dssl与价格库 1 区 相联
&&这样8区移动指针,相应的1区指针也随着移动
go top
do while .not. eof()
replace dm with dssl->dm, sl with dssl->sl
replace zsl with djmj*sl
skip
enddo
set relation 命令
在两个打开的表之间建立关系。
语法
SET RELATION TO
[eExpression1 INTO nWorkArea1 | cTableAlias1
[, eExpression2 INTO nWorkArea2 | cTableAlias2 ...]
[IN nWorkArea | cTableAlias]
[ADDITIVE]]
参数
eExpression1
指定用来在父表和子表之间建立关系的关系表达式。关系表达式通常是子表主控索引的索引表达式。
子表的索引可以是单项索引 (.IDX)、多项结构复合索引 (.CDX) 或独立复合索引。如果是复合索引,应指定适当的索引标识来排序子表。SET ORDER 可用来指定排序子表的索引标识。
例如,考虑“说明”部分描述的 customer 和 orders 两表。假定子表 orders 已经建立索引,并且使用如下命令用顾客编号进行排序:
SET ORDER TO TAG cust_id
要在 customer 和 orders 两表的顾客编号上建立关系,应选择包含父表 customer 的工作区或使用 IN 子句来指定父表的工作区或别名。然后,发出 set relation 命令,用如下关系表达式指定索引表达式:
SET RELATION TO cust_id INTO orders
除非关系表达式是数值型的,否则子表必须建立索引。如果发出包含非数值关系表达式的 set relation 命令时,子表没有使用索引进行排序, Visual FoxPro 显示错误信息。
如果 eExpression1 是数值型表达式,那么当记录指针在父表中移动时,将计算此表达式。然后,子表的记录指针移到记录编号为 eExpression1 的记录上。
INTO nWorkArea1 | cTableAlias1
指定子表的工作区编号 (nWorkArea1) 或子表的表别名 (cTableAlias1)。
eExpression2 INTO nWorkArea2 | cTableAlias2 ...
指定其他关系表达式 (eExpression2) 和子表,建立另一个父表和子表之间的关系。在一条 set relation 命令中可以创建单个父表与多个子表之间的关系,但是各个关系之间要用逗号隔开。
nWorkArea2 指定工作区编号,cTableAlias2 指定子表的别名。
IN nWorkArea
指定父表的工作区。
IN cTableAlias
指定父表的别名。
IN 子句允许创建关系时不必首先选择父表工作区。如果 set relation 命令中省略了 nWorkArea 和 cTableAlias,父表必须在当前选定的工作区中打开。
ADDITIVE
保留当前工作区中所有已存在的关系并创建指定的新关系。如果命令中不包括 ADDITIVE 子句,将断开当前工作区中的所有关系,然后再创建指定的关系。
说明
在建立关系之前,必须打开一个表(父表),而且还必须在另一个工作区内打开其他表(子表)。
相关的各表通常有一个相同的字段。例如,假定表 customer 包含顾客信息,有顾客姓名、地址和唯一的顾客编号等字段。表 orders 包含订货信息,也有顾客编号字段,同时还有日期和发货信息等字段。SET RELATION 通过相同的字段,即顾客编号字段来联系两个表。要建立这种关系,子表必须在公共字段上建立索引。建立关系后,不论何时在父表 customer 中移动记录指针到指定顾客编号的记录上时,子表 orders 中的记录指针也将同时移到相同顾客编号的记录上。如果子表中找不到相匹配的记录,子表中的记录指针将停在表尾。
不带任何参数的 SET RELATION TO 命令将移去当前选定工作区中的所有关系。可用 SET RELATION OFF 移去指定的父子关系。
网易云信
2023-12-06 广告
2023-12-06 广告
UIkit是一套轻量级、模块化且易于使用的开源UI组件库,由YOOtheme团队开发。它提供了丰富的界面元素,包括按钮、表单、表格、对话框、滑块、下拉菜单、选项卡等等,适用于各种类型的网站和应用程序。UIkit还支持响应式设计,可以根据不同...
点击进入详情页
本回答由网易云信提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询