我想写一个MIDAS程序,用的是DCOM连接,这里有个疑问:
当某个客户端调用ApplyUpdates(0)时,应用服务端就开始
进行数据刷新,问题是,我怎么才能让应用服务端同时向
所有其它的客户端更新数据呢?(不要说李维的书上有,
我就是在短时间之内找不到才问的)

解决方案 »

  1.   

    你的程序是怎么写的,用到事务处理了吗?
    ...
    applyupdates(0);
    事务.commit;
    commitupdates;
    if clientdataset1.updatestatus<>usUnModified then
       raise;       
    clientdataset1.refreshrecord;//加这句试试
      

  2.   

    只要客户端提交成功,服务器端就跟着刷新。但有一条出错,将失败。
    所以改为以下语句,当发现有出错时,继续往下更新下一条。
    procedure TForm1.ClientDataSet1AfterPost(DataSet: TDataSet);
    begin
        (DataSet AS TClientDataSet).ApplyUpdates(-1)
    end;我的英文不是太好,其实有些英文网站的midas写得不错,值得一看(硬看).
      

  3.   

    要实现你这种功能,你需要创建一个客户端的COM+组件,这个组件实现这个功能:由服务器端向客户端发消息要求更新数据,客户端的该组件收到此消息时即执行数据更新操作.
      

  4.   

    用COM+这个方式应该不错
    我的应用服务器有TDatabase、TTable和TDataSetProvider组件
    客户端有TClientDataSet、TDataSource和TDBGrid等组件
    小弟愚钝
    不知道COM+该加在哪里
    代码在什么地方添加
    望指点,谢谢
      

  5.   

    我觉的根本没有必要做这个操作,你想一想,如果你有成百上千个用户时,每一个用户如果更新某一条记录,那么应用程序服务器就要进行全部的更新,试想,同时有几个用户或是更多的用户更新数据时,你的应用程序服务器能承受的了?这种情况只有客户端去触发、如果客户端根本不对这条记录操作的话,那么就更没有必要刷新,再者,当客户端下载了之后,基本上可以认为断开状态,只有它自己执行了操作的时候,才有机会下载最新数据//你想过效率问题了吗?
    再者,如上边大宋所说,利用事务处理,我觉的这是回到了c/s结构,而不是正真的Midas;
      

  6.   

    hansome(连环) 
    COM+?呵呵,等……
      

  7.   

    概念错误,中间层是无状态的,客户端维护的是已经存在本机中的数据,除非客户端刷新,否则无法取得更新的数据。你要的解决方案是,客户端需要刷新机制。服务器端不控制客户端。COM+,可能复杂一些了吧?还不如客户端用定时器来的简单些。
      

  8.   

    为了提高效率,以及减轻应用服务器的负担,在从应用服务器上获取信、息后,应该考虑断开客户段与应用服务器的连接,除非在提交新的数据后,可以在客户端设置一个刷新模块,条件触发后马上传递给应用服务器,但是你在客户端与应用服务器的断开时必须要注意,应该首先关闭调adoconnect 组件,然后断开数据集
      

  9.   

    问题总是要解决的
    或许MIDAS不适合做
    但是它也肯定是可以做的
    结构就是这样
    想改也没有办法
      

  10.   

    使用COM+的回調(CALL BACK),Demo中有一個﹐不過我沒有做過。