скрыть

скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Google  
 

Перевести набор данных ADO в XML и обратно



Оформил: DeeCo

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.





Copyright © 2004-2016 "Delphi Sources". Delphi World FAQ




Группа ВКонтакте   Ссылка на Twitter   Группа на Facebook