起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 1221|回复: 18

【搞定】[小问题]组织机构编码维护的问题!(感谢龚明)

[复制链接]
发表于 2004-5-4 12:35:18 | 显示全部楼层 |阅读模式
代码在下面的帖子里面

基本完成!
感谢JUSTEP公司的技术支持!

System Error.  Code: 299.
仅完成部分的 ReadProcessMemoty 或 WriteProcessMemory 请求。


什么错误啊!
回复

使用道具 举报

发表于 2004-5-5 07:32:32 | 显示全部楼层
系统空间的组织机构设计文件夹下面都是例子啊。

你需要的是什么样的例子呢?能不能具体些
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-5-5 10:40:37 | 显示全部楼层
组织机构 ----  机构一(001)-----------部门一(001001)
-------------------------------------------部门二(001002  --------子部门1(001002001)
-----------------------------------------------------------------------子部门2(001002002)
----------------机构二(002)-----------部门一(002001)
----------------机构三(003)-----------部门一(003001)

说明: 组织机构不就是上面的树的表现形式吗? 括号中的是树的编码。
       我的需求就是将组织机构中 的ID字段(JUSTEP中采用的是部门汉字的拼音首字符)作为编码的方式来使用。
我在建组织机构的时候自动生成编码 例如: 机构一 自动生成的ID 为(001)而不是 (JG1)
建下级编码的时候自动取得父编码。然后自动加上本级的编码
    如机构一 下面的 部门一 就自动生成的ID 为  (001001)。

这样的描述ok?
回复 支持 反对

使用道具 举报

发表于 2004-5-5 21:08:37 | 显示全部楼层
继承 组织机构设计器 功能,根据 数据库中已经有的编号 生成新的编号 对 FIDNameFrame.ID 赋值
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-5-6 20:32:16 | 显示全部楼层
在什么地方写呢?
我试着做了一下,但是不知道如何写,还没有文档进行参考。
能够做一个继承的例子,打个包,传上来我看看吗?
回复 支持 反对

使用道具 举报

发表于 2004-5-6 21:10:06 | 显示全部楼层
继承的例子?
系统空间的 组织机构设计 文件夹的功能都是从 组织机构设计基类 继承下来的啊
你是那里遇到困难了呢?
不知道怎样继承?还是继承以后不知道怎么写?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-5-6 21:22:42 | 显示全部楼层
知道继承,也知道如何的写。
但是对于组织机构就不知道怎么写了。我把新建一个机构的过程整个的看了一遍都还没有弄明白!
回复 支持 反对

使用道具 举报

发表于 2004-5-7 09:30:34 | 显示全部楼层
这个问题你们自己写代码比较麻烦,组织机构的维护属于系统底层的内容.

我们可以把这个建议列入需求,在以后的版本中提供!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-5-7 21:16:31 | 显示全部楼层
可是在项目马上就要实施了,而组织机构是项目的关键的关键,也是最底层的啊!

如果组织机构不变还好,但是我们这里变动非常的频繁,你想,我不能天天去手动的维护编码吧!
回复 支持 反对

使用道具 举报

发表于 2004-5-8 14:07:20 | 显示全部楼层
下面的编码实现了你需要的功能,仅供参考。代码不全,希望给你启发
建议使用递归的方式实现比较合适
全局变量
iOrganArray  //用于数组下标
sOrganEofTierUrl:array of string;  //用于记录最后一层机构的URL
sOrganEofTierCode:array of string;  //用于记录最后一层机构的编码
这3个变量的用途是记录创建的机构的最后一层机构对象的URL和编码,为创建部门奠定基础
说明
iOrganBaseNumber 输入参数,表示创建机构每层数量
iOrganTierNumber 输入参数,表示创建机构层数
sParentName 表示父类编码

procedure CreateOrgan(sBizUrl,sParentName:string;iOrganBaseNumber,iOrganTierNumber:integer); var
  sTestOrgID:string  //机构ID
begin
  lBizUrl:=TBizUrl.Create;
  lBizUrl.URL:=sBizUrl;
  for li:=1 to iOrganBaseNumber do
  begin
    sTestOrgName:=sParentName+inttostr(li);
    ///////利用机构名称的拼音开头转化为机构ID////////////////////////
    Business.Model.ExtUtils.StringToPYCapitals(sTestOrgName,sTestOrgID);
    orgsys.OrgSystem.CreateOrgan (lBizUrl,sTestOrgID,sTestOrgName);
    //////////////////////如果iOrganTierNumber层数等于1说明为最后一层,不必再进入递归循环了
    if iOrganTierNumber>1 then
CreateOrganRamus(sBizUrl+'\'+sTestOrgID+'.ogn',sTestOrgName,iOrganBaseNumber,iOrganTierNumber-1,iSign);
    if iOrganTierNumber=1 then
    begin
    sOrganEofTierUrl[iOrganArray]:=lBizUrl.Url+'\'+sTestOrgID+'.ogn';  
    sOrganEofTierCode[iOrganArray]:=business.System.StrUtils.RightStr(sTestOrgID,length(sTestOrgID)-4);
     /////数组下标增加1/////
     iOrganArray:=iOrganArray+1;
    end;
  end;
end;

用于调用上面创建机构的过程
procedure TMainForm.CreateOrganRamus(sBizUrl,sParentName:string;iOrganBaseNumber,iOrganTierNumber:integer);
begin
  CreateOrgan(sBizUrl,sParentName,iOrganBaseNumber,iOrganTierNumber);
end;

调用创建整个的程序

procedure TMainForm.BtnokClick(Sender: TObject);
var
  iOrganTierNumber:integer;  ////层数
  iOrganBaseNumber:integer;   ///// 基数
begin
  CreateOrgan('org:\root','测试机构',iOrganBaseNumber,iOrganTierNumber);   
end;
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-5-4 11:37 , Processed in 0.049862 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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