我在做一个简单的三层结构,在服务端,我动态建立了TDataSetProvider,但是我在客户端连接时,ClientDataSet1的ProviderName属性中看不到我建立的TDataSetProvider,这样应该怎么做啊?
动态建立的,在客户端怎样连接啊?
谢谢各位了,现在弄的我头大...

解决方案 »

  1.   

    Provider1 := TdataSetProvider.Create(Self);
    RegisterProvider(Provider1);
      

  2.   

    我用ADO连接的...    Str :='Provider=SQLOLEDB.1;Password='
             + ServerFrm.PasswordEdt.Text
             +';Persist Security Info=True;User ID='
             + ServerFrm.UserEdt.Text
             +';Initial Catalog='
             + ServerFrm.BaseEdt.Text
             +';Data Source='
             + ServerFrm.IPEdt.Text;
        ADO.Close;
        ADO.ConnectionString :=Str;
        ADO.Open;
        ADOSet :=TADOQuery.Create(self);
        ADOSet.Connection :=ADO;    DataSetPr := TdataSetProvider.Create(Self);
        DataSetPr.DataSet :=ADOSet;
        RegisterProvider(DataSetPr);
    这个是代码,你看看我做的对不对..
      

  3.   

    你应该在远程数据模块上给一个函数
    function myRemoteData.CreateUnqiueName:string;
    var
      i :integer;
    begin
      i := 0 
      repeat
        result := 'MyproviderName'+IntToStr(i);
        Inc(i);
      until Self.FindComponent(Result) = nil;end;
    ....然后在
        DataSetPr := TdataSetProvider.Create(Self);
        DataSetPr.Name := CreateUnqiueName;
        DataSetPr.DataSet :=ADOSet;    //RegisterProvider(DataSetPr); 好象可以不要,如果不行就要吧    RegisterProvider(DataSetPr);
      

  4.   

    比如说
    function myRemoteData.CreateUnqiueName:string;
    var
      i :integer;
    begin
      i := 0 
      repeat   //这个是什么意思?为什么要加一个变量I
        result := 'MyproviderName'+IntToStr(i);
        Inc(i);
      until Self.FindComponent(Result) = nil;end;
      

  5.   

    呵呵REPEAT是表示重复,是PASCAL的基础