HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

ADO objektumok Recordset tulajdonságának XML formátummá alakítása


Példaprogram letöltése

7188 bájt

Készítünk egy ADOXMLConverter nevű komponenst, melynek segítségével az ADO objektumok Recordset tulajdonságát könnyedén átkonvertálhatjuk XML formátummá, illetve az XML formátumot visszaalakíthatjuk Recordset tulajdonsággá. Ezáltal adattábláink tartalmát, lekérdezéseink eredményeit XML formátumú állományokba is elmenthetjük és azokat más programokban is felhasználhatjuk, illetve más programok által készített XML állományokat is felhasználhatunk.

A mellékelt példaprogram megnyitása előtt az ADOXMLConverter.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A komponens a TComponent osztályból származik. Tartalmaz egy Recordset property-t, amelyen keresztül hozzárendelhetjük egy ADO komponenshez. Ez lehet mondjuk egy TADOQuery vagy egy TADOTable komponens. A Recordset property TCustomADODataSet típusú.
A komponensnek szüksége van egy XmlFilename String típusú property-re, amelyben megadhatjuk majd annak az állománynak a nevét, amelybe az adatokat el szeretnénk menteni, illetve ahonnan be szeretnénk olvasni azokat.
A RecordsetToXML függvény
function RecordsetToXML(const Recordset: _Recordset): String;
A függvény a Recordset-ből XML formátumot készít. Működésének lényege az alábbi forráskódban látható.
RS:=CreateOleObject('ADODB.Recordset');
RS:=Recordset;
RS.Save(TStreamAdapter.Create(Stream) as IUnknown, adPersistXML);
Stream.Position:=0;
Result:=Stream.DataString;
Az RS egy Variant, a Stream pedig egy TStringStream típusú változó. Az RS értékül kapja a Recordset tulajdonságot, majd azt elmenti a Stream változóba. A Stream változóba már az XML formátum kerül. Ez a konverzió az adPersistXML paraméter hatására jön létre.
A függvény hívása a következő módon történhet:
Memo1.Lines.Text:=ADOXMLConverter1.RecordsetToXML(ADOQuery1.Recordset);
A RecordsetFromXML függvény
Function RecordsetFromXML(const XML: String): _Recordset;
A függvény az XML paraméterben kapott XML formátumú szöveget átalakítja Recordset tulajdonsággá, és ezt adja visszatérési értékként.
Stream:=TStringStream.Create(XML);
Stream.Position:=0;
RS:=CreateOleObject('ADODB.Recordset');
RS.Open(TStreamAdapter.Create(Stream) as IUnknown);
Result:=IUnknown(RS) as _Recordset
A függvény hívása a következő módon történhet:
ADOQuery1.Recordset:=ADOXMLConverter1.RecordsetFromXML(Memo1.Lines.Text);
A SaveToXmlFile eljárás
Procedure SaveToXmlFile(const Recordset: _Recordset);
Az eljárás működése hasonlít a RecordsetToXML függvény működéséhez, csak az XmlFileName property-ben megadott állományba menti el az átkonvertált adatokat. A RecordsetToXML függvénnyel ellentétben itt a Stream (TStringStream) változó helyett a MemoryStream (TMemoryStream) változót használjuk, amely képes tartalmát elmenteni egy fájlba.
MemoryStream.SaveToFile(fXMLFileName);
A függvény hívása a következő módon történhet:
ADOXMLConverter1.XmlFileName:='Temp.xml';
ADOXMLConverter1.SaveToXmlFile(ADOQuery1.Recordset);
A ReadFromXmlFile függvény
Function ReadFromXmlFile: _Recordset;
A függvény működése hasonlít a RecordsetToXML függvény működéséhez, csak az XmlFileName property-ben megadott állományból olvassa be az adatokat. A SaveToXmlFile eljáráshoz hasonlóan itt is TMemoryStream-et használunk.
MemoryStream.LoadFromFile(fXMLFileName);
A függvény hívása a következő módon történhet:
ADOXMLConverter1.XmlFileName:='Temp.xml';
ADOQuery1.Recordset:=ADOXMLConverter1.ReadFromXmlFile;
A Notification eljárás
Ha a Recordset tulajdonságot beállítjuk, majd letöröljük azt a komponenst, amire az mutat, akkor máris szembe találjuk magunkat az „Access Violation” ablakkal. Ez a metódus hivatott kivédeni ezt a problémát az alábbi kóddal.
if (AComponent=fRecordset) and (Operation=opRemove) then 
   fRecordset:=nil;

Cikksorozat

#IDKategóriaCikk címeSorozat
3047WindowsAz XML bemutatása1. rész
3059WindowsAz XML bemutatása2. rész
3068WindowsAz XML bemutatása3. rész
3077WindowsAz XML bemutatása - deklarációk4. rész
3086WindowsAz XML bemutatása - MSXML, XSLT5. rész
3094WindowsAz XML bemutatása - DTD6. rész
3105WindowsXML adatok megjelenítése Excel-ben7. rész
3114WindowsDokumentum hivatkozások az XML-ben8. rész
3123WindowsXML adattípusok9. rész
3132WindowsXML adatok HTML oldalakon10. rész
3141WindowsXML Notepad11. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2002 évkönyv 641. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |