SQLTable.SetRelation 方法 | |
从此服务器到子服务器设置一个关系;标准数据库操作仅限于与关系匹配的记录。
命名空间:
XSharp.VO.SDK
程序集:
XSharp.VOSQLClasses (在 XSharp.VOSQLClasses.dll 中) 版本:2.22 GA
语法 VIRTUAL METHOD SetRelation(
oChild,
uRelation,
cRelation
) AS USUAL CLIPPER
[ClipperCallingConventionAttribute(new string[] { ... })]
public virtual __Usual SetRelation(
__Usual oChild = default,
__Usual uRelation = default,
__Usual cRelation = default
)
查看代码参数
- oChild (Optional)
- 类型:__Usual
必须指定为 SQLTable 对象的子服务器的附加服务器。
如果省略,将删除此服务器的所有关系(建议使用 ClearRelations() 方法)。
- uRelation (Optional)
- 类型:__Usual
表示服务器关系的字段名。可以使用字段名的别名(参见 SQLSelect:FieldInfo() 方法设置别名)。 - cRelation (Optional)
- 类型:__Usual
表示服务器关系的字段名的数组。数组也可以包含复杂的关系运算符(SQL_RELOP_AND,SQL_RELOP_OR,SQL_RELOP_NOT,SQL_RELOP_OPENP,SQL_RELOP_CLOSEP)。
返回值
类型:
__Usual
如果成功则返回 TRUE;否则返回 FALSE。
备注
在SQLTable类中,SetRelation()的功能与SetSelectiveRelation()相同。关系被实现为WHERE子句的扩展。
如果成功,将向子服务器发送NotifyRecordChange消息。
示例
API可以采用以下形式:
1oSQLCustomer:SetRelation(oSQLOrders, {||_FIELD->CustNo},"CustNo")
2oSQLCustomer:SetRelation(oSQLOrders,#CustNo)
3oSQLCustomer:SetRelation(oSQLOrders, {#LastName,#Initial,#FirstName})
以下关系等同于订单集,其中
ORDER.LASTNAME=CUST.LASTNAME OR (ORDER.INITIAL=CUST.INITIAL AND ORDER.FIRSTNAME=CUST.FIRSTNAME):
1oSQLCustomer:SetRelation(oSQLOrders,{#LastName,;
2 SQL_RELOP_OR,SQL_RELOP_OPENP,#Initial,;
3 SQL_RELOP_AND,#FirstName,SQL_RELOP_CLOSEP};
4)
参见