Problem bei der Filterung einer Ansicht
Hallo zusammen!
Ich stecke fest bei der Filterung einer Ansicht. Ich habe ein Mehrfach-Auswahl Feld mit deren Hilfe ich die darunter stehende Ansicht einer Kontakt-Tabelle filtern will.
Nach meiner Recherche müsste es so gehen:
if chosen(Filter, 1) then select Kontakte where Trainer = 1 end;
if chosen(Filter, 2) then select Kontakte where Teilnehmer = 1 end;
if chosen(Filter, 3) then select Kontakte where Mentor = 1 end;
if chosen(Filter, [2,3]) then select Kontakte where Teilnehmer = 1 and Mentor = 1 end;
Aber irgendwie klappt das nicht. Die Select Abfragen an sich funktionieren. Hat jemand eine Idee?
Das wär super!
Viele Grüße,
Edgar
4 Antworten
-
Servus !
Es handelt sich bei diesen Feldern (Trainer, Teilnehmer...) um "Ja/Nein" Felder, oder?
Dann sollte es in etwa so funktionieren...
if Filter = null then select Kontakte else if chosen(Filter, [2, 3]) then select Kontakte where Teilnehmer = 1 and Mentor = 1 else if chosen(Filter, 1) then select Kontakte where Trainer = 1 else if chosen(Filter, 2) then select Kontakte where Teilnehmer = 1 else if chosen(Filter, 3) then select Kontakte where Mentor = 1 end end end end end
...was jetzt für mich aber jetzt insgesamt unvollständig und noch etwas "unlogisch" ausschauen würde.
Was wäre mit der Kombination 1 + 2 oder 1 + 3 oder 1 + 2 + 3 ? Gibt es die grundsätzlich nicht?
Aber vielleicht hilft die Konstruktion oben ja schon mal etwas weiter...
Grüße
HF
-
Danke Horst, das ist hilfreich. Seltsam, dass es nur in einer verschachtelten if-Schleife funktioniert.
-
Servus nochmal!
Ja, ließt sich natürlich auch nicht so schön und bei noch mehr Kombinationen wird's immer verschachtelter und unverständlicher.
Eine etwas leichter lesbare Variante (und bessere bei vielen Optionen / Kombinationen) wäre vielleicht folgendes:
let myFilter := text(chosen(Filter)); switch myFilter do case "Trainer,Teilnehmer,Mentor": (select Kontakte where Trainer = 1 and Teilnehmer = 1 and Mentor = 1) case "Trainer,Teilnehmer": (select Kontakte where Trainer = 1 and Teilnehmer = 1) case "Trainer,Mentor": (select Kontakte where Trainer = 1 and Mentor = 1) case "Teilnehmer,Mentor": (select Kontakte where Teilnehmer = 1 and Mentor = 1) case "Trainer": (select Kontakte where Trainer = 1) case "Teilnehmer": (select Kontakte where Teilnehmer = 1) case "Mentor": (select Kontakte where Mentor = 1) default: (select Kontakte) end
...
Könnte man dann gegebenenfalls auch leicht erweitern um z.B. an Stelle der "und" Verknüpfung eine "oder" Verknüpfung draus zu machen, etc...
Vielleicht hilft's nochmal als kleine Anregung für eigene Experimente.
Grüße
HF
Content aside
- vor 1 JahrZuletzt aktiv
- 4Antworten
- 84Ansichten
-
2
Folge bereits