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;