![]() |
Datenbank: MYSQL • Version: 5.0 • Zugriff über: ADO
ADO in CSV-Stream
Hallo,
ich habe folgende beiden Routinen gefunden, um ADO-Abfrageergebnisse im XML-Format in einem Stream zu speichern. Quelle: ![]() Ich würde allerdings gerne im CSV-Format in einem Stream speichern. Hat jemand einen Tip ? Gruß Luis
Delphi-Quellcode:
function TForm1.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; function TForm1.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; |
AW: ADO in CSV-Stream
Kannst Du
![]() |
AW: ADO in CSV-Stream
Ja, ich bin ja dran, allerdings würde mich interessieren,
ob man den Paramter adPersistXML durch einen entsprechenden CSV.. Parameter ersetzen kann. Die XML-Formatierung läuft ja alleine über diese Parameter, wobei RS.Save(.. ) die XML-Formatoerung intern kennt. |
AW: ADO in CSV-Stream
Da musst Du mal einen Blick in die ADOInt.pas werfen, ob es etwas Entsprechendes darin gibt. Ansonsten selber machen, CSV ist ja nicht ganz so kompliziert wie XML, obwohl auch dort ein paar Stolperfallen lauern.
|
AW: ADO in CSV-Stream
Um es kurz zu machen - bei ADO sind nur ein binäres Datenformat (adPersistADTG) und ein XML Format (adPersistXML) vorgesehen.
Nur diese Formate erlauben ein völliges Wiederherstellen eines Recordsets. CSV wäre dazu ungeeignet weil alle Informationen zu den Feldern (Name, Datentyp, Länge, Nachkommastellen,...) verloren gehen würden. |
AW: ADO in CSV-Stream
Danke, super !
"adPersistADTG" sollte auch gehen, da diese Format nur um Transport benutzt werden soll und dann später zur Darstellung wieder ausgepackt wird. Wahnsinn, was die Leute hier im Forum immer wieder drauf haben. Kompliment ! |
AW: ADO in CSV-Stream
sx2008 -> that`s it:
SQL-Anfrage über Web-Server an SQL-Server gepackt in "adPersistADTG" zurück zu Client und wieder ausgepackt in Recordset...
Delphi-Quellcode:
function TForm1.RecordsetTo_adPersistADTG(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, adPersistADTG ); Stream.Position := 0; Result := Stream.DataString; finally Stream.Free; end; end; function TForm1.RecordsetFrom_adPersistADTG(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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz