点击或拖拽改变大小

Functions.OrdSetRelation 方法

X#
将指定的工作区与当前工作区关联。

命名空间:  XSharp.RT
程序集:  XSharp.RT (在 XSharp.RT.dll 中) 版本:2.22 GA
语法
 FUNCTION OrdSetRelation(
	uArea,
	cbKey,
	cKey
) AS USUAL CLIPPER
查看代码

参数

uArea (Optional)
类型:__Usual
子工作区的编号或别名。
cbKey (Optional)
类型:__Usual
以可执行形式表达的关系表达式的代码块。
cKey (Optional)
类型:__Usual
表达关系表达式的可选字符串值。
如果提供 cKey,它必须等同于 cbKey
如果省略 cKey,DBRelation() 将返回 NULL_STRING 作为关系。

返回值

类型:__Usual
备注
OrdSetRelation() 将由 nAreacAlias 指定的工作区(子工作区)与当前工作区(父工作区)相关联。
任何现有的关系保持活动状态。 关联工作区使子工作区与父工作区同步。
通过在父工作区移动到新记录时自动重新定位子工作区来实现此目的。
如果子工作区中有控制顺序,移动父工作区会导致在子工作区中进行自动寻址;寻址键基于 cbKey 和/或 cKey 指定的表达式。
如果子工作区没有控制顺序,移动父工作区会导致在子工作区中进行自动“转到”;“转到”的记录编号基于 cbKey 和/或 cKey 指定的表达式。 OrdSetRelation() 与 DBSetRelation() 完全相同(以及 SET RELATION...SCOPED 命令),但它还在子工作区的顺序上设置了范围。
这意味着每当您选择子工作区时,仅当前父记录相关的记录将可见。
这允许轻松处理一对多关系,在子数据窗口中显示相关数据时特别有用。有关更多信息,请参考 DBSetRelation()。
示例
此示例显示每个发票及其相关的行项目:
X#
 1USE lineitem NEW VIA "DBFCDX"
 2SET ORDER TO TAG InvNo
 3USE invoice NEW VIA "DBFCDX"
 4// 从发票到行项目设置选择性关系
 5OrdSetRelation("LineItem", {|| Invoice->InvNo}, "Invoice->InvNo")
 6GO TOP
 7DO WHILE !EOF()
 8    ? InvNo, InvDate        // 显示发票字段
 9    SELECT LineItem
10    // 仅当前发票 # 的记录可见
11    LIST "   ", PartNo, Qty, Price
12    SELECT Invoice            // 继续到下一张发票
13    SKIP
14ENDDO
参见