NEULING hat Problem mit IF Funktion

12. Juli 2012 10:02

Hallo Leute

ich bin ein Neuling in der C/AL Programmierung! Habe zwar vor 3 Jahren einen Grundkurs besucht aber das erlernte jeweils nicht allzuoft benötigt!

Jetzt meine Problematik:

Ich möchte auf einem Report 2 Variablen anhand einer Bedingung erfüllen. Wenn die Variable "CompanyAddr[1]" den Inhalt "ABCD AG" enthält dann sollen meine Variablen gWaren1 mit der Konstante ML_Waren1A und gWaren2 mit der Konstante ML_Waren2A gefüllt werden, andernfalls die Variabel gWaren1 mit ML_Waren2B und gWaren2 soll leer bleiben!

Dazu habe ich die genannten Variablen und Textkonstanten erstellt, in den Sections die Felder mit gWaren1 und gWaren2 angelegt. Im CAL Code habe ich folgende Zeilen im PrepareHeader Bereich eingefügt leider funktioniert der Code nicht und ich komme auch mit meinem Buch nicht weiter:

Code:
 //Warenannahme
  IF CompanyAddr[1] = 'ABCD AG' THEN
   gWaren1 := ML_Waren1A;
   gWaren2 := ML_Waren2A
  ELSE
   gWaren1 := ML_Waren2B;
   gWaren2 := ' '
END;


Was mache ich falsch?? Bin für sämtliche Tipps sehr dankbar!

Re: NEULING hat Problem mit IF Funktion

12. Juli 2012 10:06

Hallo,

wenn du den Code so schreibst:
Code:
//Warenannahme
  IF CompanyAddr[1] = 'ABCD AG' THEN bEGIN
   gWaren1 := ML_Waren1A;
   gWaren2 := ML_Waren2A
  END ELSE BEGIN
   gWaren1 := ML_Waren2B;
   gWaren2 := ' '
  END;


Sollte es funktionieren.

Gruß, Fiddi

Re: NEULING hat Problem mit IF Funktion

12. Juli 2012 10:09

Hallo bensch,

du hast in deinem C/AL-Code einige Syntax-Fehler:
bensch@ hat geschrieben:
Code:
//Warenannahme
  IF CompanyAddr[1] = 'ABCD AG' THEN
   gWaren1 := ML_Waren1A;
   gWaren2 := ML_Waren2A
  ELSE
   gWaren1 := ML_Waren2B;
   gWaren2 := ' '
END;

Wenn auf das IF bzw. das ELSE mehr als eine Anweisung folgen soll, dann musst du mit BEGIN und END arbeiten.
Es empfiehlt sich - gerade für unerfahrene Programmierer - immer mit BEGIN und END zu arbeiten, da man sich dann ein Ausnahme folgender Regel nicht merken muss:
Jede Anweisung muss mit einem Semikolon abgeschlossen werden. (Hier gibt es eine Ausnahme bei einfachen IF-Bedingungen.)
Wenn du das beachtest, dann sollte dein Programmcode wie folgt aussehen:
Code:
//Warenannahme
IF CompanyAddr[1] = 'ABCD AG' THEN BEGIN
  gWaren1 := ML_Waren1A;
  gWaren2 := ML_Waren2A;
END ELSE BEGIN
  gWaren1 := ML_Waren2B;
  gWaren2 := ' ';
END;

Re: NEULING hat Problem mit IF Funktion

12. Juli 2012 10:35

Das geht ja baer zackig hier!! Vielen Dank für Eure Hilfe! Der Code scheint nun so i.o. zu sein und ich habe soweit meinem Fehler Verstanden. Leider Funktioniert dies mit der IF Überprüfung noch nicht ganz bzw. ich mache da meinen Fehler!

Leider werden mir die Variablen immer mit der ELSE Bedingung abgefüllt Auch wenn die CompanyAddr[1] den Text ABCD AG enthält! Kann ich nicht auf enthaltenen Text überprüfen?

Danke

Re: NEULING hat Problem mit IF Funktion

12. Juli 2012 10:37

Hi,

doch, der Vergleich von Texten ist möglich.
Dafür das immer der ELSE-Zweig ausgeführt wird kann es mehrere Ursachen geben.
1) Zum Zeitpunkt der Ausführung ist CompanyAddr noch nicht gefüllt
2) Im ersten Feld des Arrays steht nicht genau ABCD AG