delphi OleVariant转换RecordSet

 uses Data.Win.ADODB;

function varToRecordSet( parms : OleVariant )  : Data.Win.ADODB._Recordset;
  begin
    Result := IDispatch( parms ) as Data.Win.ADODB._Recordset;

  end;

function RecordSetToVar( prs : _Recordset ) : OleVariant;

  begin
    Result := prs;
  end;
function recordSetToXMLString(prs:winapi.ADOInt._Recordset): string;
  var
  astr:string;
  stream:TStringStream;
  begin
   stream := TStringStream.Create('');

   prs.Save(TStreamAdapter.Create(stream) as IUnknown,adPersistXML);
   stream.Position:=0;
   astr:=stream.DataString;
   stream.Free;
   Result := astr;

  end;

  function xmlStringToRecordSet(pxml:string): _Recordset;
  var
  drs:Data.Win.ADODB._Recordset;
  irs:winapi.ADOInt._Recordset;
  RS: Variant;
  stream:TStringStream;
  begin
     stream := TStringStream.Create(pxml);
     stream.Position:=0;
     RS := CreateOleObject('ADODB.Recordset');
      RS.Open(TStreamAdapter.Create(stream) as IUnknown);

     Result := IUnknown(RS) as winapi.ADOInt._Recordset;
  end;

ids: IDispatch;

 ADODataSet1.Recordset :=  ids  as _Recordset;