Code ausführen bei Rename

18. Februar 2008 11:38

Vielleicht kan mir einer von euch einen Tip geben. Wir wollen wenn ein Artikel in Navision umbenannt wird (also sich die Artikelnummer ändert) das eine XML Datei erzeugt wird welche dann auf unseren Commerce Server geschoben wird.

Aber wie bewerkstellige ich das?

Wenn ich die Artikelnummer änder dann wird zuerst diese TableRelation Abfrage gemacht die im Standard von Navision ist. Dann erst wird der OnValidate Trigger ausgeführt und dann der OnRename Trigger. Soweit hab ich das schonmal heraus finden können.

Ich benötige die alte Artikelnummer für die XML Datei. Also dachte ich, ich führe den Code im OnValidate Trigger aus. Da dort ja noch der alte Wert sein müsste (da OnRename ja noch nicht ausgeführt wurde). Wenn ich aber ein SETRANGE mache auf die Artikelnummer und diese mir per MESSAGE ausgeben lassen möchte, wird mir keine Nummer angezeigt.

Ist das Artikelnummern Feld dann temporär leer?
Hätte sonst jemand eine Idee hierfür? Eventuell den Code auf der Form hinterlegen (ist das möglich)?
Oder geht das überhaupt nicht was ich vorhabe?

18. Februar 2008 11:59

im OnValidate kannst du über xrec."no." die alte Nummer ermitteln

18. Februar 2008 12:04

Ja mit xRec."No." hat es jetzt auch geklappt. Er gibt zwar in der Message immer noch keine Nummer aus aber ich glaube das liegt daran das ich das falsche versuche ausgeben zu lassen.

Wenn ich nun die geänderte Nummer ausgeben lassen möchte in einer XML Datei wie mach ich das? Kann ich das auch im OnValidate Trigger machen? Oder passiert das im OnRename Trigger?

18. Februar 2008 12:27

machst du die xml mit automation oder mit xmlport?
Automation sollte am einfachsten sein, den wert direkt zu übergeben.
mit xmlport müsstest du erst ne temporäre Tabelle füllen

18. Februar 2008 12:33

Die XML Datei wird per XML Port erstellt. Und temp. Tabelle wird auch gefüllt. bzw. sollte gefüllt werden. Wenn ich den Code aber im OnRename Trigger einfüge (um die Tabelle zu füllen) dann scheint er das SETRANGE nicht zu nehmen. Zumindest ist die temp. Tabelle leer obwohl der Befüllungscode ausgeführt wird.

Nachtrag:

Hier mal der Code

Code:
//OnRename

CLEAR(ProduktExport);

Artikel.RESET;
Artikel.SETRANGE("No.","No.");
ProduktExport.SETTABLEVIEW(Artikel);
ProduktExport.RUN; //Mit diesem Report wird die temp. Tabelle gefüllt