Mega Code Archive

 
Categories / Delphi / ADO Database
 

ADO Recordset XML

Title: ADO Recordset XML Question: This unit provide two functions: function RecordsetToXML(const Recordset: _Recordset): String; function RecordsetFromXML(const XML: String): _Recordset; They are very usefull for export/import operations. Answer: unit ADOXMLUnit; interface uses Classes, ADOInt; function RecordsetToXML(const Recordset: _Recordset): String; function RecordsetFromXML(const XML: String): _Recordset; implementation uses ComObj; { Example: ... Memo1.Lines.Text:=RecordsetToXML(ADOQuery1.Recordset); ... } function RecordsetToXML(const Recordset: _Recordset): String; var RS: Variant; Stream: TStringStream; begin Result:=''; if Recordset=nil then Exit; Stream:=TStringStream.Create(''); try RS:=CreateOleObject('ADODB.Recordset'); RS:=Recordset; RS.Save(TStreamAdapter.Create(stream) as IUnknown, adPersistXML); Stream.Position:=0; Result:=Stream.DataString; finally Stream.Free; end; end; { Example: ... ADOQuery1.Recordset:=RecordsetFromXML(Memo1.Lines.Text); ... } function RecordsetFromXML(const XML: String): _Recordset; var RS: Variant; Stream: TStringStream; begin Result:=nil; if XML='' then Exit; try Stream:=TStringStream.Create(XML); Stream.Position:=0; RS:=CreateOleObject('ADODB.Recordset'); RS.Open(TStreamAdapter.Create(Stream) as IUnknown); Result:=IUnknown(RS) as _Recordset; finally Stream.Free; end; end; end.