我写了一个接口方法,GetDBNames(servname, dbname, flag)
用ClientDataSet1去连接此接口,   
先执行下面的代码:
   ClientDataSet1.Active := False;    
   clientDataset1.RemoteServer.AppServer.OpenQuery(sql, 2);
然后再执行:
    ClientDataSet1.Active := False;
    InfoFile.CommaText := ClientDataSet1.RemoteServer.AppServer.GetDBNames(servname, dbname, flag);
    ClientDataSet1.Active := True;它却在打开了此DataProvider关联的数据集.

解决方案 »

  1.   

    看一下这一行:
        ClientDataSet1.Active := True;
    这一行的意思为:
      将ClientDataSet1对应的DataProvider关联数据集打开,并返回结果数据集你要用接口的话,应该以这种方式赋值:ClientDataSet.Data := ......
      

  2.   

    clientDataset1.RemoteServer.AppServer.OpenQuery(sql, 2);
    你这个是干什么的?
    如果是吊用方法  那就直接 ClientDataSet1.RemoteServer.AppServer.GetDBNames(servname, dbname, flag);就可以了
      

  3.   

    你在应用服务器那里处理不行吗?为什么要 ClientDataSet1.Active := False;再ClientDataSet1.Active := True;
      

  4.   

    procedure TForm_Main.btn_QuitClick(Sender: TObject);
    var
      UserID,UserName,cStation,cIP:WideString;
      TempInterface: IRDM_CostDisp;
    begin
     UserID:=fControlFlag.UserID;
     cStation:=GetComputerName;
     cIP:=GetComputerIP;
     TempInterface:=IRDM_CostDisp(IDispatch(DM_Connection.SocketConnection.AppServer)); TempInterface.UpdateLog(1,'',UserID,cStation,cIP);
    end;
    这个是我系统中接口调用的一个方法,给你参考
      

  5.   

    不好意思,上面我说错了不然试试这样吧
    clientDataset1.RemoteServer.AppServer.OpenQuery(sql, 2);
    clientDataset1.close;
    clientDataset1.open;
    就可以了,返回的是一个数据集
      

  6.   

    DreamStrat(梦启动的摇篮…) 
    说的很对,嗯