[Gelöst] Leerer XML-Tag führt bei EVALUTE zu CAL-Fehler

12. November 2013 09:19

Hallo,

habe folgendes Problem mit Nav2009SP1. Wenn hier der XML Tag Erste:Daten leer ist, hat der in XMLDOMNodeChild.text immer noch den Wert des letztens TAG-Abrufes. Leider bricht NAV beim EVALUATE hier mit der Fehlermeldung, dass man sich an einen C/AL Progammierer wenden soll ab. Auch wenn man versucht, mit anderen StrOperationen wie StrPos, ConvertStr dies zu handeln versucht, habe ich den gleichen Fehler.
Wie könnte ich hier prüfen, ob XMLDOMNodeChild.text eine decimal ist und in die decimalvariable zu schreiben?

Code:
XMLDOMNodeChild - Automation - 'Microsoft XML, v3.0'.IXMLDOMNode

XMLDOMNodeChild := XMLDOMNode.selectSingleNode('Erste:Daten');
     EVALUATE(decimalvariable,XMLDOMNodeChild.text);
Zuletzt geändert von NaCoder am 12. November 2013 11:45, insgesamt 1-mal geändert.

Re: Leerer XML-Tag führt bei EVALUTE zu CAL-Fehler

12. November 2013 09:51

NaCoder hat geschrieben:Leider bricht NAV beim EVALUATE hier mit der Fehlermeldung, ...
Wie könnte ich hier prüfen, ob XMLDOMNodeChild.text eine decimal ist und in die decimalvariable zu schreiben?

IF EVALUATE ... ;-)

Re: Leerer XML-Tag führt bei EVALUTE zu CAL-Fehler

12. November 2013 10:20

Natalie hat geschrieben:
NaCoder hat geschrieben:Leider bricht NAV beim EVALUATE hier mit der Fehlermeldung, ...
Wie könnte ich hier prüfen, ob XMLDOMNodeChild.text eine decimal ist und in die decimalvariable zu schreiben?

IF EVALUATE ... ;-)


Mit IF geht es leider auch nicht. Hatte ich vorher auch schon versucht. Das ist das komische.

Re: Leerer XML-Tag führt bei EVALUTE zu CAL-Fehler

12. November 2013 10:42

NaCoder hat geschrieben:Mit IF geht es leider auch nicht.

Was genau geht nicht?

Re: Leerer XML-Tag führt bei EVALUTE zu CAL-Fehler

12. November 2013 10:45

Ich bekomme laut Debugger in der selben Zeile wo IF EVALUATE steht den selben Fehler das man sich an einen C/AL Programmierer wenden soll.

Re: Leerer XML-Tag führt bei EVALUTE zu CAL-Fehler

12. November 2013 10:52

Funktioniert folgendes?
Code:
NeueTextvariable = XMLDOMNodeChild.text;
IF EVALUATE(decimalvariable,NeueTextvariable) THEN


Prüfe mal, ob ein Child überhaupt gefunden werden konnte:
Code:
CLEAR(XMLDOMNodeChild);
decimalvariable := 0;
XMLDOMNodeChild := XMLDOMNode.selectSingleNode('Erste:Daten');
IF NOT ISCLEAR(XMLDOMNodeChild) THEN BEGIN  
  IF EVALUATE
(decimalvariable,XMLDOMNodeChild.text) THEN;
END;

Re: Leerer XML-Tag führt bei EVALUTE zu CAL-Fehler

12. November 2013 11:26

Danke Natalie!

Der TAG wird überhaupt nicht gefunden, da er nicht in der Datei vorhanden ist. Der 2. Code spring mal drüber. Nur hab ich jetzt das Problem, dass bei der nächsten TAG-Abfrage obwohl der TAG in der Datei ist wieder den Fehler anzeigt, dass ich mich an einen C/AL Programmierer wenden soll.

Code:
CLEAR(XMLDOMNodeChild);
decimalvariable := 0;
XMLDOMNodeChild := XMLDOMNode.selectSingleNode('Erste:Daten');
IF NOT ISCLEAR(XMLDOMNodeChild) THEN BEGIN 
  IF EVALUATE(decimalvariable,XMLDOMNodeChild.text) THEN;
END;

 XMLDOMNodeChild := XMLDOMNode.selectSingleNode('Zweite:Daten');
  zweitedaten :=  XMLDOMNodeChild.text;  // Fehlermeldung - Wenden sie sich an einen C/AL Programmierer.

Re: Leerer XML-Tag führt bei EVALUTE zu CAL-Fehler

12. November 2013 11:30

Du musst das Prinzip mit dem vorherigen CLEAR(...) und nachfolgenden IF NOT ISCLEAR(...) schon auf alle Nodevariablen anwenden, nicht nur auf die erste. Oder hast du das aus deinem Codebeispiel nur herausgekürzt?

Re: Leerer XML-Tag führt bei EVALUTE zu CAL-Fehler

12. November 2013 11:35

Natalie hat geschrieben:Du musst das Prinzip mit dem vorherigen CLEAR(...) und nachfolgenden IF NOT ISCLEAR(...) schon auf alle Nodevariablen anwenden, nicht nur auf die erste. Oder hast du das aus deinem Codebeispiel nur herausgekürzt?


Hallo Danke!

Mein Fehler. Funktioniert nun.