Announcement

Collapse
No announcement yet.

Probleme mit TClientDataset

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

  • Probleme mit TClientDataset

    Hallo Her Kosch,

    ich hoffe Sie können mir bei meinem Problem weiterhelfen.
    Ich benutze ein TClientDataset mit einer XML Datei.
    Aufbau ist etwa wie:

    <PRE>
    &lt;DATAPACKET Version="2.0"&gt;
    &lt;METADATA&gt;
    &lt;FIELDS&gt;
    &lt;FIELD attrname="Person" fieldtype="nested"&gt;
    &lt;FIELDS&gt;
    &lt;FIELD attrname="Teil1" fieldtype="nested"&gt;
    &lt;FIELDS&gt;
    &lt;FIELD attrname="Name" fieldtype="nested"&gt;
    &lt;FIELDS&gt;
    &lt;FIELD attrname="Vorname" fieldtype="string" WIDTH="256"/&gt;
    &lt;FIELD attrname="Nachname" fieldtype="string" WIDTH="256"/&gt;
    &lt;/FIELDS&gt;
    &lt;PARAMS/&gt;
    &lt;/FIELD&gt;
    &lt;/FIELDS&gt;
    &lt;PARAMS/&gt;
    &lt;/FIELD&gt;
    &lt;/FIELDS&gt;
    &lt;PARAMS/&gt;
    &lt;/FIELD&gt;
    &lt;/FIELDS&gt;
    &lt;/METADATA&gt;
    &lt;ROWDATA/&gt;
    &lt;/DATAPACKET&gt;
    </PRE>

    Wie muß ich auf die Felder "Vorname" und "Nachname" zugreifen, damit ich sie mit Werten füllen kann? Wenn ich das mit einem Grid probiere bekomme ich immer die Meldung "No current Record". Gebe ich die ROWS etwa in der Form

    <PRE>
    &lt; ROWDATA&gt;
    &lt; ROW RowState="4"&gt;
    &lt; Person&gt;
    &lt; ROW RowState="4"&gt;
    &lt; Teil1&gt;
    &lt; ROW RowState="4"&gt;
    &lt; Name&gt;
    &lt; ROW RowState="8" Vorname_12744="Tester" Nachname_12745="Mann" /&gt;
    &lt; /Name&gt;
    &lt; /ROW&gt;
    &lt; /Teil1&gt;
    &lt; /ROW&gt;
    &lt; /Teil1&gt;
    &lt;/ROW&gt;
    &lt;/ROWDATA&gt;
    </PRE>

    vor, erhalte ich beim Post die Meldung "Operation not aplicable".

    Was mach ich falsch?

    Gruß

    Thorsten Meyer

  • #2
    Hallo,

    warum so kompliziert? Auch wenn TClientDataSet die Daten als XML speichern kann, bedeutet dies doch nicht, dass wir etwas vom internen XML-Aufbau verstehen müssen :-)

    Ich würde die Tabelle für TClientDataSet im Programm erzeugen, dann via TDataSource/TDBGrid mit Testdaten füllen und das Ganze dann über <b>SaveToFile</b> speichern:
    <pre>
    with ClientDataSet1 do
    begin
    FieldDefs.Add('INT', ftINTEGER);
    FieldDefs.Add('VARCHAR', ftSTRING, 75);
    CreateDataSet;
    LogChanges := False;
    Open;
    ....
    FileName := 'Test.xml';
    SaveToFile;
    end;
    </pre>
    Borland hat nirgendwo geschrieben, dass TClientDataSet mit universellen XML-Daten umgehen kann (so weit geht die Freundschaft in der Branche dann doch wieder nicht)

    Comment

    Working...
    X