0

View: Wie Datensätze anzeigen, wenn bei denen ein bis vier Termin-Felder nicht gefüllt sind - abhängig von dem Feld "Anzahl_Termine"?

Ich habe ein Feld "Anzahl_Termine". Darin stehen die Zahlen 1 oder 2 oder 3 oder 4.

Außerdem habe ich die Felder Termin1, Termin2, Termin3 und Termin4.

Wenn nun z.B. Anzahl_Termine = 3 sollen (nur) Datensätze angezeigt werden, bei denen nicht drei der vier Terminfelder gefüllt sind.

Ich brauche wohl in der View ein Berechnungsfeld, das "if" verschachtelt oder geht es einfacher?

Any ideas?

Grüße
Rembert

4 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Rembert, man könnte in der Ansicht über "Spalte einblenden" eine Funktion mit unten stehendem Code erstellen und dann diese Spalte nach true oder false filtern.

     

    let myTZ := if Termin1 and Termin2 and Termin3 and Termin4 then 4 else
       if Termin1 and Termin2 and Termin3 then 3 else
          if Termin1 and Termin2 then 2 else
             if Termin1 then 1 else 0 end
          end
       end
    end;
    if myTZ < Anzahl_Termine then true else false end

     

    Man könnte allerdings darüber nachdenken, die Termine in eine Untertabelle zu schreiben statt mit 4 Datenfeldern zu arbeiten, die nicht immer benötigt werden. Das würde auch viele Auswertungen erleichtern. Nur so als Anregung. 

    • RvK
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Copytexter,

    super, danke. Ich hatte es dann (über ein Hilfsfeld) so gelöst:

    let vFertig := 0;
    if 'Termin1' != null then 
    vFertig := vFertig + 1
    end;
    if 'Termin2' != null then
    vFertig := vFertig + 1
    end;
    if 'Termin3' != null then
    vFertig := vFertig + 1
    end;
    if 'Termin4' != null then
    vFertig := vFertig + 1
    end;
    if vFertig = 'Anz_Termine' then
    "fertig"
    else
    "unvollständig"
    end

    Und dann View mit Filter nach "unvollständig".

    Deine Lösung ist eleganter. Und ja, eine Tabelle ist immer besser.

    Bei meiner Lösung habe ich übrigens nicht verstnaden, warum

    vFertig := vFertig + 1

    funktioniert und

    vFertig + 1

    nicht funktioniert.

    • RvK
    • vor 3 Jahren
    • Gemeldet - anzeigen

    PS: Allerdings ist es bei meiner Lösung egal, in welcher Reihenfolge die Termine gefüllt werden. Und das passt hier besser auf den Sachverhalt, der dahinter steht. Die Reihenfolge ist nämlich unbekannt. 

    • Ninox-Professional
    • planoxpro
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ja, ich war davon ausgegangen, dass die Felder zumindest der Reihenfolge nach gefüllt würden. Wenn man auch da flexibel sein will, würde ich nochmal anregen, die Termine in einer Untertabelle statt in Einzelfeldern zu erfassen. Dann spielen weder Anzahl noch Reihenfolge eine Rolle und solche Abfragen wären mit einem einfachen cnt() erledigt.