0

Mehrfachauswahlfeld - Liste der nicht ausgewählte Optionen

Hallo, mit chosen(MFA) lässt sich auslesen, welche Optionen des MFA ausgewählt wurden. Wir kann ich denn die Optionen auslesen, die nicht ausgewählt wurden? Unsere Sekretärin soll abhaken, welche notwendigen Dokumente bereits abgegeben wurden. Mich interessiert,

  1. wer noch nicht alle Dokumente abgegeben hat (also noch nicht alle Haken gesetzt sind
  2. welche Dokumente noch fehlen (Listung der nicht abgegeben Dokumente)

Grüße Maurice

7 Antworten

null
    • mirko3
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Wie wäre es mit einem Ansichtenfeld. Die 3 steht für die Anzahl aller Auswahlmöglichkeiten des MFAF.

    (select TABELLE)[cnt(numbers(MFAF)) < 3]
    

    Darin ein Feld für die Namen und ein Funktionsfeld mit einem Code von Leo, den ich etwas ergänzt habe. Das Array1 enthält alle Auswahlmöglichkeiten des MFAF in Textform.

    let Array1 := ["Putzen", "Waschen", "Schlafen"];
    let Array2 := chosen(MFAF);concat(for i in Array1 do
            if not contains("#" + join(Array2, "#") + "#", "#" + i + "#") then
                i
            end
        end)
    
      • Maurice
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Ja, es geht genau um eine Ansicht und es funktioniert vom Prinzip. Danke.

      Zwei Dinge würde ich gerne noch automatisieren.

      1. Die Anzahl der Optionen (im Beispiel die Zahl 3) nicht manuell eingeben müssen (falls man mal die Anzahl der Optionen ändert). Aber cnt(MFAF) bringt ja nicht den erwünschten Erfolg. 
      2. Das Array mit den manuell eingetragen Textoptionen ist auch "wackelig". Sobald ich im MFAF meine Textoption z.B. nur sprachlich ändere, muss ich daran denken, in der Ansicht nachzusteuern.

      Gibt es da noch Lösungen?

      • mirko3
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Maurice Da wüßte ich keine Möglichkeit für ein MFAF. Wenn Du ein dynamisches MFAF erstellst und dieses durch eine Tabelle befüllst, kannst Du das aber einfach realisieren und hast beide Schwachstellen ausgemerzt, in dem Du über diese Tabelle iterierst für die Namen und mit cnt() die maximale Anzahl ermittelst.

      • Maurice
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Mirko Danke. In meinem Falle "lohnt" das nicht, extra eine Tabelle anzulegen. Ich lasse es so wie es ist.

    • Leonid_Semik
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Mirko
    man kann es ein bisschen kürzer machen:
     

    let Array1 := ["Putzen", "Waschen", "Schlafen"];
    concat(for i in Array1 do
            if not chosen(MFAF,i) then
                i
            end
        end)
    
    

    Leo

      • mirko3
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Leonid Semik Klasse! Optimierungen sind ganz mein Fall. Mirko

      • rainless
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Leonid Semik 

      So was habe ich neulich auch versucht - jetzt weiß ich das endlich. Mich würde noch interessieren, wie man an Array1 kommt, wenn es sich nicht um eine fixe, sondern eine dynamische Auswahlliste handelt. Muss man dann die Werte aus den Records ziehen, auf die sich die dynamische Auswahlliste referenziert? Oder gibt es einen Weg die Werte aus der Auswahlliste zu holen?