Functions.OrdSetRelation 方法 | |
将指定的工作区与当前工作区关联。
命名空间:
XSharp.RT
程序集:
XSharp.RT (在 XSharp.RT.dll 中) 版本:2.22 GA
语法 FUNCTION OrdSetRelation(
uArea,
cbKey,
cKey
) AS USUAL CLIPPER
[ClipperCallingConventionAttribute(new string[] { ... })]
public static __Usual OrdSetRelation(
__Usual uArea = default,
__Usual cbKey = default,
__Usual cKey = default
)
查看代码参数
- uArea (Optional)
- 类型:__Usual
子工作区的编号或别名。 - cbKey (Optional)
- 类型:__Usual
以可执行形式表达的关系表达式的代码块。 - cKey (Optional)
- 类型:__Usual
表达关系表达式的可选字符串值。
如果提供 cKey,它必须等同于 cbKey。
如果省略 cKey,DBRelation() 将返回 NULL_STRING 作为关系。
返回值
类型:
__Usual备注
OrdSetRelation() 将由 nArea 或 cAlias 指定的工作区(子工作区)与当前工作区(父工作区)相关联。
任何现有的关系保持活动状态。
关联工作区使子工作区与父工作区同步。
通过在父工作区移动到新记录时自动重新定位子工作区来实现此目的。
如果子工作区中有控制顺序,移动父工作区会导致在子工作区中进行自动寻址;寻址键基于 cbKey 和/或 cKey 指定的表达式。
如果子工作区没有控制顺序,移动父工作区会导致在子工作区中进行自动“转到”;“转到”的记录编号基于 cbKey 和/或 cKey 指定的表达式。
OrdSetRelation() 与 DBSetRelation() 完全相同(以及 SET RELATION...SCOPED 命令),但它还在子工作区的顺序上设置了范围。
这意味着每当您选择子工作区时,仅当前父记录相关的记录将可见。
这允许轻松处理一对多关系,在子数据窗口中显示相关数据时特别有用。有关更多信息,请参考 DBSetRelation()。
示例
此示例显示每个发票及其相关的行项目:
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
参见