起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 169|回复: 7

【搞定】将人员信息添加至tperson表**

[复制链接]
发表于 2007-4-19 17:03:08 | 显示全部楼层 |阅读模式
插入人员需要调用组织机构的什么方法?
帮忙给下调用的写法
回复

使用道具 举报

发表于 2007-4-19 17:14:14 | 显示全部楼层
不是刚给过例子吗?
==============
procedure TPersonInfoInfo.DataSetsdsDetailBeforeApplyUpdates(Sender: TObject;
  var OwnerData: object);
var
  lDelta: TDeltaDataSet;
  lPersonID, lFileName, lDisplayName: string;
  lDeptURL, lPositionID: string;
begin
  Inherited;
  lDelta := TDeltaDataSet.Create(DataSetsdsDetail);
  try
    while not lDelta.Eof do
    begin
      case lDelta.UpdateKind of
        { 新增 }
        TUpdateKind.ukInsert:
        begin
          lPersonID := DataSetsdsDetail.FieldByName('PersonID').AsString;
          lDisplayName := DataSetsdsDetail.FieldByName('PersonName').AsString;
          lDeptURL := DataSetsdsDetail.FieldByName('DeptID').AsString;
          lPositionID := DataSetsdsDetail.FieldByName('PositionID').AsString;
          { 提交前需要Create一个Person,并按照部门和岗位分配 }
          CreatePersonAndAllocate(lPersonID, lDisplayName, lDeptURL, lPositionID);
        end;
        { 修改 }
        TUpdateKind.ukModify:
        begin
          { 判断如果人员姓名修改,需要调对应的方法修改组织机构人员姓名 }
          if lDelta.FieldModified(lDelta.FieldByName('PersonName')) then
          begin
            lPersonID := DataSetsdsDetail.FieldByName('PersonID').AsString;
            lDisplayName := Variants.VarToStr(lDelta.FieldByName('PersonName').NewValue);
            lFileName := Org.OrgSys.OrgSystem.FindPerson(lPersonID).BizURL.FileName;
            FileSys.FileSystem.FileSetDisplayName(lFileName, lDisplayName);
          end;
        end;
        { 删除 }
        TUpdateKind.ukDelete:
        begin
          { 不允许删除 }
        end;
      end;
      lDelta.NextStatus;
    end;
  finally
    lDelta.Free;
  end;
end;
回复 支持 反对

使用道具 举报

发表于 2007-4-19 17:15:40 | 显示全部楼层
procedure TPersonInfoInfo.CreatePersonAndAllocate(APersonID, APersonDisplayName,
  ADeptURL, APositionID: string);
var
  lDeptURL: string;
  lDeptBizURL, lPositionBizURL: TBizURL;
  lPerson: TPerson;
  lPositionMember: TOrgUnit;
begin
  { 存储时候没有'Org:', 对象使用时候都有前缀名 }
  lDeptURL := FileSys.cOrgFilePrefix + ADeptURL;

  lDeptBizURL := TBizURL.Create;
  lPositionBizURL := TBizURL.Create;
  try
    lDeptBizURL.URL := lDeptURL;
    lPositionBizURL:= Org.OrgSys.OrgSystem.FindPosition(APositionID).BizURL;

    lPerson := Org.OrgSys.OrgSystem.CreatePerson(lDeptBizURL, APersonID, APersonDisplayName);

    lPositionMember := GetPositionMember(lDeptBizURL, APositionID);
    { 如果指定岗位在指定部门下还没有,需要先分配岗位成员 }
    if lPositionMember = nil then
      lPositionMember := Org.OrgSys.OrgSystem.AssignPosition(lDeptBizURL, lPositionBizURL);
    Org.OrgSys.OrgSystem.AssignPerson(lPositionMember.BizURL, lPerson.BizURL);
  finally
    lPositionBizURL.Free;
    lDeptBizURL.Free;
  end;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-19 17:42:30 | 显示全部楼层
CreatePersonAndAllocate('cj','jacky','Org:\ROOT\53SMYZGS.OGN\XTXTKFB.dpt',
                              'Org:\ROOT\53SMYZGS.OGN\XTXTKFB.DPT\XTXTKF.ptm');
这样调用可以吗???
回复 支持 反对

使用道具 举报

发表于 2007-4-19 17:51:44 | 显示全部楼层
不对,应该是
CreatePersonAndAllocate('cj','jacky','Org:\ROOT\53SMYZGS.OGN\XTXTKFB.dpt',
                              'XTXTKF');
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-19 18:03:27 | 显示全部楼层
问题到是搞定了,能帮忙说说思路吗?
CreatePersonAndAllocate('cj','jacky','Org:\ROOT\53SMYZGS.OGN\XTXTKFB.dpt',
                              'XTXTKF');
为什么用‘XTXTKF’???
回复 支持 反对

使用道具 举报

发表于 2007-4-19 18:11:47 | 显示全部楼层

lPositionMember := GetPositionMember(lDeptBizURL, APositionID);
这里给出部门url,和岗位id来定位岗位成员的,因此这个参数就是id了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-19 18:29:53 | 显示全部楼层
好的,谢谢了,可以结贴了。
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-1-4 19:10 , Processed in 0.035777 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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