[gelöst] Liefermahnung in ENU Teil 2

29. Oktober 2008 14:18

Hallo,

in der Lieferanmahnung werden im Standart für den Artikel die Felder 'Beschreibung' und 'Beschreibung 2' angedruckt.. Ich hatte mir folgende Lösung ausgedacht.
Eine Variable bei Sprachcode 'DEU' mit dem Inhalt 'Beschreibung' zu füllen und bei Sprachcode 'ENU' wollte ich mir aus der Tabelle 280 'Extended Text Line' für den Artikel die Zeile 10.000 Sprachcode 'ENU' filtern und mit dem Inhalt aus dem Feld 'Text' die Variable füllen. Mein Code ist icht ausreichend um die entsprechende Zeile zu finden.
Mein erster Code
Code:
IF "Issued Deliv. Reminder Line"."No." = '' THEN
  Beschreibung_ENU.INIT
ELSE BEGIN
  Beschreibung_ENU.GET("Issued Deliv. Reminder Line"."No." );
END;

dabei hatte ich den Fehler1 (siehe Bild)
bei meinem 2ten Code
Code:
IF "Issued Deliv. Reminder Line"."No." = '' THEN
  Beschreibung_ENU.INIT
ELSE BEGIN
  Beschreibung_ENU.GET(Beschreibung_ENU."Language Code"='ENU',"Issued Deliv. Reminder Line"."No." );
END;

habe ich Fehler2 (siehe Bild)


Ist mein Lösungsweg zu umfangreich? Gibt es einen einfacheren Weg? Wie kann ich den Code verbessern?

mfg Harrison
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von Harrison am 30. Oktober 2008 08:46, insgesamt 1-mal geändert.

Re: Liefermahnung in ENU Teil 2

29. Oktober 2008 14:50

Bitte sieh dir die Onlinehilfe zu GET an.
Nach GET werden ausschlich und alle Primärschlüsselfelder der jeweiligen Tabelle angegeben.

Hier verwendest du jedoch 2 Felder:
Code:
Beschreibung_ENU.GET(Beschreibung_ENU."Language Code"='ENU',"Issued Deliv. Reminder Line"."No." );


Wenn du nach etwas filtern möchtest, arbeite mit SETRANGE bzw. SETFILTER und anschließendem FIND, FINDFIRST oder FINDSET.
GET wird nur verwendet, wenn du bereits den Zieldatensatz (anhand deiner Primärschlüsselfelder) kennst.

Re: Liefermahnung in ENU Teil 2

29. Oktober 2008 17:33

Hallo Natalie,

Danke für den TIP. Es klappt. Nur noch eine Frage ob der FIND Befehl so reicht oder könnte das später mal zu Problemen führen?

Code:
Beschreibung_ENU.SETRANGE(Beschreibung_ENU."No.","Issued Deliv. Reminder Line"."No.");
Beschreibung_ENU.SETRANGE(Beschreibung_ENU."Language Code",'ENU');
Beschreibung_ENU.SETRANGE(Beschreibung_ENU."Line No.",10000);
Beschreibung_ENU.FINDFIRST;
ArtikelText:= Beschreibung_ENU.Text;


Sollte man da eventuell durch IF oder so Fehler auffangen?

mfg Harrison
Zuletzt geändert von Harrison am 29. Oktober 2008 17:36, insgesamt 1-mal geändert.

Re: Liefermahnung in ENU Teil 2

29. Oktober 2008 17:35

Ja, wenn kein Datensatz gefunden wird, würde dies zu einem Laufzeitfehler führen.
Mach es besser so (wie du schon sagtest):

Code:
Beschreibung_ENU.SETRANGE(Beschreibung_ENU."No.","Issued Deliv. Reminder Line"."No.");
Beschreibung_ENU.SETRANGE(Beschreibung_ENU."Language Code",'ENU');
Beschreibung_ENU.SETRANGE(Beschreibung_ENU."Line No.",10000);
IF Beschreibung_ENU.FINDFIRST THEN
  ArtikelText:= Beschreibung_ENU.Text;
// vielleicht noch ein ELSE-Teil?

Re: Liefermahnung in ENU Teil 2

29. Oktober 2008 17:38

ok es klappt noch nicht so,

Habe gerade festgestellt, das ich jetzt noch den Filter reseten sollte.

mfg Harrison

Re: Liefermahnung in ENU Teil 2

29. Oktober 2008 17:46

Hallo,

finde gerade nicht die passende Stelle wie ich dort den Filter zurück setze.
- sollte der Filter im Report - DataItem stehen oder direkt im Report in der Section in der ich die Variable brauche ?
- wie sieht ein korrekter Clear aus ?
Code:
CLEAR(Beschreibung_ENU);

damit habe ich kein Erfolg.

mfg Harrison

Re: Liefermahnung in ENU Teil 2

29. Oktober 2008 17:49

Um alle Filter und schlüssel in einer Recordvariable zurückzusetzen, verwende RESET.

CLEAR(Record) initialisiert alle Felder des Records(auch die des Primärschlüssels, im Gegensatz zu Record.INIT).

Wenn Beschreibung_ENU ein eigenes DataItem ist, dann gehören die Filter on den OnPreDataItem-Trigger von DataItem Beschreibung_ENU.

Re: Liefermahnung in ENU Teil 2

29. Oktober 2008 17:53

Hallo,

Beschreibung_ENU ist eine RECORD Variable die auf die Tabelle Extended Line Text ist.
und diese benötige ich in der Section Issued Deliv. Reminder Line,Body.

mfg Harrison

Re: Liefermahnung in ENU Teil 2

29. Oktober 2008 18:54

Selbst auf die Gefahr hin gleich erschlagen zu werden :wink: :
Warum benutzt du nicht die Tabelle 30 "Item Translation" (Sollte in 4.0 schon Standard sein) :?: .
Dann könnte es sein, das deine ganze Programmierung nicht notwendig ist.

Gruß, Fiddi

Re: Liefermahnung in ENU Teil 2

30. Oktober 2008 08:18

Hallo fiddi,

eine nette Tabelle. Diese könnte ich auch schnell füllen. Gibt es dafür auch ein Standart das sich Navision bei den entsprechenden Forms auch an dieser Tabelle automatisch bediehnt, wenn der entsrpechende Artikel drin ist? Oder muss ich dann eh noch den passenden Code in der Form einfügen ( dürfte dann ja identisch mit dem jetzigen Code sein)

mfg Harrison

Re: Liefermahnung in ENU Teil 2

30. Oktober 2008 08:45

Hallo,
habe den Quellcode nun in die Section eingefügt und meine Liefermahnung ist nun komplett in Englisch.

Danke

mfg Harrison

Re: [gelöst] Liefermahnung in ENU Teil 2

30. Oktober 2008 09:21

Hallo,

der Standard beherrscht schon die Artikelübersetzung. D.h. wenn du auf der Artikelkarte bzw. -übersicht den Button Artikel betätigst, findest du dort den Menüpunkt Übersetzungen. Der sollte dich dann in die Artikelübersetzungen führen. Wenn du jetzt noch beim Kreditor den richtigen Sprachcode eingibst, bekommst du auf der Bestellung bereits die passende Übersetzung, was dann auch korrekt in die Liefermahnung gehen sollte.

Gruß, Fiddi