起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 878|回复: 0

如何获得人员的扩展信息

[复制链接]
发表于 2004-5-24 10:49:33 | 显示全部楼层 |阅读模式
Business平台的人员并没有“性别”、“电话”的等人员对象的扩展属性信息。但是可以通过在Business平台的人员表中增加“E”字母开头的字段来实现增加人员的扩展属性,增加后的属性可以在系统功能的“人员设计器”中看到。但是有时需要使用代码获取这些扩展信息,以下为使用代码获取人员扩展信息的示例。

procedure TMainForm.btnGetExtInfoClick(Sender: TObject);
var
  I: integer;
  FieldList: TStrings;
  lTableDef: TBizTableDef;
  lFieldDef: TBizFieldDef;
  lDataField: TUserDataField;
  ExtendInfoKind: TOrgSysExtendInfoKind;
  OrgObjectURL: TBizURL;
  lFileAttribute: TFileAttribute;
  lField: TDataField;
  lAttribStr: string;
  DataSetExtInfo: TUserDataSet;
begin
  {获取系统表}
  DataSetExtInfo := TUserDataSet.Create(self);
  ExtendInfoKind := TOrgSysExtendInfoKind.eikPerson;
  lTableDef := TOrgSysExtendInfoManager.GetOrgSysTableDef(ExtendInfoKind);
  if lTableDef = nil then Exit;
  FieldList := TStringList.Create;
  OrgObjectURL := TBizURL.Create;
  try
    FieldList.Clear;
    OrgObjectURL.URL := 'Org:\PERSON\ZXX.psn';
    lFileAttribute := FileSys.FileSystem.CreateAttribute(OrgObjectURL.FileName,
      SysUtils.fmOpenRead);
    TOrgSysExtendInfoManager.GetOrgSysTableExtendFields(ExtendInfoKind, FieldList);
    if FieldList.Count = 0 then Exit; //如果没有扩展字段则退出
    for I := 0 to FieldList.Count - 1 do
    begin
      lFieldDef := TBizFieldDef(FieldList.Objects[I]);
      lDataField := TUserDataField.Create(DataSetExtInfo);
      lDataField.DataSet := DataSetExtInfo;
      lDataField.ID := lFieldDef.ID;
      lDataField.DisplayName := lFieldDef.DisplayName;
      lFieldDef.AssignAttrTo(lDataField);
    end;
    DataSetExtInfo.Open;
    DataSetExtInfo.Edit;
    for I := 0 to DataSetExtInfo.FieldCount - 1 do
    begin
      lField := DataSetExtInfo.Fields[I];
      case lField.DataType of
        TFieldType.ftGraphic, TFieldType.ftBlob, TFieldType.ftOraBlob:
          TOrgSysExtendInfoManager.LoadBlobFieldFromOrgExtTable(OrgObjectURL,
            TBlobField(lField), ExtendInfoKind)
      else
        lAttribStr := lFileAttribute.ValuesAsString[lField.FieldName];
        lField.AsString := lAttribStr;
        MemoResult.Lines.Add('扩展字段ID:' + lField.FieldName + ',显示名称:'
          + lField.DisplayName + ',字段值:' + lAttribStr);
        if lField.FieldName = 'EXB' then edtEXB.Text := lField.AsString;
        if lField.FieldName = 'EDH' then edtEDH.Text := lField.AsString;
      end;
    end;
    DataSetExtInfo.Post;
  finally
    DataSetExtInfo.Free;
    lFileAttribute.Free;
    FieldList.Free;
  end;
end;


提示: 此示例使用了“组织机构公共库”业务单元,需要在代码所属业务功能的“配置项目属性”中引入“系统空间\系统功能\组织机构\组织机构公共库”业务单元。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-5-8 18:36 , Processed in 0.056213 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表