0

Where Selektionsproblem

Liebe Ninox Mitstreiter

Ich scheine vor lauter Bäumen den Wald nicht mehr zu sehen bei einem eigentlich einfachen Problem. Könnt Ihr mir bitte weiterhelfen?

Ich habe eine Tabelle "Massnahmen", welche ich in einem Dashboard in einer Ansicht filtern möchte, wie ich das an anderen Orten auch tue und es viele Anleitungen dafür im Netz gibt.

Es hat 3 ja/nein Felder. 

1. Erledigt
2. zu prüfen
3. geprüft

Nun möchte ich die Ansicht sortieren, dass

wenn 1=ja, dann sollen alle Datensätzen, welche im Feld "erledigt" ein Datum haben gezeigt werden (ansonsten die leeren) UND

wenn 2=ja, dann sollen DAVON  alle Datensätzen, welche im Feld "zu prüfen" ein Datum haben gezeigt werden (ansonsten die leeren) UND

wenn 3=ja, dann sollen DAVON  alle Datensätzen, welche im Feld "geprüft" ein Datum haben gezeigt werden (ansonsten die leeren).

Ich habe die Ansicht mit folgendem script definiert und es klappt, aber nicht in allen Fällen (000,001,010,. Gewisse Kombinantionen funktionieren nicht (011,110,111,100,110,111)

Ich komme nicht alleine auf den Fehler. Vielen Dank für Eure Hilfe

Pascal

let xerl := Erledigt;
let xzupr := 'zu prüfen';
let xgepr := 'geprüft';
select Massnahmen
    where if xerl = true then
        'erledigt am' != null
    else
        'erledigt am' = null and if xzupr = true then
                'prüfen am' != null
            else
                'prüfen am' = null and if xgepr = true then 'geprüft am' != null else 'geprüft am' = null end
            end
    end

6 Antworten

null
    • mirko3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo. Das Problem (oder der Sinn) mit den Ja/Nein-Feldern ist, dass sie drei Rückgabewerte haben: 1. true, 2. false, 3. leer. D.h. Du müßtest alle diese Fälle einbeziehen. Denn Feld != null bedeutet: sowohl true als auch false ist möglich. Ausgangspunkt ist "null", klickst Du einmal dann "true", klickst Du nochmal dann "false". Anders: Wenn du das JA entfernst, dann steht dor t NEIN und nicht NULL. Einfacher wäre wohl hier die Verwendung eines Auswahlfelds mit den drei Wahlmöglichkeiten. Mirko

    • Ninox-Professional
    • planoxpro
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Dynamisch zusammengesetzte select-Abfragen können Probleme mit sich bringen. Um andererseits aber ausufernde if-else-Konstrukte zu vermeiden, arbeite ich in solchen Fällen bevorzugt mit Kombischaltern. Beispiel:

    let myS := "";
    myS := myS + if Erledigt then "X" else "_" end;
    myS := myS + if 'zu prüfen' then "X" else "_" end;
    myS := myS + if 'geprüft' then "X" else "_" end;
    switch myS do
       case "___": (select Massnahmen)
       case "X__": (select Massnahmen[Erledigt])
       case "_X_": (select Massnahmen['zu prüfen'])
       case "__X": (select Massnahmen['geprüft'])
       case "XX_": (select Massnahmen[Erledigt and 'zu prüfen'])
       case "X_X": (select Massnahmen[Erledigt and 'geprüft'])
       case "_XX": (select Massnahmen['zu prüfen' and 'geprüft'])
       case "XXX": (select Massnahmen[Erledigt and 'zu prüfen' and 'geprüft'])
    end
    • Admin_EYEPARC
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Sensationell! Das ist ja wirklich viel übersichtlicher als endlos verschachtelte if-else strukturen. Vielen Dank für den Tip. 

    Was ich seltsam finde, dass ein Ja/Nein Feld auch leer sein darf. Mich dünkt, das sollte doch zumindest in gewissen Fällen zwingend 1 oder 0 sein können/müssen oder mache ich da einen Anfänger-Denkfehler. 

      • Ninox-Professional
      • planoxpro
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Admin EYEPARC Ein Ja/Nein-Feld kann zwar optisch drei Zustände haben - Ja / Nein / Weder noch -, aber reguläre Rückgabewerte gibt es m. W. nur zwei: 1 für Ja und 0 für nicht Ja. Man kann je nach Kontext entscheiden, wie man ein solches Feld nutzen will. Wenn es ausdrücklich auch leer sein darf (also weder Ja noch Nein), lässt es sich zusätzlich auch noch auf "null" abfragen. Soll das Ja/Nein-Feld hingegen nie leer sein, kann man in den Optionen "Eingabe erforderlich" aktivieren und einen "Standardwert" vorgeben.

      • mirko3
      • vor 1 Jahr
      • Gemeldet - anzeigen

      planox. pro 

      Soll das Ja/Nein-Feld hingegen nie leer sein, kann man in den Optionen "Eingabe erforderlich" aktivieren und einen "Standardwert" vorgeben.

      So mache ich es auch zur Vermeidung von drei Rückgabewerten. Übrigens, wenn auch das alte Handbuch, so doch in Teilen noch gültig.

      https://docs.ninox.com/de/altes-handbuch/feldtypen/auswahl-felder#ja-nein

    • Admin_EYEPARC
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Vielen Dank für die Präzisierungen. Das ist wirklich sehr hilfreich. Und vielen Dank für den Hinweis auf das alte Ninox Handbuch. Die Dokumentation wird immer besser.

Content aside

  • Status Answered
  • vor 1 JahrZuletzt aktiv
  • 6Antworten
  • 93Ansichten
  • 3 Folge bereits