[GELÖST] FieldRef auf Code => FORMAT(FieldRef) ist leer!

7. August 2008 13:55

Hallo Leute,

ich habe gerade ein kleines aber gemeines Problem bei der Verarbeitung von Feld-Referenzen.

Ich möchte den Inhalt eines Feldes in einen XML-Datenstrom schreiben, jedoch klappt das nicht bei allen Datentypen. Soweit ich das bis jetzt mitbekommen habe bleibt ein
FORMAT(FieldRef) bei den Datentypen Code, Date, DateFormula und sicher noch anderen leer.

Hat jemand eine Idee, wie ich den Wert des Feldes bekomme oder referenziere ich das Feld vielleicht falsch?

Hier etwas Code:
Code:
  XMLNodeRecord := XMLDocument.createElement('RECORD');
  FOR i := 1 TO lrrRecordRef.FIELDCOUNT DO BEGIN
    lfrFieldRef := lrrRecordRef.FIELDINDEX(i);
    XMLNodeField := XMLDocument.createElement('FIELD');
    AddAttribute(XMLNodeField, 'ID', FORMAT(lfrFieldRef.NUMBER));
    XMLNodeField.text := FORMAT(lfrFieldRef);
    XMLNodeRecord.appendChild(XMLNodeField);
  END;
  XMLNodeTable.appendChild(XMLNodeRecord);


Besten Dank schonmal

Gruß Falk
Zuletzt geändert von FAFL am 7. August 2008 14:31, insgesamt 1-mal geändert.

Re: FieldRef auf Code => FORMAT(FieldRef) ist leer!

7. August 2008 14:05

FAFL hat geschrieben:FORMAT(FieldRef) bei den Datentypen Code, Date, DateFormula und sicher noch anderen leer.

Nur zur Sicherheit: Hast du die Stelle mit dem FORMAT gedebuggt und dadurch sicher gestellt, dass dein FieldRef überhaupt gefüllt ist?

Re: FieldRef auf Code => FORMAT(FieldRef) ist leer!

7. August 2008 14:06

Versuche es mal mit
XMLNodeField.text := FORMAT(lfrFieldRef.VALUE);

Re: FieldRef auf Code => FORMAT(FieldRef) ist leer!

7. August 2008 14:12

@Natalie
Der gleiche Code funktioniert tadellos, wenn es sich z.B. um Option- oder Textfelder handelt und zumindest einige der auszugebenden Code-felder sind auch gefüllt, nur das FORMAT(FieldRef) liefert nichts.

@Timo
gleiches Ergebnis. Und die Hilfe sagt auch, dass man FORMAT(FieldRef) anstatt FORMAT(FieldRef.VALUE) verwenden soll.

Gruß Falk

Re: FieldRef auf Code => FORMAT(FieldRef) ist leer!

7. August 2008 14:29

Ich nehme alles zurück und behaupte das Gegenteil :-)

Es war ein ganz banaler Anfängerfehler.

etwas mehr Code:
Code:
lrrRecordRef.OPEN(piTableNo);
IF lrrRecordRef.FIND('-') THEN;
liRecordSum := lrrRecordRef.COUNT;
liRecordCount := 0;
gdlgStateBar.UPDATE(2,0);
REPEAT
  liRecordCount += 1;
  giRecordCount += 1;
  IF (liRecordCount MOD 10) = 0 THEN BEGIN
    gdlgStateBar.UPDATE(2, ROUND((liRecordCount/liRecordSum*10000),1));
    gdlgStateBar.UPDATE(3, ROUND((giRecordCount/giRecordSum*10000),1));
  END;

  XMLNodeRecord := XMLDocument.createElement('RECORD');
  FOR i := 1 TO lrrRecordRef.FIELDCOUNT DO BEGIN
    lfrFieldRef := lrrRecordRef.FIELDINDEX(i);
    XMLNodeField := XMLDocument.createElement('FIELD');
    AddAttribute(XMLNodeField, 'ID', FORMAT(lfrFieldRef.NUMBER));
    XMLNodeField.text := FORMAT(lfrFieldRef);
    XMLNodeRecord.appendChild(XMLNodeField);
  END;
  XMLNodeTable.appendChild(XMLNodeRecord);
UNTIL lrrRecordRef.NEXT = 0;


Die zweite Zeile habe ich eben erst eingefügt. War mir anfangs garnicht aufgefallen, da ich vorher keine Tabellen mit nur einem Datensatz exportieren wollte, da habe ich den leeren XML-Datensatz schlicht nicht beachtet. Es reicht eben doch manchmal, darüber zu sprechen, um die Lösung zu finden.

Danke nochmal für die Mühen

Gruß Falk