[gelöst] Verständnisfrage Lieferbedingungen

30. Oktober 2009 09:25

Im Code eines Report habe ich folgendes gefunden.

Code:
IF "Shipment Method Code" = '' THEN
  ShipmentMethod.INIT
ELSE BEGIN
  ShipmentMethod.GET("Shipment Method Code");
  ShipmentMethod.TranslateDescription(ShipmentMethod,"Sales Header"."Language Code");
END;


Hiermit wird über eine Record Variable der Shipment Code geholt, da er eindeutig ist, so wie ich das verstanden habe. Kann vielleicht jemand so nett sein und mit einmal die anderen Zeilen erklären, ich dachte ShipmentMethod.GET("Shipment Method Code") reicht aus.
Zuletzt geändert von misterelektro1981 am 2. November 2009 09:05, insgesamt 2-mal geändert.

Re: Verständnisfrage Lieferbedingungen

30. Oktober 2009 09:55

Code:
IF "Shipment Method Code" = '' THEN
  ShipmentMethod.INIT <- falls Lieferbedingung nicht gefüllt: Variable wird geleert, damit nicht die Beschreibung eines früheren
                                       erfolgreichen get darin stehen bleibt
ELSE BEGIN
  ShipmentMethod.GET("Shipment Method Code");
  ShipmentMethod.TranslateDescription(ShipmentMethod,"Sales Header"."Language Code"); <- wird in Sprache des Belegs übersetzt
END;

Re: Verständnisfrage Lieferbedingungen

30. Oktober 2009 10:36

Vielen Dank McClane.

In diesem Zusammenhang ist TranslateDescription keine gl. Variable, oder?

Dann müsste ich doch vom Verständis her mit diesem Code die Bemerkungen bekommen auch wenn ich im Sales Header eines Reports stehe, oder?

Code:
IF "Comment Line".Comment = '' then
Comment.INIT  //Comment ist die gl. Var. auf Table Comment Line
else
Comment.GET("Table Name","No.");
end;



In einer entsprechenden Section könnte ich dann die Bemerkung einfügen, oder?

Re: Verständnisfrage Lieferbedingungen

30. Oktober 2009 10:52

Nein nein nein ... :-?

das sind zwei unterschiedliche Fälle.
Eine Lieferbedingung ist durch seinen Code eindeutig definiert. Deswegen funktioniert hier ein get("Shipment Code").

Bemerkungen jedoch gibt es möglicherweise zu diesem Auftrag jede Menge, also muss man sie sich zusammen suchen. Ganz genau eine Bemerkungszeile kriegst du zwar - falls du die Zeilennummer weißt - auch mit einem get, aber dann auf den ganzen Primärschlüssel (zB im Auftrag get(DocumentType,No,LineNo)). Das macht aber selten Sinn, da man ja alle Bemerkungen lesen möchte und die Zeilennummer selten weiß. Also SetRange auf den DocumentType und die No, und dann findset - repeat - until next=0.

Re: Verständnisfrage Lieferbedingungen

30. Oktober 2009 11:22

Ich habe verstanden was du geschrieben hast, also warum unterschieden werden muss.

Jedoch sehe ich mich "noch" nicht in der Lage das alleine hinzubekommen, trotzdem danke.

Re: [gelöst] Verständnisfrage Lieferbedingungen

30. Oktober 2009 11:34

Ich glaube wir drehen uns hier im Kreis,
das hatten wir doch gestern auch schon: Vorgehensweise für Texteditor auf Report.


MisterElektro1981 hat geschrieben:Jedoch sehe ich mich "noch" nicht in der Lage das alleine hinzubekommen, trotzdem danke.

Üben, Üben und nochmals Üben.
Als ich mit Navision angefangen habe, habe ich auch so meine Probleme gehabt.
Der Beitrag von Natalie (Records: GET SETFILTER FIND etc.) ist echt gut um dieses Problem auf den "Zahn" zu fühlen.

Ich bin gerade dabei einen Ähnlichen zum Thema SETCURRENTKEY zu schreiben. Allerdings nicht ganz einfach habe ich festgestellt (daher "Hut ab" Natalie, das in Worte eines Tellerwäschers zu fassen), daher kann es noch dauern bis ich meinen Beitrag poste.

Falls du oder andere gefallen an diesen Beiträgen gefunden habt, könnten wir ja noch mehr verfassen. -->Dann bitte aber mit Vorschägen, zu welchem Thema.

Re: [gelöst] Verständnisfrage Lieferbedingungen

30. Oktober 2009 11:52

Ich bin gerade dabei den Beitrag zu lesen und gerate ins schwärmen. Ist wirklich genial einfach und somit super Verständlich beschrieben. Den Get Befehl habe ich soeben (in der Euphorie) durchschaut.

EDIT:

Re: [gelöst] Verständnisfrage Lieferbedingungen

30. Oktober 2009 12:43

Ich wollte hierfür kein neues Thema aufmachen.
Habe es jetzt 2 mal probiert, zum einen wollte ich, nur zum testen, den Names des Sprachcodes auf einen Report => hat geklappt

Danach wollte ich zu einem Angebot die Beschreibung was nicht geklappt hat, obwohl ich mich genau ans Rezeprt gehalten hat.

Code:
Code:
SalesLine.GET("Document Type"::Order, 'AUFT10001', 10000);


Fehler: Die Verkaufszeile existiert nicht, obwohl sie nbesteht. Wo ist das Problem?

Re: [gelöst] Verständnisfrage Lieferbedingungen

30. Oktober 2009 13:02

Wenn NAV behauptet, dass es die Zeile nicht gibt, dann stimmt das auch :wink:

Mindestens einer der Parameter ist nicht richtig.

Re: [gelöst] Verständnisfrage Lieferbedingungen

30. Oktober 2009 13:03

Hmm,

sieht gut aus, sollte eigentlich klappen?!
Der Ordnung halber sollte der Code so ausssehen:
Code:
SalesLine.GET(SalesLine."Document Type"::Order, 'AUFT10001', 10000);

Hast du evtl. einen Tippfehler bei der Auftragsnr oder Zeilennr.?

Re: [gelöst] Verständnisfrage Lieferbedingungen

30. Oktober 2009 13:25

Vielleicht bin ich zu blöd, aber das habe ich abgetippt:

Code:
SalesLine.GET(SalesLine."Document Type"::Order, 'AUFT10001', 10000);



In der Table Sales Line steht folgendes:

Belegart Belegnr. Zeilennr.
Auftrag AUFT10001 10000

So ist doch alles richtig, oder?

EDIT:
Eine weitere Frage. Ich wollte zum testen mal auf alle Auftragsbelege filtern.

Code:
SalesLine.SETFILTER("Document Type"::Order)
IF SalesLine.FIND('-') THEN
REPEAT
ELSE
UNTIL SalesLine.NEXT=0;


Es kommt hier auch eine Fehlermeldung, die ich nicht verstehe, da ich ja auf alle Aufträge filtern möchte.

Re: [gelöst] Verständnisfrage Lieferbedingungen

30. Oktober 2009 14:06

misterelektro1981 hat geschrieben:EDIT:
Eine weitere Frage. Ich wollte zum testen mal auf alle Auftragsbelege filtern.

Code:
SalesLine.SETFILTER("Document Type"::Order)
IF SalesLine.FIND('-') THEN
REPEAT
ELSE
UNTIL SalesLine.NEXT=0;


Es kommt hier auch eine Fehlermeldung, die ich nicht verstehe, da ich ja auf alle Aufträge filtern möchte.

Du musst beim SETFILTER zuerst das Feld angeben, auf welches gefilter werden soll, und im zweiten Parameter den Wert.
Das ELSE in der Schleife wäre dann der nächste Fehler, welcher vom Compiler angemeckert würde, denn es darf (in diesem Fall) nicht zwischen REPEAT und UNTIL stehen.
Wenn es keinen ELSE-Zweig gibt, dann kannst du das ELSE auch weglassen.

[edit] Korrigierter Code:
Code:
SalesLine.SETFILTER("Document Type",SalesLine."Document Type"::Order)
IF SalesLine.FIND('-') THEN
  REPEAT
  UNTIL SalesLine.NEXT = 0;

Re: [gelöst] Verständnisfrage Lieferbedingungen

30. Oktober 2009 14:31

Danke erstmal an Timo Lässer, es kommt jedoch eine Fehlermeldung:
Eine Typenkonvertierung...

Re: [gelöst] Verständnisfrage Lieferbedingungen

30. Oktober 2009 14:58

Sorry, kleiner Fehler meinerseits:
Statt SETFILTER reicht hier ein SETRANGE.
Code:
SalesLine.SETRANGE("Document Type",SalesLine."Document Type"::Order);
IF SalesLine.FIND('-') THEN
  REPEAT
  UNTIL SalesLine.NEXT = 0;

Re: [gelöst] Verständnisfrage Lieferbedingungen

30. Oktober 2009 14:59

Dass ich das noch erlebe :mrgreen:

So geht's:
Code:
SalesLine.SETRANGE("Document Type",SalesLine."Document Type"::Order);
IF SalesLine.FIND('-') THEN
  REPEAT
  UNTIL SalesLine.NEXT = 0;

oder
Code:
SalesLine.SETFILTER("Document Type",'%1',SalesLine."Document Type"::Order);
IF SalesLine.FIND('-') THEN
  REPEAT
  UNTIL SalesLine.NEXT = 0;

Re: [gelöst] Verständnisfrage Lieferbedingungen

2. November 2009 09:04

Danke an beide, klappt 1a.