起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 148|回复: 9

[请求]如何知道两个部门之间的关系呢?**

[复制链接]
发表于 2008-3-2 16:08:40 | 显示全部楼层 |阅读模式
资产调拨需求:
科和科之间调出固定资产需经分管处领导同意。调出本处的固定资产,需经处长批准。科内变动,由各科科长审批。
请问如何从调拨申请单填写的调入与调出部门信息,知道两者的关系呢?从而可以进行相应的处理。我现在有一资产调拨表,表中有调入部门,调出部门字段,调拨类型字段(科内,科间,出处室)
回复

使用道具 举报

发表于 2008-3-3 15:49:38 | 显示全部楼层
请楼主结合组织机构图来说明,谢谢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-5 15:51:29 | 显示全部楼层

[请求]部门的组织关系

部门组织机构见图:

org.jpg

27.37 KB, 下载次数: 101

回复 支持 反对

使用道具 举报

发表于 2008-3-5 15:56:38 | 显示全部楼层
科内变动  调入部门,调出部门相同
科和科之间  调入部门,调出部门不同,但是他们的父部门相同
调出本处   调入部门,调出部门不同,他们的父部门也不同

如果是这样,你只要根据部门ID得到部门对象,取Parent,判断这个Parent的ID是否相同
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-6 23:18:48 | 显示全部楼层

能更详细些么?最好有代码^_^

能更详细些么?最好有代码^_^
我完整的需求是这样的。
在调拨申请窗体有选择下拉,调出部门,调入部门(属于资产调拨主数据集)
想要改变下拉的调入部门A,调出部门B时,就得出两者关系并给调拨类型业务参数(TypeParm)赋值,做为流程分支使用。

我该把代码写在什么时候呢?窗体关闭时还是下一流程进入时,窗体关闭时数据就了数据库中吧。调出部门,调入部门是不是一定要从主数据集中取出来,可不可以在我改变部门时立即就得到它的值?若可做到这样我图中的调拨类型字段就可立即显示出关系。否则调拨类型就不能放在界面上,而只好用代码写进数据集??

希望能有部分代码^_^非常感谢,

asset.jpg

34.1 KB, 下载次数: 98

回复 支持 反对

使用道具 举报

发表于 2008-3-7 13:28:37 | 显示全部楼层
取字段的值
  DataSet.FieldByName(字段名).AsString

根据部门ID得到对应的组织单元
var
  lDept: Business.Model.Org.Torgunit;
begin
   lDept :=Business.Model.Org.OrgSys.OrgSystem.FindUnit(部门编号,'','');

根据部门对象,找上级部门,和ID
TOrgUnit = class(Business.System.TObject)
protected
  function CreateModule: TOrgModule; virtual;
  function GetDisplayName: string; virtual;
  procedure SetDisplayName(Value: string); virtual;
public
  constructor create; overload;
  constructor create(ABizURL: Business.Model.TBizURL); overload;
  constructor create(URL: string; FileName: string); overload;
  procedure CreateModuleFromStream(Stream: Business.System.TStream);
  procedure CreateNullModule;
  procedure Destroy; override;
  procedure EnsureAttributes;
  procedure SetNoModule;
  property Attribute: TOrgAttribute; readonly;
  property BizURL: Business.Model.TReadOnlyBizURL; readonly;
  property DisplayName: string;
  property ID: string; readonly;    //组织单元的ID ,如果是部门,这里就是部门ID
  property Module: TOrgModule; readonly;
  property OrgKind: Business.Model.TBizObjectKind; readonly;
  property Parent: TOrgUnit;   //找父单元
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-11 21:07:35 | 显示全部楼层

写的代码,两部门关系

function TAssetTransferInfo.SetTransferType:String;
var
        BizURL,TransferType:String;
        SourceDept,DestiDept:String;
        SDept,DDept: Business.Model.Org.Torgunit;
begin
BizURL:='Biz:\SCGATXXGLPT\ZCGLXT\AssetTransferParams.ParamGroup\TransferType.Param';
        SourceDept:=DataSetTransferMainDataSet.FieldByName('AM_Source_DEPART').AsString;
        DestiDept:=DataSetTransferMainDataSet.FieldByName('AM_Dest_DEPART').AsString;
        SDept:=Business.Model.Org.OrgSys.OrgSystem.FindUnit(SourceDept,'','');
        DDept:=Business.Model.Org.OrgSys.OrgSystem.FindUnit(DestiDept,'','');
        if SourceDept=DestiDept then
            TransferType:='0'  //科内
        else if  SDept.Parent.ID=DDept.Parent.ID then
             TransferType:='1'  //科间
        else TransferType:='2'; //处间
        TCOMMONUTILS.SetParamValue(Self.Context,TransferType,BizURL );
        DataSetTransferMainDataSet.FieldByName('AM_TransferType').AsString:=TransferType;
        Result := TransferType;

end;
回复 支持 反对

使用道具 举报

发表于 2008-3-12 08:40:38 | 显示全部楼层
楼主,怎么了 是共享7楼的方法吗?还是7楼的代码出问题了?如果是出问题了,参考http://bbs.justep.com/forum.php?mod=viewthread&tid=21784
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-12 12:55:53 | 显示全部楼层

是共享代码,上面的代码就可以,要注意判断是否为空,

是共享代码,上面的代码就可以,要注意判断是否为空,才行。
不过我还是有问题,上面代码在studio调试运行时是正常的,即我改了调出调入部门,调拨类型的值会随着改变(DataSetTransferMainDataSet.FieldByName('AM_TransferType').AsString:=TransferType;
),但是用客户端登录怎么就没有这效果呢?好象是不能立即反应出类型的变化,
如何办?
回复 支持 反对

使用道具 举报

发表于 2008-3-12 13:19:38 | 显示全部楼层
哦,

如果设计环境下正常,运行环境下不正常,说明这两个环境下取的资源不一样。你这样,重新编译一下这些代码(是重新编译,不是编译),编译后签入,签入后刷新缓存再看看
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-8 03:29 , Processed in 0.048948 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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