0

Logische Verknüpfung

Es geht darum im Kalender etwas anzeigen zu lassen

if 'Althütte Tag'.Notarzt = "Ulrich Mast" then
"Althütte Tag"
end;
if 'Althütte Nacht'.Notarzt = "Ulrich Mast" then
"Althütte Nacht"
end;
if 'Althütte Nacht'.Notarzt = "Ulrich Mast" and 'Althütte Tag'.Notarzt = "Ulrich Mast" then
"Althütte Tag/Nacht"
end

leider wird nur etwas angezeigt, wenn die Bedingung 3 erfüllt ist, ist nur Bedingung eins oder zwei erfüllt, bleibt das Feld leer ....

Wo liegt mein Fehler ?

4 Antworten

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

    Hallo, ich hab's jetzt nicht getestet, aber so als spontane Idee: Versuch doch mal, die Reihenfolge der Abfragen umzukehren ...

     

    if 'Althütte Nacht'.Notarzt = "Ulrich Mast" and 'Althütte Tag'.Notarzt = "Ulrich Mast" then
       "Althütte Tag/Nacht"
    else
       if 'Althütte Tag'.Notarzt = "Ulrich Mast" then
          "Althütte Tag"
       else
          if 'Althütte Nacht'.Notarzt = "Ulrich Mast" then
             "Althütte Nacht"      
          end;   
       end;
    end

    • Detlev_Gissat
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo, vielen Dank

    In dieser Reihenfolge funktioniert es. Gibt es eine  Regel oder ist das mehr "try  an error".

    Was  muss  ich beachten,  wenn  ich die Abfrage noch um weitere Schichten erweitern möchte ?

    Vielen Dank

    Detlev

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

    Ganz ehrlich: Ganz genau erklären kann ich es in diesem Fall nicht. Auf den ersten Blick könnte auch dein Code funktionieren. Dass er es nicht tut, liegt vermutlich daran, dass Ninox bei Berechnungsfeldern ja immer versucht, einen Wert zu ermitteln. Und zwar bei jeder if-Abfrage neu. Trifft die nicht zu, ist das Ergebnis halt "false" und der vorher ermittelte Wert wird ggf. mit 'null' überschrieben.

     

    Das ist so, als würdest du mit einem Script einem Feld einen Wert zuweisen wollen:

     

    if VARIABLE = "A" then
       FELD := "X"
    else
      FELD := null
    end;
    if VARIABLE = "B" then
       FELD := "Y"
    else
       FELD := null
    end

    Angenommen, VARIABLE hätte den Wert "A", dann wäre FELD am Ende trotzdem 'null', weil die folgende if-Abfrage auf "B" ein 'false', ergibt, also die 'else'-Anweisung ausgeführt wird.

    Durch die Verschachtelung wird verhindert, dass die weiteren Abfragen überhaupt durchgeführt werden, wenn eine Bedingung zutrifft. Auf diese logische Reihenfolge müsstest du bei weiteren Abfragen halt achten. Das kommt aber auf den Einzelfall an. Bei sehr vielen Kombinationsmöglichkeiten könnte man prüfen, ob evtl. auch eine switch-case-Struktur in Frage kommt.

    • DELETEDufc28496
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Play online free euchre https://myeuchre.com just follow the simple game tips and get the basic information.