0

schon wieder... simple if abfrage will nicht.

Hallihallo

Ich hab da so Tomaten vor den Augen...

Eine recht simple Abfrage:

if number(Menge) >= 300 then number(Menge) * KAT.'>300' end;
if number(Menge) < 300 then number(Menge) * KAT.'<300' end;
if number(Menge) < 100 then number(Menge) * KAT.'<100' end;
if number(Menge) < 20 then number(Menge) * KAT.'<20' end;
if number(Menge) < 6 then number(Menge) * KAT.'<6' end;
if number(Menge) < 3 then number(Menge) * KAT.'<3' end;

löst die letzte Bedingung korrekt auf, bei allen anderen (Menge >= 3) bleibt das Feld leer.

Hab versuchsweise die Bedingungen gestaffelt (if then else ... ), dann funktioniert nur die erste Bedingung (Menge >= 300 ), und alle anderen geben leer zurück. (Und bei der letzten Bedingung tickt er aus und reklamiert was von string und so, ausser ich klammere diese letzte Bedingung aus und beende vorher.

Ich sehe aber keinen Fehler, nur uneleganten Code!

4 Antworten

null
    • mirko3
    • vor 3 Monaten
    • Gemeldet - anzeigen

    Ich sehe auch keinen Fehler. Der Interpreter des Scripts führt alle Befehle nacheinander aus und überschreibt ein voriges Ergebnis durch das nächste. Übrig bleibt das letzte gültige. Wenn das das Ziel Deines Scripts ist, funktioniert es korrekt. Andernfalls mußt Du noch den eigentlichen Zweck näher beschreiben. 
    Ich rate mal, Du willst so etwas wie ranges, in denen sich der Wert befindet. Mirko
     

    if number(Menge)<300 and number(Menge)>=100...
    if number(Menge)<100 and number(Menge)>=20...
    .
    .
    .
    
      • David Braun Gestalter HfG
      • Herr_Grun
      • vor 3 Monaten
      • Gemeldet - anzeigen

       Ja genau so wars.

      Ich wollte das skript eine Liste herunterarbeiten lassen... aber habe nicht beachtet dass immer alle if-Abfragen abgearbeitet werden—und das Resultat wohl wieder überschreibt? Ist trotzdem komisch

      Auf jeden Fall habe ich eine switch-case Kiste gebaut. Hat zuerst ebensowenig bzw noch weniger geklappt (falsche Resultate).

      Dann der Geistefunke: Die Bedingungen müssen nach oben und unten eingegrenzt werden, und es klappt...

       

      switch true do
      case 'Menge in Kilo' >= 300:    'Menge in Kilo' * KAT.'>300'
      case 'Menge in Kilo' < 300 and 'Menge in Kilo' >= 100:    'Menge in Kilo' * KAT.'<300'
      case 'Menge in Kilo' < 100 and 'Menge in Kilo' >= 20:    'Menge in Kilo' * KAT.'<100'
      case 'Menge in Kilo' < 20 and 'Menge in Kilo' >= 6:    'Menge in Kilo' * KAT.'<20'
      case 'Menge in Kilo' < 6 and 'Menge in Kilo' >= 3:    'Menge in Kilo' * KAT.'<6'
      default:
          'Menge in Kilo' * KAT.'<3'
      end

       

      Jetzt stellt sich mir noch die Frage, ob ich mehrere switches verschachteln kann? 😎

      • mirko3
      • vor 3 Monaten
      • Gemeldet - anzeigen

       Die Grenze schreiben hier nur die Fähigkeiten vor, multiple und komplexe Beziehungen fehlerlos zu überschauen und die Freude, solchen Code nach einem Jahr noch zu lesen. ;-). Aber prinzipiell ja.

      • David Braun Gestalter HfG
      • Herr_Grun
      • vor 3 Monaten
      • Gemeldet - anzeigen

       Wenn ich dann mal herausgefunden habe, wie ich kommentare in die skripts einbaue, wage ich mich weiter vor... 👍

Content aside

  • Status Answered
  • vor 3 MonatenZuletzt aktiv
  • 4Antworten
  • 28Ansichten
  • 2 Folge bereits