1

Mehrfachauswahl Feld

Hallo liebe Forummitglieder, 

ich bräuchte mal wieder eure Hilfe.

Ich habe ein Mehrfachauswahl Feld welches ich in einer Druckansicht ausgeben möchte das geht ja auch wird mir dann aber als Bezeichnung ausgegeben. Ziel wäre das ich ein Bild dahinter lege und das ausgewählte durch ein "X" gekennzeichnet wird.

Wenn ich mit Ja/nein arbeite geht dies ja. Aber ich hätte gerne das mit Mehrfachauswahl gelöst.

 

Links im Bild habe ich mit ja/nein gearbeitet und rechts ist Mehrfachauswahl.

 

Wie kann ich das lösen?

12 Antworten

null
    • Heinrich Frey Maschinenbau GmbH
    • Christian_Rott
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Bin heute im Webinar etwas weiter gekommen aber leider noch nicht wie gewünscht.

    mit folgenden Code erreiche ich das der angewählte Wert zwar ein X bekommt aber sobald ich eine zweite Auswahl machen verschwindet es wieder und es ist kein X mehr da...

    {"F40:" + if chosen(Mehrfachauswahl) = "F40" then
        "X"
    end + "
    F52:" + if chosen(Mehrfachauswahl) = "F52" then
        "X"
    end}
    

    Brauche wohl noch Hilfe

      • rainless
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Christian Rott 

      Hallo Christian,

      ich hab's im Webinar auch gesehen. Da fehlt noch etwas:

      • chosen liefert ein Array von Treffern zurück. Wenn Du also zwei Kreuze machst, dann kommen zwei Werte zurück. Die sind natürlich nicht gleich dem einen Ergebnis, das Du abfragst.
      • chosen kann aber gleich gegen einen Wunschwert vergleichen, dann kommt true oder false zurück und das ist das gesuchte.
      "F40:" + if chosen('Multiple choice', "F40") then
          "X"
      end + "
      F50:" + if chosen('Multiple choice', "F50") then
          "X"
      end + "
      F60:" + if chosen('Multiple choice', "F60") then
          "X"
      end

      Ich meine aber, das geht viel einfacher ... ich muss mal kurz was ausprobieren, weil hier tippst Du Dir ja einen Ast ...

      • Heinrich Frey Maschinenbau GmbH
      • Christian_Rott
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Lars SUPER DANKE DIR

      Es geht super

      Mit dem kann ich so leben 

      • rainless
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Christian Rott ich habe nochmals nachgedacht und eine schöne und flexiblere Lösung gefunden, mit der man mit ganz wenig Code dynamisch die Auswahl anzeigen kann - und du musst ihn kaum an die Auswahlliste anpassen. Keine Ahnung ob es sich lohnt, aber so sieht es aus:

      Der Code im Layout ist wie folgt:

      let textarray := (select Kolbenfueller).Text;
      let zahlarray := (select Kolbenfueller).Zahl;
      let commastring := concat(textarray);
      for i in zahlarray do
          if chosen('Kolbenfüller', i) then
              commastring := replace(commastring, item(textarray, i - 1), "[x] " + item(textarray, i - 1))
          else
              commastring := replace(commastring, item(textarray, i - 1), "[  ] " + item(textarray, i - 1))
          end
      end;
      join(split(commastring, ", "), "
      ")

      Damit kannst Du jede Objektart als komplette Häkchenliste darstellen.

      Das einzige was Du machen musst:

      • Für jede Objektart, also Kolbenfüller, Vakuumfüller, legst Du eine eigene Tabelle an (hier habe ich eine Tabelle Kolbenfueller angelegt - das musst Du dann im o. g. Script anpassen)
      • Diese Tabelle hat nur zwei Felder: Text (text field), Index (number field)
      • In der Tabelle legst Du dann die Elemente an. (Oscar20, 1), (MF30/4, 2) usw.
      • Das einzige was etwas tricky ist: Die Textfelder (also Oscar20, MF30/4, ...) MÜSSEN mit einem Leerzeichen anfangen und aufhören - wegen der Unterscheidung von ähnlichen Elementen wie z. B. K230C60 und K230C60P
      • Dann machst Du im Formular keine festdefinierte Mehrfachauswahl, sondern eine dynamische Mehrfachauswahl

      • Im Script setzt Du chosen dann auf den Name der dynamischen Mehrfachauswahl

      Damit sollte es funktionieren. Was damit nicht so einfach geht, ist die Anordnung in so 3er-Spalten ... wobei ... gehen wird es schon, es ist halt in der Ausgabe komplizierter

      • rainless
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Hmm, Code war noch nicht korrekt

      let textarray := (select Kolbenfueller).Text;
      let nrarray := (select Kolbenfueller).Nr;
      let cstring := concat(textarray);
      for i in nrarray do
          let j := 0;
          while number(item(nrarray, j)) != number(i) do
              j := j + 1
          end;
          if chosen('Kolbenfüller', number(i)) then
              cstring := replace(cstring, item(textarray, j), "[x] " + item(textarray, j))
          else
              cstring := replace(cstring, item(textarray, j), "[  ] " + item(textarray, j))
          end
      end;
      join(split(cstring, ", "), "
      ")

      Und Du kannst das Zahl-Feld in der Objektliste damit auch wegfallen lassen :)

      • rainless
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Und weil's so Spaß macht, kommt hier die finale Version. Hier werden keine Leerzeichen mehr benötigt. D. h. die Auswahlliste für die dynamische Mehrfachauswahl ist wirklich nur noch eine Tabelle mit Textfeldern, die die Namen der Produkte enthalten. Ansonsten gilt der Rest von oben weiterhin.

      let textarray := (select Kolbenfueller).Text;
      let nrarray := (select Kolbenfueller).Nr;
      let cstring := concat(textarray);
      for i in nrarray do
          let j := 0;
          while number(item(nrarray, j)) != number(i) do
              j := j + 1
          end;
          if chosen('Kolbenfüller', number(i)) then
              cstring := replacex(cstring, "\b" + string(item(textarray, j)) + "\b", "[x] " + item(textarray, j))
          else
              cstring := replacex(cstring, "\b" + string(item(textarray, j)) + "\b", "[  ] " + item(textarray, j))
          end
      end;
      join(split(cstring, ", "), "
      ")
      
      • Heinrich Frey Maschinenbau GmbH
      • Christian_Rott
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Hallo Lars, vielen vielen Dank für die Mühe das so alles zu machen. TAUSEND DANK !

      Ich bin bis Donnerstag noch beruflich unterwegs werde es am Wochenende probieren und mich dann melden.

      • Heinrich Frey Maschinenbau GmbH
      • Christian_Rott
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Christian Rott Hallo Lars super es funktioniert !!! Tausend Dank nochmal dafür

      • Heinrich Frey Maschinenbau GmbH
      • Christian_Rott
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Lars Ich hätte noch eine Frage dazu. Wenn ich jetzt nur die ausgewählten anzeigen lassen wollte ging das dann auch? Also nur die wo das X gesetzt ist.

      • rainless
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Christian Rott - das macht den Code etwas einfacher:

      let textarray := (select Kolbenfueller).Text;
      let nrarray := (select Kolbenfueller).Nr;
      let cstring := "";
      for i in nrarray do
          let j := 0;
          while number(item(nrarray, j)) != number(i) do
              j := j + 1
          end;
          if chosen('Kolbenfüller', number(i)) then
              cstring := cstring + "[x] " + string(item(textarray, j)) + ", "
          end
      end;
      join(split(cstring, ", "), "
      ")
      

      Es werden nur noch die notwendigen Zeilen eingefügt

    • rainless
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Und falls das sonst jemand nutzen möchte, mir ist noch eine einfachere Version mit Vollanzeige eingefallen:

    let textarray := (select Kolbenfueller).Text;
    let nrarray := (select Kolbenfueller).Nr;
    let cstring := "";
    for i in nrarray do
        let j := 0;
        while number(item(nrarray, j)) != number(i) do
            j := j + 1
        end
    ;
        if chosen('Kolbenfüller', number(i)) then
            cstring := cstring + "[x] " + string(item(textarray, j)) + ", "
        else
            cstring := cstring + "[  ] " + string(item(textarray, j)) + ", "
        end
    end;
    join(split(cstring, ", "), "
    ")
    
      • Heinrich Frey Maschinenbau GmbH
      • Christian_Rott
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Lars SUPER einfach genial das wäre auch was 

Content aside

  • 1 „Gefällt mir“ Klicks
  • vor 2 JahrenZuletzt aktiv
  • 12Antworten
  • 171Ansichten
  • 2 Folge bereits