为什么在 Select 关于 Table SecurityRole 的声明中我只有标签?

Why in Select Statement on Table SecurityRole I have only Label?

我有一个小问题,为什么我在 table SecurityRole 上执行 Query 并加入其他 table,当我从字段 SecurityRole.Name 获取值时,我只有标签(看起来像 @SYS...)和我必须转换。

SecurityRole securityRole;
SecurityUserRole UserRole;
SysUserInfo  userInfo;
OMUserRoleOrganization roleOrganization;
OMInternalOrganization internalOrganization;

while select ID from userInfo
    order by id asc
    outer join UserRole
    where UserRole.User == userInfo.Id
        outer join securityRole
        where securityRole.RecId == UserRole.SecurityRole
        outer join roleOrganization
        where roleOrganization.User == userInfo.Id
        && roleOrganization.SecurityRole == UserRole.SecurityRole
            outer join internalOrganization
                where internalOrganization.RecId == roleOrganization.OMInternalOrganization
    {

        print userInfo.Id, userInfo.Email, SysLabel::labelId2String(securityRole.Name), internalOrganization.Name ? internalOrganization.Name : "All Company";

        pause;
}

如果我像这样做一个简单的查询:

while select securityRole
{
   info (strfmt("%1", securityRole.Name)); // here I have the really value filed - NOT the label
}

所以,我的问题是:为什么如果我使用 join 对 securityRole 进行查询,我将有一个来自字段名称的标签。

我知道,有一种方法可以从标签 (SysLabel::labelId2String2(. .. )) 中获取值,但对我来说,最好从 Table 的字段中获取真正的值。

有一种方法可以始终获取真正的字段值(显示在Table中)?

谢谢,

尽情享受吧!

如果您在 select 子句中明确指定字段列表,您将获得角色名称,而不是标签:

outer join Name from securityRole

而不是

outer join securityRole