0

Trigger mit Auflistung verkürzen

Ein Trigger soll anhand mehrerer Möglichkeiten eines Auswahlfeldes eine Funktion ausführen:

if i.Medienpartner.Bevorzugt = 8 or i.Medienpartner.Bevorzugt = 3 or i.Medienpartner.Bevorzugt = 4 then . . . null

Wie ist es möglich die Aufzählung mittels "oder" Funktion zu vereinfachen?

Vielen Dank!

9 Antworten

null
    • mirko3
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Reinhard. Die Syntax ist korrekt. Du könntest "Medienpartner.Bevorzugt" in eine Variable legen, das ist kürzer, aber nicht wirklich besser und Du kannst die Auswahl aufsteigend sortieren. Letzeres spart bestimmt 1-2 ns in der Laufzeit ;-). Sonst sehe ich hier nichts Optimierbares. Wenn es funktioniert, würde ich es lassen.

    let awf:=Medienpartner.Bevorzugt;
    if i.awf = 3 or i.awf = 4 or i.awf = 8 then . . . null
    
    • Tacho
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hilfreich wäre auch gewesen, wenn man die Einträge des Auswahlfeldes anhand der Anforderungen eingegeben hätte (Sprich hier auf den Plätzen 1-3), dann hätte man in der Formel sagen können:

    if Medienpartner.Bevorzugt < 4 then...

    • T_Bartzsch
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Geht es nicht mit "switch"?

    i.(
    switch Medienpartner.Bevorzugt do
    case 3: MACHE DIES
    case 4: MACH DAS
    case 8: MACHE JENES
    default: MACHE NIX
    end)
      • + Maßanzug statt Massenware +
      • RonaldP
      • vor 2 Jahren
      • Gemeldet - anzeigen

      T. Bartzsch 
      Reinhard möchte verschiedene Auswahloptionen als ODER Abfragen.
      Ich habe auch an Switch gedacht aber folgendes funktioniert leider auch nicht:
       

      switch AUSWAHLFELD do
      case 2 oder 4 oder 8: "Oder-optinen gewählt"
      default:
          "nix"
      end
      

      Dieses hier funktinoiert, ist aber auch nicht schlank ;-)

      let alltext := "Oder-optinen gewählt";
      switch AUSWAHLFELD do
      case 2:
          alltext
      case 1:
          alltext
      case 3:
          alltext
      case 5:
          alltext
      default:
          "nix"
      end
      
    • + Maßanzug statt Massenware +
    • RonaldP
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hi Reinhard,

    Ich habe auch einiges ausporibiert um Oder-Argumente zusammenzufassen (kürzerer Code) aber das ist in der Ninoxumgebung leider nicht möglich! (Die Info hab ich aus erster Hand)
     

    Viele Grüße
    Ronald

    • rainless
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Reinhard,

    wenn Dein Auswahlfeld nur Ziffern enthält, dann wäre eine solche Auswahl möglich mit 

    if contains("348", text(i.Medienpartner.Bevorzugt)) then ...
      • + Maßanzug statt Massenware +
      • RonaldP
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Lars 
      Cool die Variante kannte ich bisher noch nicht.
      Ich hätte erwartet, dass nur die Ziffernfolge 348 gefunden wird, dass aber auch jede einzelne gefunden wird is klasse! Wieder was gelernt ;-)

      In der Annahme, dass Reinhard die Auswahlfeld-IDs auswertet, braucht es noch die Ergänzung "number()":

      if contains("348", text(number(i.Medienpartner.Bevorzugt))) then ...

      EDIT: Es funktioniert aber nur in einem Zahlenbereich von 1-10.
      Bei mehr Einträgen im Auswahlfeld wird z.B. bei 1345 auch die 13 gefunden.
      Sonst aber TOP.

      • rainless
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Ronald Polski Richtig, es funktioniert nur von 0-9, wie ich mit "nur Ziffern" meinte 😉

      • + Maßanzug statt Massenware +
      • RonaldP
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Lars 👍
      Hab ich voll überlesen, da war ich schon im AusprobierFieber 😆