在做c/s的时候,服务器部分已经做好.客户部分已正常连接,但是用clientdataset的时候providername没有内容,请是是不是服务器的哪一项没有填到?
我在服务器部分用的是adoconnection+adodataset+datasepprivder 
在客户部分用的dcomconnection+clientdataset

解决方案 »

  1.   

    使用Delphi 5.0开发。步骤是:(1)建立应用程序。(2)建立远程数据模块(3)在远程数据模块中使用数据集组件连接数据库,(4)使用TDataSetProvider组件连接远程数据模块之中的数据集组件。(5)注册服务器应用程序。
    首先建立一个空的应用程序,然后点击菜单File|New打开New Items对话框,在对话框上的Multitier标签页上,选择Remote Data Module,然后点击确定按钮,会建立一个远程数据模块。可以在数据模块里面加入TDatabase、TTable、TQuery和TDatasetProvider组件,将TDatabase与SQL Server数据库相连,将TTable或TQuery 组件与数据库中的表相连,最后把TDatasetProvide和数据集组件连接起来。把做成的应用服务器运行一下,系统会自动注册应用服务器,这样一个最基本的应用服务器就做成了。
    (3)客户端开发
    多层结构的客户端应用程序与一般的应用程序基本相同。首先用File|New打开New Items对话框,在对话框上的New标签页上,选择Application然后点击确定按钮建立一个新的应用。在新生成的Form上添加TClientDataset、TSoketConnection和TDataSource组件,然后在Form上放一些数据感知组件TDBGrid组件,用来显示数据。首先使用TSoketConnection组件连接应用服务器,将TSoketConnection组件的Host属性填上应用服务器主机的IP地址,把ServerName属性设成远程应用服务器的名称。把TClientDataset的RemoteServer属性设成SoketConnection1,把 ProviderName属性与应用服务器的TDataSetprovider组件相连。把TDataSource组件的DataSet属性与TDatasource组件相连,数据库感知组件的DataSource属性设成DataSource1。
    通过DCOM或者Socket,客户端的MIDAS.DLL会负责在客户端机器和应用服务器之间把数据以数据封包(data packet)的形式于两台机器中间传递。然后于每一端的机器中接受到数据封包之后,再解开数据封包的内容更新于客户端的数据感知组件之中,或是更新回数据库服务器中。在应用程序服务器之中的OLE Automation Server可以通过BDE/OLE DB/ADO等方式从数据库取得数据,把数据压缩成数据封包的形式,通过DCOM或者Socket连接传递到客户端的机器之中,再由MIDAS.DLL于客户端接受到数据后,解压封包之中的数据,再让ClientDataSet显示于客户端应用程序的数据感知组件之中。《Delphi 5.x 分布式多层应用系统篇》