点击或拖拽改变大小

Functions.DbSetRelation 方法

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

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

参数

xAlias (Optional)
类型:__Usual
子工作区的编号,或子工作区的别名。
cbKey (Optional)
类型:__Usual
以可执行形式表达关系表达式的代码块。
cKey (Optional)
类型:__Usual
可选的字符值,以文本形式表达关系表达式。
如果提供了cKey,它必须等同于cbKey
如果省略cKey,DBRelation()将为关系返回NULL_STRING。
cName (Optional)
类型:__Usual
An optional name for the relation. Defaults to ParentName + "_" + ChildName.

返回值

类型:Boolean
如果成功则为TRUE;否则为FALSE。
备注
DBSetRelation()将由nAreacAlias指定的工作区(子工作区)关联到当前工作区(父工作区)。
任何现有的关系仍然保持活动状态。 关联工作区会使子工作区与父工作区同步。
这是通过在父工作区移动到新记录时自动重新定位子工作区来实现的。
如果子工作区中有控制顺序,移动父工作区会导致子工作区中自动进行查找操作;查找键基于由cbKey和/或cKey指定的表达式。
如果子工作区没有控制顺序,移动父工作区会导致子工作区中自动进行"转到"操作;"转到"的记录号基于由cbKey和/或cKey指定的表达式。 DBSetRelation()执行与带有ADDITIVE子句的SET RELATION命令相同的功能。
有关更多信息,请参阅SET RELATION命令。
提示 提示:
副作用: DBSetRelation()只保证按上述方式同步工作区。
关系表达式不一定在任何特定时间、以任何特定方式或在任何特定记录或一系列记录上进行评估。
如果关系表达式依赖于父工作区或其关联数据库文件之外的信息,效果是不可预测的。
如果表达式改变了任一工作区的状态(例如,移动到不同的记录或更改记录的内容),效果是不可预测的。 评估上下文: 当评估关系表达式时,父工作区会在评估之前自动被选为当前工作区;之后会自动恢复先前选择的工作区。 软查找: 作为关系定位一部分的查找操作绝不是软查找。
如果关系移动不成功,子工作区将定位到LastRec() + 1,其Found()状态返回FALSE,其EOF()状态返回TRUE。
示例
这个例子演示了DBSetRelation()函数的典型用法:
X#
1USE employee NEW
2USE department NEW INDEX dept
3SELECT employee
4DBSetRelation("Department", {|| Employee->Dept}, "Employee->Dept")
5LIST Employee->Name, Department->Name
参见