0

Verschachtelte if Schleife

Servus zusammen, 

ich komme gerade bei einer verschachtelten if Schleife nicht weiter. 

Ich hab eine Seite, in der ich mir per Ansicht die Tabelle db_clothing anzeigen lassen. 

Überhalb der Ansicht hab ich 3 Felder: 

- Style Suche (Textfeld)
- Saison Auswahl (Auswahlfeld)
- Supplier Auswahl (Auswahlfeld) 

Diese 3 Felder möchte ich nutzen um die Ansicht entsprechend zu Filtern. In der Tabelle db_clothing existieren diese Felder natürlich auch. 

Mein Problem ist aktuell, dass ich es nicht schaffe, dass der Filter nur funktioniert wenn alle 3 Felder ausgefüllt sind. Der Filter soll aber natürlich auch funktionieren, wenn z.B. nur Saison Auswahl != null ist. 

Würde mich über euren Input freuen. 

LG, Andi

4 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 2 Monaten
    • Gemeldet - anzeigen

    Hallo Andi, wenn viele Kombinationen möglich sind, arbeite ich der Übersichtlichkeit halber in der Ansicht gerne mit einer Schema-Variablen und switch-case statt mit einem komplexen if-else-Konstrukt. Im Beispiel nenne ich die Such- und Datenfelder einfach einfach mal A, B, und C:

    let me := this;
    let myX := "";
    myX := myX + if A then "X" else "_" end;
    myX := myX + if B then "X" else "_" end;
    myX := myX + if C then "X" else "_" end;
    switch myX do
       case "X__": select TABELLE where A = me.A
       case "_X_": select TABELLE where B = me.B
       case "__X": select TABELLE where C = me.C
       case "XX_": select TABELLE where A = me.A and B = me.B
       case "X_X": select TABELLE where A = me.A and C = me.C
       case "_XX": select TABELLE where B = me.B and C = me.C
       case "XXX": select TABELLE where A = me.A and B = me.B and C = me.C
       default: select TABELLE
     end
      • Andi_Neumaier
      • vor 2 Monaten
      • Gemeldet - anzeigen

       Ah, klar. An switch-case hab ich gar nicht gedacht. Funktioniert perfekt. 

      Das Feld A ist in meinem Fall ein Freitextfeld, d.h. es werden nur Ergebnisse angezeigt, wenn diese exakt so geschrieben werden. Hast du vielleicht auch noch ne Idee wie ich es schaffen könnte, dass das nicht so ist?

      Also wenn ich zum Beispiel nach "Hoodie" suche, dass dann alle Datensätze mit dem Wort "Hoodie" angezeigt werden? 

      LG, Andi

      • Ninox-Professional
      • planoxpro
      • vor 2 Monaten
      • Gemeldet - anzeigen

       

      Das ginge z. B. mit contains(). Zusätzlich kann man auch noch upper()/lower() nutzen:

      select TABELLE where contains(upper(A), upper(me.A))
      • Andi_Neumaier
      • vor 2 Monaten
      • Gemeldet - anzeigen

       Super! Vielen Dank. 

      Hast du vielleicht noch ne Idee, warum das switch-case nur in der Mac App funktioniert? In der Browserversion klappts nicht. 

      Vielleicht noch ein do as server davor? 

      LG, Andi

Content aside

  • vor 2 MonatenZuletzt aktiv
  • 4Antworten
  • 71Ansichten
  • 2 Folge bereits