Announcement

Collapse
No announcement yet.

XML-Datei laden und als Paradox.db speichern bzw. als Excel.xls

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • XML-Datei laden und als Paradox.db speichern bzw. als Excel.xls

    Hallo, weiß daß eventuell hier das falsche Forum ist, aber konnte mit Delphi & XML Forum nichts anfangen. Deswegen hier, außerdem geht es ja um Datenbanken.

    Ich habe eine XML-Datei mit DATAPACKET Version="2.0". Dies erhalte ich, wenn ich die Datei im Notepad öffne.

    Wie kann ich nun mir diese Datei in einem DBGrid anzeigen lassen und schließlich wahlweise als Paradox.db bzw. als Excel.xls File abspeichern.
    Das wichtigste ist allerdings erst mal die Anzeige in einem DBGrid.

    Wir haben hier Delphi 5 Enterprise mit Service Pack 1 sowie Excel 97.

    Kann man so eine XML-Datei auch in Excel 2000 öffnen? In Excel 97 habe ich es nicht hinbekommen?
    Gibt es vielleicht Tools von Drittanbietern, die so etwas schon können?

    Auf Antworten freut sich
    Carsten

  • #2
    Hallo,

    >Ich habe eine XML-Datei mit DATAPACKET Version="2.0".

    sowohl TClientDataset als auch ADO (Recordset-Objekt) ist in der Lage, die Daten einer XML-Datei als Datenbanktabelle zu interpretieren und nach dem Einlesen über TDataSource im TDBGrid anzuzeigen. Das ist die gute Nachricht. Die schlechte Nachricht ist, dass selbstverständlich jeder Anbieter (Borland und Microsoft) ein eigenes, proprietäres Format der XML-Datei erwartet. Zumindestens Microsoft ist bei ADO.NET deutlich "weltoffener" geworden, aber ADO.NET steht für Delphi zur Zeit noch nicht zur Verfügung.

    Das folgende Beispiel demonstriert, wie eine XML-Zeichenkette in eine Instanz des Recordset-Objekts von ADO umgetauscht werden kann:
    <pre>
    function XMLToRecordset (const XML: string): Recordset;
    var
    stm: Stream;
    begin
    Result := CoRecordset.Create;
    Result.CursorLocation := adUseClient;
    stm := CoStream.Create;
    stm.Open (EmptyParam, adModeUnknown,
    StreamOpenOptionsEnum(adOpenStreamUnspecified), '', '');
    stm.WriteText (XML, stWriteChar);
    stm.Position := 0;
    Result.Open (stm, EmptyParam, CursorTypeEnum(adOpenUnspecified),
    LockTypeEnum(adLockUnspecified), 0);
    stm.Close;
    end;
    </pre>
    Wenn die Daten erst einmal als Recordset-Objektinstanz vorliegen, steht dann über den OLE DB Provider <i>Microsoft Jet Engine</i> der Export-Weg nach Paradox, dBASE, HTML, CSV etc. offen

    Comment

    Working...
    X