[Gelöst]NAV2009 CC/RTC XMLport Import ausprogrammieren

15. April 2014 09:45

Hallo Zusammen,

ich bring mir gerade ein wenig das erstellen von XMLports bei.
Dabei wollt ich gerade ein XMLport Import so erstellen, bei dem ich die Feldzuweisung komplett ausprogrammiere.
Dafür habe ich die "Node Name" elemente so angelegt.

Node Name | Node Type | Source Type | Data Source
Root | Element | Text | <Root>
Import | Element | Table | <Integer>(Integer)
ImportString | Attribute | Text | <ImportString)

Dabei ist das Attribute "ImportString" eine Globale Variable die mir dazu dient, die komplette Zuweisung zu tätigen die ich im C/AL ausprogrammiert habe.
Wenn ich den XMLport nun im RTC ausführe, kommt am Ende die Fehlermeldung das er "ImportString" nicht in die Integer Tabelle einfügen konnte.

Also mein Problem ist nun das er am Ende des Imports versucht den "ImportString" auf die Integer Tabelle zu importieren.
In Dataports gibt es dafür "AutoSave" und "AutoUpdate" um das zu unterbinden.
Aber in XMLports?
Kann man das irgendwie umgehen oder ist das im 2009er CC überhaupt nicht möglich?

MfG
Masaky
Zuletzt geändert von Masaky am 15. April 2014 14:00, insgesamt 1-mal geändert.

Re: NAV2009 CC/RTC XMLport Import ausprogrammieren

15. April 2014 13:26

Im Node "Import" gibt es eine Eigenschaft namens "Temporary", die du auf Yes setzen solltest.
Das wird aber nicht verhindern, dass das Programm noch immer versuchen wird, pro Importzeile einen Datensatz in der (temp.) Integer-Tabelle abzulegen. Hier wirst du ab der zweiten Zeile den Fehler bekommen, dass Number XY schon existiert.
Dies kannst du z.B. durch folgenden Code im Trigger Import - Import::OnBeforeInsertRecord lösen:
Code:
+= 1;
Integer.Number := i

i ist eine globale Integer-Variable.

Falls deine Importdatei eine Überschriftenzeile hat, überspringst du diese so (gleicher Trigger wie eben, nur danach):
Code:
IF i = 1 THEN
  currXMLport
.SKIP


Brauchst du wirklich einen einzigen, langen ImportString? Wenn es sich eigentlich um einzelnen Felder wie für einen Dataport handelt, kannst du pro "Spalte" einen Node anlegen. Aber Achtung, der Node Name macht schon eine Variable, also lege nicht extra pro Feld eine globale Textvariable an. Allerdings solltest du den Wert jedes Node Names im Trigger Import - Import::OnAfterInitRecord initialisieren.

Re: NAV2009 CC/RTC XMLport Import ausprogrammieren

15. April 2014 13:58

Danke das hat super funktionier, läuft jetzt :)

Ich denke das der "ImportString" hier am Sinnvollsten ist, da die zu importierende Datei in jeder Zeile ein Individuelles Tabellenfeld treffen kann und keine feste Reihenfolge vorhanden ist. Deswegen überprüfe ich mit jeder importierten Zeile diesen String und ordne ihn dann erst anhand des Inhaltes ein bestimmtes Feld zu.

VG
Masaky