小弟按照李维分布式多层系统篇里的例子,做一最简单的三层结构的数据库系统。
首先,建一应用程序,上放一Tlabel,caption里写"Socket服务器",然后建一Remote Data Module,取名"socketserver",放入ADOConnection、 ADOQuery、DataSetProvider,设置好相关属性:
1>ADOConnection里connectionstring设置为Sql server驱动,并指定里面的pubs表,测试连接,通过,Active设置为"true";
2>ADOQuery里connection设定为刚才的ADOConnection,SQL里面写的语句为"SELECT *
FROM jobs",Active设置为"true";
3>DataSetProvider里Dataset设置为刚才的ADOQuery;
完成中间层的开发,保存,运行
其次,建一Project Manager,先加入刚才开发的中间层程序,在这个基础上建一新的应用程序,放入SocketConnection、ClientDataSet、DataSource等控件,设置好相关属性:
4>SocketConnection里Host选择本机,ServerName选择刚才开发好的Project.socketserver,Connect选择"true",接着问题来了,Delphi呈死机状,打开任务管理器,发现这个Project1无响应,结束任务出现"ole服务无法绑定对象",这时只好置Connect为"false";
5>ClientDataSet里RemoteServer设置为刚才的SocketConnection,想设置ProviderName属性时,按下下拉框,这时又出现4>的现象,死机"ole服务无法绑定对象"
注:开发前Delphi bin里面的scktsrvr服务已经打开
请问,是什么原因?

解决方案 »

  1.   

    to yzykjh(菜单(菜鸟+简单)) :
       不好意思,条件所限,本人在单机上完成的!
      

  2.   

    将SocketConnection的supportCallBack属性换成False试试
      

  3.   

    to  shaver()兄:
      顺便还问你一个问题,为什么将SocketConnection的supportCallBack属性换成False,就不死机了呢?说说原因好么?
      

  4.   

    是因为你的远程数据模块并没有建立,服务器端写一句datamodel。create(nil)
      

  5.   

    把 C:\Program Files\Borland\Delphi7\Bin目录下的scktsrvr.exe启动,
    SocketConnection连接时需要这个
      

  6.   

    SocketConnection,不用supportCallBack,这是与SOCKET的连接方式有关,