如何将一个数据集从中间层传递到客户端?请给源代码的实例,谢谢!

解决方案 »

  1.   

    如果中间层使用ADO组件连接数据库的话,可以直接将返回的数据集recordset用olevariant封装传回客户端使用。
      

  2.   

    AppServer端var
      ADOQuery1: TADOQuery;
      dspBookType: TDataSetProvider;
      mStr: string;
    begin
      try
        ADOQuery1:= TADOQuery.Create(self);
        dspBookType:= TDataSetProvider.Create(self);
        dspBookType.DataSet:= ADOQuery1;
        ADOQuery1.ConnectionString:= GetConStr;
        ADOQuery1.Close;
        ADOQuery1.SQL.Clear;
        mStr:= 'select * from usertype';
        ADOQuery1.SQL.Add(mStr);
        ADOQuery1.Open;
        if not ADOQuery1.Eof then
          vResult:= dspBookType.Data;(返回给client端的clientDataSet)
      except
        ADOQuery1.Close;
      end;
    Client端:var
      vResult: OleVariant;
      cdsUserQuery: TClientDataSet;
    begin
      Book.userQuery(vResult);  (调用服务端,返回一个variant*)
      cdsUserQuery:= TClientDataSet.Create(self);
      cdsUserQuery.Data:= vResult(服务端的DataSetProvider的记录集);
    end;
      

  3.   

    最简单的就是使用datasnap的功能,
    ClientDataset.XmlData
    这是个String;
    客户端接收到后,
    ClientDataSet.XmlData ;= 得到的参数
    就可以了