起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 511|回复: 11

【搞定】如何刷新另一个信息中的数据**

[复制链接]
发表于 2007-5-5 10:15:57 | 显示全部楼层 |阅读模式
我有两个信息A和B,连接的是同一个物理表。当在一个功能(分配的是信息A)中修改了数据,保存后,如何能让另一个功能(分配的是信息B)中的数据也同步刷新?
回复

使用道具 举报

发表于 2007-5-8 08:58:03 | 显示全部楼层
只有提交数据后,主动刷新另一个信息下的数据集了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-8 09:40:10 | 显示全部楼层
可是我如何判断另一个功能是否已经运行了呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-8 13:29:52 | 显示全部楼层
???为什么没有人回答我?我如何判断一个功能或一个信息是否已经运行?
回复 支持 反对

使用道具 举报

发表于 2007-5-8 14:48:45 | 显示全部楼层
正在找方法,有结果马上跟贴告知
回复 支持 反对

使用道具 举报

发表于 2007-5-8 15:53:17 | 显示全部楼层
请尝试使用环境对象来判断:
功能有默认的隔离级,在该隔离级对应的环境上可以使用findBizObject来判断是否存在该对象,如果不存在,则该功能未运行。
NameSpace: Business.Model
--------------------------------------------------------------------------------
TContext = class(Business.System.TObject)
protected
  property BizObjectPool[Longint]: TBizObject; readonly;
  property BizObjectPoolCount: Longint; readonly;
public
  constructor create(AOwner: TBizObject; AParent: TContext);
  procedure AddMessageHandler(AName: string; AHandler: TBizMessageHandler);
  function BroadcastToChildren(AMessage: TBizMessage): Boolean;
  function BroadcastToParent(AMessage: TBizMessage): Boolean;
  procedure Destroy; override;
  function FindBizObject(AClass: TBizClassURL): TBizObject;   判断是否存在AClass指定的业务对象
  function FindItem(AURL: TBizURL): Business.System.TComponent;
  function FindParentContext(AIsolationLevel: string): TContext;
  function GetBizObject(AClass: TBizClassURL): TBizObject;
  function GetBizObjectEx(AClass: TBizClassURL; AIsolationLevel: string): TBizObject;
  function GetItem(AURL: TBizURL): Business.System.TComponent;
  function GetParentContext(AIsolationLevel: string): TContext;
  procedure RemoveChild(AChild: TContext);
  procedure RemoveMessageHandler(AName: string; AHandler: TBizMessageHandler);
  function SendMessage(AMessage: TBizMessage): Boolean;
  property ChildCount: Longint; readonly;
  property Children[Longint]: TContext; readonly;
  property IsolationLevel: string; readonly;
  property Owner: TBizObject; readonly;
  property Parent: TContext; readonly;
end;

建议让两个功能共享一个信息,这样最简单。
如果实在不行,也可以用TContext.FindBizObject来找信息,然后直接刷新信息中的数据集,而不要去找功能了。
回复 支持 反对

使用道具 举报

发表于 2007-5-8 16:02:30 | 显示全部楼层
通过 TSystemCore.FuncManager.GetRunningFuncs 来获取哪些功能运行了,参考代码
var
  S: string;
  I: Integer;
  lFuncs: TList;
begin
  lFuncs := TList.Create;
  try
    TSystemCore.FuncManager.GetRunningFuncs(lFuncs,TSystemCore.Operator.DefaultPosition.Context);
    if lFuncs.Count = 0 then
      i:=0
    else
    begin
       for I := 0 to lFuncs.Count - 1 do

        S := S + #13#10 + TFuncManager.GetFuncDisplayText(lFuncs[I] as TFunc)+ '  '+ (lFuncs[I] as TFunc).BizClassURL.BizURL.URL+'  ';
       (JSDialogs.ConfirmBox(Caption + S, Caption, 2) and
        TSystemCore.FuncManager.TerminateFuncs(lFuncs, False));
    end;
  finally
    lFuncs.Free;
  end;
end;

主要就是这个环节 TSystemCore.Operator.DefaultPosition.Context,我这里用的是某个岗位登陆的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-8 17:07:30 | 显示全部楼层
谢谢atiger,我先试试哈。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-8 17:08:58 | 显示全部楼层
第二个方法好用,能查出来。第一种方法,不会用
  try
    urlVar:=TBizClassURL.Create;
    UrlVar.BizUrl.URL := 'Biz:\PORTPOS\SHIPATTEMPER_INFO.Info';
    InfoAttemper:=TSystemCore.Operator.DefaultPosition.Context.FindBizObject(urlVar);
    if Assigned(InfoAttemper) then
    begin
      Business.Forms.jsDialogs.ShowMsg('存在船舶调度信息', '');
    end else
      Business.Forms.jsDialogs.ShowMsg('不存在船舶调度信息', '');
  finally
    urlVar.Free;
  end;
帮忙看看这么写对不?为什么总是提示不存在呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-9 09:57:49 | 显示全部楼层
顶一下
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-1-9 02:32 , Processed in 0.042105 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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