起步软件技术论坛-X3

 找回密码
 立即注册
搜索
楼主: xhsoft

急!!错误

[复制链接]
发表于 2010-3-23 13:42:46 | 显示全部楼层
楼主,
1、现在你这样的实现是很影响性能的,出于啥原因还要这样一直做下去呢?
2、你现在这个部门下这个岗位下没有这个人员了,需要在这个部门这个岗位下分配这样一个人,就可以了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-3-23 20:13:13 | 显示全部楼层
1、是性能很受影响,我们在以后的流程中会考虑其他方法!
2、但是就是没有这个人了,难道这个人离职了,还要在组织机构中保留吗?
回复 支持 反对

使用道具 举报

发表于 2010-3-24 08:50:44 | 显示全部楼层
楼主,这样吧,你把资源传上来,或者搞一个简单重新的例子,传上来。
另外,把组织机构开头的四张表,岗位表 还要 部门表 这六张表也一起传上来,
我们恢复环境来看看吧。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-3-24 18:13:14 | 显示全部楼层
已发到869209605QQ邮箱,请查收!
回复 支持 反对

使用道具 举报

发表于 2010-3-25 09:19:32 | 显示全部楼层
导入的时候只看到了组织机构设计器,没有岗位和人员设计器
请把岗位和人员设计器导一下。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-3-25 09:30:12 | 显示全部楼层
已发到邮箱
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-3-25 10:34:39 | 显示全部楼层
进展如何?
回复 支持 反对

使用道具 举报

发表于 2010-3-25 11:18:16 | 显示全部楼层
unit XZFFFWCT;

interface

uses
  Business.System, Business.Model, Business.Forms, Business.Data,Business.Model.Org,
  Business.Model.Flow;
type
  TXZFFFWCT = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    CheckBizTreeView1: TCheckBizTreeView;
    imgCheckState: TImageList;
    ActionList1: TActionList;
    Action1: TAction;
    Dsb_Detail: TDataSetBroker;
    InfoBroker1: TInfoBroker;
    Memo1: TMemo;
    procedure BizFormShow(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure Action1Execute(Sender: TObject);
    procedure CheckBizTreeView1ClickCheck(Sender: TObject; ANode: TTreeNode; Checked: Boolean);
    procedure BizFormCreate(Sender: TObject);
    procedure BizFormDestroy(Sender: TObject);
  private
    {private declarations}
  public
   FSelected :TStringList;
    {public declarations}
  end;

implementation


procedure TXZFFFWCT.BizFormShow(Sender: TObject);
var
  lBizNode: TBizNode;
  lBizURL: TBizURL;
  lRootNodes: TStrings;
begin

  lBizURL := TBizURL.Create;
  lRootNodes := TStringList.Create;
  try
   CheckBizTreeView1.ShowOptions := [TBizObjectKind.boOrgServer, TBizObjectKind.boOrgRoot,
      TBizObjectKind.boOrgan, TBizObjectKind.boDept, TBizObjectKind.boPositionMember, Tbizobjectkind.boPersonMember];
   lBizURL.URL := 'Org:\ROOT\SCCS.OGN';                     // 改成你自己的组织机构的根的url
   lBizNode := BizTree.BizTreeStructure.FindNodeByBizURL(lBizURL);
   if lBizNode <> nil then
     CheckBizTreeView1.CheckOptions := [TOrgUnitKind.boOrgan, TOrgUnitKind.boDept,
     TOrgUnitKind.boPositionMember, TOrgUnitKind.boPersonMember];
     CheckBizTreeView1.ReloadTree;
     lRootNodes.AddObject(lBizNode.GUID, lBizNode);
   CheckBizTreeView1.StartWithNodes := lRootNodes;
   CheckBizTreeView1.ReloadTree;
  finally
    lBizURL.Free;
  end;
end;

procedure TXZFFFWCT.SpeedButton2Click(Sender: TObject);
begin
  close;
end;

procedure TXZFFFWCT.Action1Execute(Sender: TObject);
{var
  lBizUrl: TBizURL;
  FGUID,lcbh,wjmc: String;
  i: Integer;
  Org : TOrgSystem ;
  lBizNode: TBizNode;
  bh,bh1,zw,dl,zl:string;
  ver :integer;
begin
  lBizURl := TBizURL.Create;
  Org := TOrgSystem.Create;
  try
  Memo1.Lines.Clear;
  lBizURl.URL := 'Org:\ROOT\JG1.ogn';
  FGUID := CheckBizTreeView1.BizTree.FindNodeByBizURL(lBizURl).GUID;
  BizTree.BizTreeStructure.GetChildren(FGUID,Memo1.Lines,True);//,[TBizObjectKind.boOrgServer, TBizObjectKind.boOrgRoot,
  for i := 0 to Memo1.Lines.Count -1 do
  begin
    lbizNode := BizTree.BizTreeStructure.FindNode(Memo1.Lines) as TBizNode;
    if lbizNode.NodeKind = TBizObjectKind.boPersonMember then
    begin
      CheckBizTreeView1.SelectedNode := lBizNode;
      if CheckBizTreeView1.Checked[CheckBizTreeView1.Selected] then
      begin
        Dsb_Detail.DataSet.Open;
        Dsb_Detail.DataSet.Append;
        Dsb_Detail.DataSet.FieldByName('FDept').AsString := lbiznode.Parent.Parent.DisplayName;
        Dsb_Detail.DataSet.FieldByName('FPost').AsString := lbiznode.Parent.DisplayName;
        Dsb_Detail.DataSet.FieldByName('FPer').AsString := lbiznode.DisplayName;
        Dsb_Detail.DataSet.Post;
      end;
    end;
  end;
  finally
    lBizURl.Free;
    Org.Free;
    Business.Forms.jsDialogs.ShowMsg('操作成功!','系统提示');
    Dsb_Detail.dataset.Open;
  end;
  close;

end; }
var i,j,lCount: Integer;
   lDept,lPosition:String;
   lBizUrl,lPersonUrl :TBizURL;
   lSelectedPerson,lSelected :TStringList;
   lOrgUnit, lPersonMember:TOrgUnit;
begin
   try
   lBizUrl :=TBizURL.Create;
   lPersonUrl :=TBizURL.Create;
   lSelectedPerson :=TStringList.Create;
   lSelected :=TStringList.Create;
   Dsb_Detail.DataSet.Open;
   Dsb_Detail.DataSet.DisableControls;
   for i :=0 to FSelected.Count -1 do
   begin
     lBizUrl.URL :=FSelected;
     lOrgUnit := org.OrgSys.Orgsystem.GetUnit(lBizUrl);
     if lOrgUnit<>nil then
     begin
       if (lOrgUnit.OrgKind =TBizObjectKind.boOrgan) or (lOrgUnit.OrgKind =TBizObjectKind.boDept) then
         begin
          lDept :=lOrgUnit.ID;
          org.OrgSys.OrgSystem.GetBizURLsByOrgExpr('orgchildren(orgkey('+lDept+','''',''''),orgcondition(''*.PSM'','''',''''),True,False)',lSelected);
          for j:=0 to lSelected.Count-1 do
          begin
           if lSelectedPerson.IndexOf(lSelected[j])<0 then
              lSelectedPerson.Add(lSelected[j])
          end;
         end
       else if lOrgUnit.OrgKind=TBizObjectKind.boPositionMember then
         begin
          lDept :=lOrgUnit.Parent.ID;
          lPosition :=lOrgUnit.ID;
          org.OrgSys.OrgSystem.GetBizURLsByOrgExpr('orgchildren(orgkey('+lDept+','+lPosition+',''''),orgcondition(''*.PSM'','''',''''),True,False)',lSelected);
          for j:=0 to lSelected.Count-1 do
          begin
           if lSelectedPerson.IndexOf(lSelected[j])<0 then
              lSelectedPerson.Add(lSelected[j])
          end;
         end
       else if lOrgUnit.OrgKind =TBizObjectKind.boPersonMember then
         begin
           if lSelectedPerson.IndexOf(FSelected)<0 then
              lSelectedPerson.Add(FSelected);
         end;
     end;
   end;
   for lCount :=0 to lSelectedPerson.Count -1 do
   begin
    lPersonUrl.URL :=lSelectedPerson[lCount];
    lPersonMember :=Org.OrgSys.OrgSystem.GetUnit(lPersonUrl);
    if lPersonMember <> nil then
      begin
        Dsb_Detail.DataSet.Append;
        Dsb_Detail.DataSet.FieldByName('FDept').AsString := lPersonMember.Parent.Parent.DisplayName;
        Dsb_Detail.DataSet.FieldByName('FPost').AsString := lPersonMember.Parent.DisplayName;
        Dsb_Detail.DataSet.FieldByName('FPer').AsString := lPersonMember.DisplayName;
        Dsb_Detail.DataSet.Post;
      end;
   end;
   finally
     Dsb_Detail.DataSet.EnableControls;
     lSelected.Free;
     lSelectedPerson.Free;
     lPersonUrl.Free;
     lBizUrl.Free;
     Close;
   end;
end;

procedure TXZFFFWCT.CheckBizTreeView1ClickCheck(Sender: TObject; ANode: TTreeNode; Checked: Boolean);
//var lBizNode :TBizNode;
begin
  if Checked  and (FSelected.IndexOfObject(ANode)<0) then
    FSelected.AddObject((ANode.Data as TBizNode).BizURL.URL, ANode);
  if not Checked and (FSelected.IndexOfObject(ANode)>=0) then
    FSelected.Delete(FSelected.IndexOfObject(ANode));
end;

procedure TXZFFFWCT.BizFormCreate(Sender: TObject);
begin
  FSelected :=TStringList.Create;
end;

procedure TXZFFFWCT.BizFormDestroy(Sender: TObject);
begin
  if Assigned(FSelected) then
   FSelected.Free;
end;

end.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-3-25 11:23:02 | 显示全部楼层
??

你们那边问题重现了吗》

上述是什么?
回复 支持 反对

使用道具 举报

发表于 2010-3-25 11:34:33 | 显示全部楼层
重现了,换了一中方法来实现你们的业务
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-10 06:16 , Processed in 0.041501 second(s), 14 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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