0

Ansichtstabelle filtern mit optionalen Filtern

Eines meiner Lieblingsthemen bei Ninox ist wohl das Filtern von Ansichtstabellen und anschließend das automatische befüllen einer neuen Tabelle anhand der eingestellten Filter. 

Aktuell lasse ich die Ansicht von PROJEKTE TODOs wie folgt anhand PHASE und QUALITÄT filtern (beides Mehrfachauswahlfelder):

let my := this;
(select 'Projekte ToDos')[let myFlag1 := false;
for i in my.numbers(Phase) do
for j in numbers(Phase) do
if j = i then myFlag1 := true end
end
end;
let myFlag2 := false;
for i in my.numbers('Qualität') do
for j in numbers('Qualität') do
if j = i then myFlag2 := true end
end
end;
(myFlag1 or not my.Phase) and (myFlag2 or not my.'Qualität')] 

 

nun möchte ich ein weiteres Mehrfachauswahlfeld INSTRUMENTE mit einbeziehen. Dieses soll aber nur berücksichtigt werden, wenn in den jeweiligen Zeilen aus PROJEKTE TODOs der 'INSTRUMENTE FILTER' = true ist. Wenn != true soll INSTRUMENTE ignoriert werden.

komme da mit dem verschachteln der if-Funktion nicht hin...

Danke für Hilfe :)

1 Antwort

null
    • Reinhard
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Scheinbar habe ich die Lösung durch ausprobieren gefunden: Falls jemand ähnlich komplexe Ansichts-Filter bauen möchte:

    let my := this;
    (select 'Projekte ToDos')[let myFlag1 := false;
    for i in my.numbers(Phase) do
    for j in numbers(Phase) do
    if j = i then myFlag1 := true end
    end
    end;
    let myFlag2 := false;
    for i in my.'Qualität' do
    if i = number('Qualität') then
    myFlag2 := true
    end
    end;
    (myFlag1 or not my.Phase) and (myFlag2 or not my.'Qualität') and 'Instrumente Filter' != true];
    (select 'Projekte ToDos')[let myFlag1 := false;
    for i in my.numbers(Phase) do
    for j in numbers(Phase) do
    if j = i then myFlag1 := true end
    end
    end;
    let myFlag2 := false;
    for i in my.'Qualität' do
    if i = number('Qualität') then
    myFlag2 := true
    end
    end;
    let myFlag3 := false;
    for i in my.numbers(Instrumente) do
    for j in numbers(Instrumente) do
    if j = i then myFlag3 := true end
    end
    end;
    (myFlag1 or not my.Phase) and (myFlag2 or not my.'Qualität') and (myFlag3 or not my.Instrumente) and 'Instrumente Filter' = true]