0

Mehrfachauswahl für dynamische Dokumente nutzen

Hallo. 

Ich habe folgendes Problem. Ich würde gerne eine Mehrfachauswahl nutzen und die angeklickten Punkte 
im Dokument untereinander anzeigen lassen. Also so...

 

 Das Ergebnis im Druck soll dann sein:

 Habt ihr eine Idee, was ich in der json-Formel eigeben muss, um so ein Ergebnis zu erhalten? 

 

Vielen Dank. 

12 Antworten

null
    • Tobias_Bartzsch
    • vor 9 Monaten
    • Gemeldet - anzeigen

    Wenn Du Benutzerdefiniertes JSON verwendest, könnte das so aussehen:

    Mehrfachauswahl: if Mehrfachauswahl then "-" +
    join(chosen(Mehrfachauswahl), "
    -") end

    Du kannst Dir aber auch ein Formelfeld zB. namens "Optionen" anlegen mit folgendem Script:

    if Mehrfachauswahl then "-" +
    join(chosen(Mehrfachauswahl), "
    -") end

    und dieses dann im Layout ansprechen {d.Optionen}

      • Jens_Waschwill
      • vor 9 Monaten
      • Gemeldet - anzeigen

       Vielen Dank Tobias. Leider hat das nicht funktioniert. Hast du noch eine Idee für den Zeilenumbruch? Sowohl mit Formel als auch über JSOn bekomme ich das Ergebnis

      • Ninox-Professional
      • planoxpro
      • vor 9 Monaten
      • Gemeldet - anzeigen

       Hallo Jens, versuch's mal so:

      join(for i in numbers(Mehrfachauswahl_Test) do
          "- " + record(TABELLE,i).TEXT end, "
      ")
      

      Wobei TABELLE für die Datenquelle des DMFAFs steht, TEXT für den Namen des Feldes, dessen inhalt ausgegeben werden soll.

      • Jens_Waschwill
      • vor 9 Monaten
      • Gemeldet - anzeigen

       Vielen Dank. Da funktioniert etwas nicht. 

      In der Formel wird es so ausgegeben

      bei dieser Formel:

      join(for i in numbers(Nebenkosten) do
          "- " + record(Vertrieb,i).Nebenkosten
      end, "
      ")
      

      Auf dem Ausdruck sieht es so aus

      Und in json ist nur dieser Bezug

      Was habe ich falsch gemacht? 

      • Ninox-Professional
      • planoxpro
      • vor 9 Monaten
      • Gemeldet - anzeigen

       

      Hm, in Unkenntnis der tatsächlich vorhandenen und ausgewählten Einträge sieht das Formelfeld erst mal korrekt aus: Zwei Zeilen, wobei der zweite Eintrag scheinbar keinen Inhalt hat. Mich irritiert allerdings, dass als Aufzählungszeichen einfache Striche dargestellt werden. Normalerweise sind das Bullet-Points (•).

      Egal, versuch mal im JSON:

      Nebenkosten: "<ul>" +
      for i in numbers(Nebenkosten) do
         "<li>" + record(Vertrieb,i).Nebenkosten + "</li>"
      end +
      "</ul>"

      Und im Template:

      {d.Nebenkosten:html}

      Oder schau dir Uwes Tipps zum Thema Richtext mit Carbone an:

      https://forum.ninox.de/t/35ha07z/carbonedyn-drucken_02-richtext

      • Jens_Waschwill
      • vor 9 Monaten
      • Gemeldet - anzeigen

      Hallo. Vielen Dank. Echt komisch. Jetzt macht er die Bulet-Points, jedoch trennt er die Auswahl nicht voneinander.

    • Tobias_Bartzsch
    • vor 9 Monaten
    • Gemeldet - anzeigen

    Nochmal zur Klärung...

    In deinem ersten Post ist nicht die Rede von einem dynamischen Mehrfachauswahlfeld, sondern von einem Mehrfachauswahlfeld für den dynamischen Druckeditor.

    Was benutzt Du denn genau? Hast Du die Nebenkosten in einer separaten Tabelle und nutzt ein dyn. Mehrfachauswahlfeld? 

    Ich habe hier mal beides testweise angelegt; ein dyn MFA und ein normales MFA. Dazu jeweils unsere angebotenen Formeln als join-Version und einmal als html.

    Ich habe jetzt nur den Ninoseditor benutzt, nicht ein dynamisches Template. Bei Ansprache des reinen Feldes im Druckeditor sieht man ähnliche Ausgaben wie in deinem Fall, aber die die beiden join-Formeln machen das, was du willst... die HTML formel müsste man sich im dyn Layout anschauen.

    • Ninox-Professional
    • planoxpro
    • vor 9 Monaten
    • Gemeldet - anzeigen

    Also, wenn es sich bei dem Mehrfachauswahlfeld um ein dynamisches handelt, was Tobias zu recht noch mal hinterfragt, dann sollte mein Vorschlag oben funktionieren. Ich habe das mal mit Beispieldaten nachgestellt:

    Tabelle ‚Optionen‘ (Datenquelle des Dynamischen Mehrfachauswahlfeldes ‚DynMAF‘):

     

    Angaben im Feld ‚DynMAF‘ (an beliebiger Stelle in der Datenbank):

     

    Ergebnis (Anzeige 'DynMAF' im Datenformular):

    Code des Formelfeldes ‚HTML_fx‘ zur HTML-Darstellung der in ‚DynMAF‘ gewählten Optionen:

    html("<ul>" +
    for i in numbers(DynMAF) do
       "<li>" + record(Optionen,i).Text + "</li>"
    end +
    "</ul>")

    Ergebnis:

    Template für dynamischen Druck (DOC/ODT):

    „SON Dateneingabe“:

    {
       DynMAF: HTML_fx
    }

    Ergebnis PDF-Datei:

    Ich würde es an deiner Stelle auch noch mal mit frischen Demodaten nachstellen und dann auf deine Echtdaten übertragen.

      • Jens_Waschwill
      • vor 9 Monaten
      • Gemeldet - anzeigen

      Hallo.

      Danke für Eure große Hilfe. Ich versuche es mal so darzustellen.

      Wenn ich das richtig sehe, ist es nur ein Mehrfachauswahlfeld.

      Wenn ich im dynamischen Dokument (json) nutze, dann habe ich erstens versucht.
      eine Formel zu erstellen und in json auf die Formel verweisen.

      Formelfeld:

      join(for i in numbers(Nebenkosten) do
          "- " + record(Vertrieb,i).Nebenkosten
      end, "
      ")
      

      In json würde dann stehen:

      Nebenkosten: formel_Nebenkosten

      Das Ergebnis ist wie bereits beschrieben. Im Formelfeld (Ninox) würde es auch so ausgewiesen werden.

      ================

      oder wie jetzt gerade ausprobiert:

      Im json steht:

      Nebenkosten: "<ul>" +
          for i in numbers(Nebenkosten) do
              "<li>" + record(Vertrieb,i).Nebenkosten + "</li>"
          end +
          "</ul>"

      und im Dynamischen Dokument

      Ergebnis:

      • Ninox-Professional
      • planoxpro
      • vor 9 Monaten
      • Gemeldet - anzeigen

       

      Okay, wenn ‚Nebenkosten‘ kein dynamisches, sondern ein normales Mehrfachauswahlfeld ist, dann funktionieren die bisherigen Vorschläge mit numbers() und record() natürlich nicht. Versuch‘s mal so (im JSON):

      {
      Nebenkosten: "<ul>" +
      for i in chosen(Nebenkosten) do "<li>" + i + "</li>" end + "</ul>"
      }

      Platzhalter im Template:

      {d.Nebenkosten:html}

      • Ninox-Professional
      • planoxpro
      • vor 9 Monaten
      • Gemeldet - anzeigen

      Ach so, für die Anzeige im Formelfeld, falls benötigt/erwünscht:

      html("<ul>" + for i in chosen(Nebenkosten) do "<li>" + i + "</li>" end + "</ul>")

      Oder als unformatierter Text, ohne HTML:

      join(for i in chosen(Nebenkosten) do "- " + i end, "
      ")
      
      • Jens_Waschwill
      • vor 9 Monaten
      • Gemeldet - anzeigen

      WOW. Herzlichen Dnak für deine (Eure) Hilfe und Geduld. Danke.