0

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

null
    • Horst_Fertig
    • vor 1 Jahr
    • Gemeldet - anzeigen

    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

    • SMI
    • SMI
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Danke Horst, das ist hilfreich. Seltsam, dass es nur in einer verschachtelten if-Schleife funktioniert.

    • Horst_Fertig
    • vor 1 Jahr
    • Gemeldet - anzeigen

    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

      • Horst_Fertig
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Kleine Ergänzung noch: SO würd's natürlich auch gehen...

      let myFilter := numbers(Filter);
      switch myFilter do
      case "1,2,3":
          (select Kontakte where Trainer = 1 and Teilnehmer = 1 and Mentor = 1)
      case "1,2":
          (select Kontakte where Trainer = 1 and Teilnehmer = 1)
      case "1,3":
          (select Kontakte where Trainer = 1 and Mentor = 1)
      case "2,3":
          (select Kontakte where Teilnehmer = 1 and Mentor = 1)
      case "1":
          (select Kontakte where Trainer = 1)
      case "2":
          (select Kontakte where Teilnehmer = 1)
      case "3":
          (select Kontakte where Mentor = 1)
      default:
          (select Kontakte)
      end