Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   SQL->XML->SQL (https://www.delphipraxis.net/49174-sql-xml-sql.html)

dizzy 6. Jul 2005 15:21

Datenbank: MySQL • Version: 4.1 • Zugriff über: Zeos, ist aber wurscht für die Frage ;)

SQL->XML->SQL
 
Moin!

Folgendes muss ich realisieren: Eine Delphi-Anwendung ermittelt aus einer Tabelle einer SQL-DB ein paar Datensätze, die bestimmten Kriterien entsprechen. Diese muss ich nun SO in eine XML-Datei verpacken, dass ich sie mittles eines .NET-Datasets (im Compactframework) als Datenquelle verwenden kann. Dort werden dann Felder der Datensätze vom User befüllt, und nun soll meine Delphi-Anwendung diese geänderten Daten aus dem XML-File in die lokale DB wieder einpflegen.

Meine Frage ist nun: Wie erzeuge ich aus, z.B. einer Table, ein XML-File welches wie o.g. verwendbar ist? Bzw. wie kann ich selbiges auch in Delphi wieder einlesen?

Ich habe nun so Dinge wie TXMLTransformProvider u.a. gefunden, aber aus der Hilfe zu denen wird mir mal so überhaupt garnicht klar, was die Dinger können, und wie sie im groben eingesetzt werden, und ob sie mir überhaupt bei meinem Problem weiter helfen :stupid:.


\\Edit: Das ganze sieht mir reichlich komplex aus... Ich bin schon kurz davor es dann doch mit CSV-Files zu machen, und diese dann zu parsen. Die Funktion für die ich das brauche ist ja eher eine Zugabe zu einem Programm - das sollte jetzt nicht wer weiss wie generisch und perfekt sein - nur funktionieren :D.

mschaefer 6. Jul 2005 17:20

Re: SQL->XML->SQL
 
Moin, moin,

erfreulicherweise haben sich an sowas schon andere ihre Zähne angelegt:

XMLDataSet

Der XMLDataset wird verwendet, um den Inhalt eines Datensatzes in XML umzuwandeln, damit die Daten zwischen zwei Remoteanwendungen ausgetauscht werden können. XMLDataset wandelt den Datensatz in XML derart um, daß der Datensatz am Zielrechner rekonstruiert werden kann.

Grüße // Martin

dizzy 6. Jul 2005 19:45

Re: SQL->XML->SQL
 
Danke dir schonmal! Ich schau's mir morgen im Büro gleich mal an. Ist das produzierte XML-File dann nur wieder von dieser Kompo lesbar, oder kann ich da mit einem .NET-Dataset auch dran gehen? (Bzw. was muss ich tun, damit eben dies funktioniert?)

mschaefer 6. Jul 2005 20:17

Re: SQL->XML->SQL
 
Die Komponente kann ihre eigene Struktur wieder lesen. Im Prinzip mü´te die auch an Net anzupassen sein. Letzlich hängen dahinter ja nur Fileoperationen. Die Ableitung der Komponente muß dann nochmal überarbeitet werden...

Bis morgen // Martin

dizzy 7. Jul 2005 13:53

Re: SQL->XML->SQL
 
Ich habe das Teil nun mal angefasst, und konnte es leider schon nicht installieren. Zunächst meinte es die vcl50 zu brauchen (ich habe D7), und im 2. Anlauf kannte er an einer Stelle den Bezeichner "Null" nicht, der einem Variant zugewiesen werden soll. Ändern in "nil" brachte nur den neuen Fehler dass Variant und Pointer inkompatibel sein :D.
Der Beschreibung nach habe ich allerdings so meine Bedenken ob ich .NET die erzeugte Struktur mal eben beibringen kann, zumal dazu wie ich gelesen habe diverse Files nötig wären, die diese erstmal beschreiben.
In Anbetracht des geringen Umfangs der Funktion im Gegensatz zum Aufwand dies mit XML zu machen (für mich, da ich sehr wenig von XML weiss), werde ich dann wohl doch ein proprietäres oder CVS-basiertes Format zum Austausch benutzen.
Danke dir trotzdem für den Link und den guten Willen :).

mschaefer 7. Jul 2005 14:55

Re: SQL->XML->SQL
 
Moin, etwas Grübel,

gut das dies kein Net-dpk ist war eigentlich zu erwarten, also geht die dpk Installation natürlich nicht.
Nimm einfach Menü: Komponente Unterpunkt Komponente installieren. Eventuell definierst Du Dir hier ein
eigenes Package. Das sollte gehen, den ich habe ja auch kein D5 und daher ist das dpl-File für mich auch nichtig.

Sonst ist die Komponente einfach von TComponent abgeleitet. Das fürfte die Vcl-für Net daher mitmachen. Als Eigenschaft hat Sie dann auch eine Dataset-Property, dass ist auch nur VCL. Würde mir das Thema Komponenteninstallation nochmal anschauen.

Der Clou der Komponente ist ja gerade, dass man nicht sich selbst mir der XML-Struktur herumschlagen muß, sondern den DataSet angibt und die Komponente daraus eine XML-Struktur beim Speichern in ein Textfile aufbaut.

Grüße // Martin

mschaefer 7. Jul 2005 15:02

Re: SQL->XML->SQL
 
Das Variant-Problem:

Bei Varianten gab es von D5 bis 2005 doch einige änderungen. Unter D& geht das Zuweisen eines Null-Wertes an eine Variante so:

Null( Variante );

Grüße // Martin

shmia 7. Jul 2005 16:45

Re: SQL->XML->SQL
 
Zitat:

Zitat von dizzy
Ich habe das Teil nun mal angefasst, und konnte es leider schon nicht installieren. Zunächst meinte es die vcl50 zu brauchen (ich habe D7), und im 2. Anlauf kannte er an einer Stelle den Bezeichner "Null" nicht, der einem Variant zugewiesen werden soll. Ändern in "nil" brachte nur den neuen Fehler dass Variant und Pointer inkompatibel sein :D.

Du hättest wahrscheinlich die Unit Variants einbinden müssen, damit D7 den Wert Null kennt.
Viele/Alle Funktionen & Konstanten, die sich auf den Datentyp Variant beziehen wurden mit Delphi6
von der Unit System -> Unit Variants ausgelagert.

dizzy 7. Jul 2005 16:51

Re: SQL->XML->SQL
 
Zitat:

Zitat von mschaefer
gut das dies kein Net-dpk ist war eigentlich zu erwarten, also geht die dpk Installation natürlich nicht.

Ne, da hast du mich falsch verstanden. Ich habe nicht D2005, sondern D7! Ich brauche nachher nur ein XML-File, dass ich dem im .NET vorhandenen DataSet anbieten kann.

Zitat:

Zitat von mschaefer
Der Clou der Komponente ist ja gerade, dass man nicht sich selbst mir der XML-Struktur herumschlagen muß, sondern den DataSet angibt und die Komponente daraus eine XML-Struktur beim Speichern in ein Textfile aufbaut.

Und da ist das Problem: Ich werde das XML-File nachher eben NICHT mit dieser Kompo auslesen können, da dies auf einem PocketPC via .NET geschehen soll. Und dort muss ich erst mitteilen, wie das File strukturiert ist. Da ich mich aber faktisch garnicht mit XML-Spezifikationen auskenne, ist das allein schon ein Hindernis für mich.

Zitat:

Zitat von shima
Du hättest wahrscheinlich die Unit Variants einbinden müssen, damit D7 den Wert Null kennt.
Viele/Alle Funktionen & Konstanten, die sich auf den Datentyp Variant beziehen wurden mit Delphi6
von der Unit System -> Unit Variants ausgelagert.

:wall:, okay das leuchtet ein. Danke für den Hinweis!

rwachtel 7. Jul 2005 16:55

Re: SQL->XML->SQL
 
Kannst Du für Deine Aufgabenstellung nicht einfach das TClientDataSet verwenden?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:02 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz