我用DataSetProvider、DCOMConnection、ClientDataSet这三个控件做的三层,
请问远程数据模块怎样得到客户端的名称和IP,能不能给段代码?DataSetProvider和ClientDataSet之间能不能传递字符串,或者非记录集数据,
我只是想知道客户端做了什么操作,如插入、删除、修改,并且知道对哪个表操作了
操作的记录的ID号,以字符串方式传回去。另:不用CORBA如有代码小弟不胜感激,要分的话我在立新帖。

解决方案 »

  1.   

    可以的。
    装入与远程数据模块相联系的类型库文件(xxxxxx.tlb和xxxxxx_TLB.pas),在tlb窗口中的左边树中的接口结点中加入新的方法,保存后这个方法被定义到了xxxxxx_TLB.pas和远程数据模块的源码中,在远程数据模块代码中实现这个方法。然后在客户端通过DCOMConnection调用即可传递你想要传递的数据:如这个方法叫GetData(out Data: OleVariant),在客户端使用DCOMConnection1.Server.GetData(Data);即可。
      

  2.   

    更正:
    在客户端使用DCOMConnection1.Server.GetData(Data);即可。
    改为:
    在客户端使用DCOMConnection1.AppServer.GetData(Data);即可。
      

  3.   

    1。可在远程数据模块定义一方法,客户端调用此方法将名称和IP传过去。2。可以传递数据,DSP和CDS都有以下三对事件:BeforeGetRecords/AfterGetRecords, 
    BeforeDataRequest/AfterDataRequest, BeforeApplyUpdates/AfterApplyUpdates
    在这些事件里都有一个共同的参数OwnerData, 它就是用来传递自定义数据的。
    如果想知道客户端做了什么操作,可在DSP的AfterUpdateRecord事件(每条被处理的记录都
    执行此事件)内记录下操作的类别和相关的记录信息,然后在AfterApplyUpdates事件内设置
    返回值。
      

  4.   

    billy_zh(牛仔):
    1、这样做完全不能保证客户端传送信息的真实性2、同意,这是标准的解决方案。
      

  5.   

    to Miracle(秋水长天)
      传送数据时可以加密!
      

  6.   

    上楼说的有道理,可能还要调用API函数获得那个字符串吧。
      

  7.   

    如maozefa(之源)所说定义一个Function去得到,至于Client端什么时候调用这个Fucntion主动权在你,一般在Login时。
      

  8.   

    maozefa(之源)如你所说,如何在tlb窗口中的左边树中的接口结点中加入新的函数,而不是方法
      

  9.   

    在你的远程数据模块中定义N各接口方法,在客户端调用这些方法;如:
    SOCKETCONN1.APPSERVER.方法名()
    在方法中传递IP等信息!
      

  10.   

    楼上的各位,请问DCOMConnection1.AppServer.方法名(参数);调用远程服务器方法是动态连编会使客户端运行的非常慢,能不能提供一个静态连编的方法,望高手指点!注:
    我曾引用远程服务器生成的那个TLB类,如:
    interface
    uses  
      ...,Project1_TLB,...;然后定义一个类的实例
    aa:IMy_Server;再调用方法
    aa:=CoMy_Server.CreateRemote('192.168.0.109');
    if aa.方法名(参数) then showmessage('服务器登陆成功!');这样的话会多建立一个服务器的线程,造成不必要的资源浪费,而且每建立一个实例都创建一个线程
      

  11.   

    SOCKETCONN1.APPSERVER.方法名()
    这种方法可以,但是存在一定的缺陷:
    系统在客户端连接服务器的时候,一般同时打开数据库连接,以保证客户端的连接成功;之后才能调用 SOCKETCONN1.APPSERVER.方法名() 过程,这时传递入IP地址。如果我们要限制IP地址的话,只有调用SOCKETCONN1.APPSERVER.方法名()过程。程序在设计期不能够实现,也就是如果我们要用到IP的限制的程序,在设计期和应用期用不同的程序,请问能不能在客户端连接的同时将IP地址传递,以实现应用服务器在设计期可用。