C/AL Stringvergleich

Bild Microsoft Dynamics NAV 2018

C/AL Stringvergleich

Beitragvon eFuchsi » 10. Oktober 2022 13:57

Leider sind meine C/AL Kenntnisse nur rudimentär.
Ich muss für einen Etikettendruck aus der Tabelle BIN (Lagerplätze) das Feld Code auswerten.

Beginnt das Feld mit einem Buchstaben drucke ich das Etikett "APL" (das ist ein frei von mir gewählter Name)
Beginnt das Feld mit einer Zahl und die 6. oder 7. Stelle ist ein A dann drucke ich das Etikette "BinL"
Beginnt das Feld mit einer Zahl und die 6. oder 7. Stelle ist kein A dann drucke ich das Etikette "BinR"

Kann man das eleganter lösen, als mein Ansatz?

Code: Alles auswählen
txtTyp := '';

IF      COPYSTR(Bin.Code,1,1) = 'A' THEN  txtTyp :='APL'
ELSE IF COPYSTR(Bin.Code,1,1) = 'B' THEN  txtTyp :='APL'
ELSE IF COPYSTR(Bin.Code,1,1) = 'C' THEN  txtTyp :='APL'
ELSE IF COPYSTR(Bin.Code,1,1) = 'D' THEN  txtTyp :='APL'
ELSE IF COPYSTR(Bin.Code,1,1) = 'E' THEN  txtTyp :='APL'
ELSE IF COPYSTR(Bin.Code,1,1) = 'F' THEN  txtTyp :='APL'
ELSE IF COPYSTR(Bin.Code,1,1) = 'G' THEN  txtTyp :='APL'
ELSE IF COPYSTR(Bin.Code,1,1) = 'H' THEN  txtTyp :='APL'
ELSE IF COPYSTR(Bin.Code,1,1) = 'I' THEN  txtTyp :='APL'
ELSE IF COPYSTR(Bin.Code,1,1) = 'J' THEN  txtTyp :='APL'
ELSE IF COPYSTR(Bin.Code,1,1) = 'K' THEN  txtTyp :='APL'
ELSE IF COPYSTR(Bin.Code,1,1) = 'L' THEN  txtTyp :='APL'
ELSE IF COPYSTR(Bin.Code,1,1) = 'M' THEN  txtTyp :='APL'
ELSE IF COPYSTR(Bin.Code,1,1) = 'N' THEN  txtTyp :='APL'
ELSE IF COPYSTR(Bin.Code,1,1) = 'O' THEN  txtTyp :='APL'
ELSE IF COPYSTR(Bin.Code,1,1) = 'P' THEN  txtTyp :='APL'
ELSE IF COPYSTR(Bin.Code,1,1) = 'Q' THEN  txtTyp :='APL'
ELSE IF COPYSTR(Bin.Code,1,1) = 'R' THEN  txtTyp :='APL'
ELSE IF COPYSTR(Bin.Code,1,1) = 'S' THEN  txtTyp :='APL'
ELSE IF COPYSTR(Bin.Code,1,1) = 'T' THEN  txtTyp :='APL'
ELSE IF COPYSTR(Bin.Code,1,1) = 'U' THEN  txtTyp :='APL'
ELSE IF COPYSTR(Bin.Code,1,1) = 'V' THEN  txtTyp :='APL'
ELSE IF COPYSTR(Bin.Code,1,1) = 'W' THEN  txtTyp :='APL'
ELSE IF COPYSTR(Bin.Code,1,1) = 'X' THEN  txtTyp :='APL'
ELSE IF COPYSTR(Bin.Code,1,1) = 'Y' THEN  txtTyp :='APL'
ELSE IF COPYSTR(Bin.Code,1,1) = 'Z' THEN  txtTyp :='APL'
ELSE IF COPYSTR(Bin.Code,6,1) = 'A' THEN  txtTyp :='BinL'
ELSE IF COPYSTR(Bin.Code,7,1) = 'A' THEN  txtTyp :='BinL'
ELSE                                      txtTyp :='BinR'
eFuchsi
 
Beiträge: 4
Registriert: 10. Oktober 2022 13:51
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: C/AL Stringvergleich

Beitragvon enh » 10. Oktober 2022 15:20

CASE OF wĂĽrde sich hier anbieten.
CASE COPYSTR(...) OF ...
https://learn.microsoft.com/en-us/dynam ... statements
enh
 
Beiträge: 2330
Registriert: 5. Februar 2014 15:42
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: C/AL Stringvergleich

Beitragvon Kowa » 10. Oktober 2022 16:58

Alternativ kann man das mit dem IN Operator prĂĽfen, bzw. zusammen mit dem CASE OF kombinieren.
Beispiele fĂĽr den Einsatz:
Code: Alles auswählen
TestText := 'E';
IF TestText IN ['A'..'Z'] THEN
  MESSAGE('E liegt zwischen A und Z')
ELSE
  MESSAGE('E liegt nicht zwischen A und Z');

IF TestText IN ['A'..'D'] THEN
  MESSAGE('E liegt zwischen A und D')
ELSE
  MESSAGE('E liegt nicht zwischen A und D');

IF TestText IN ['A','K,'Y'] THEN
  MESSAGE('E ist bei AKY mit enthalten.')
ELSE
  MESSAGE('E ist bei AKY nicht mit enthalten.');

GruĂź, Kai

Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, Messenger oder Telefon! DafĂĽr ist dieses Forum da.

Download: Dynamics NAV Object Text Explorer (Alternativlink). MVP Alumni
Benutzeravatar
Kowa
Moderator
Moderator
 
Beiträge: 7835
Registriert: 17. Juni 2005 17:32
Wohnort: Bremen
Realer Name: Kai Kowalewski
Arbeitsort: Osterholz-Scharmbeck
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC, NAV 2018 bis Navision 2.01

Re: C/AL Stringvergleich

Beitragvon eFuchsi » 11. Oktober 2022 10:55

Danke Euch beiden.

Der IN Operator verkĂĽrzt das Ganze massiv.
eFuchsi
 
Beiträge: 4
Registriert: 10. Oktober 2022 13:51
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV


ZurĂĽck zu NAV 2018

Wer ist online?

Mitglieder in diesem Forum: DotBot [Bot] und 1 Gast