0

ja/nein in Dynamisches Drucklayout ausgeben

Hallo.

Ich doktor jetzt fast eine Woche an folgender Faragestellung.

Wie bekomme ich es hin, dass ich im dynamischen Drucklayout ein Checkbutton durch ein Ja/nein-Feld in ninox gedruckt bekomme?

In Ninox:

 In der Vorlage:

 Das Ergebnis ist im Druck ein einfaches "Ja". Wie bekomme ich so ein schönes Kästchen hin?

 Vielen Dank schon jetzt.

22 Antworten

null
    • Stefan_Munsch.1
    • vor 9 Monaten
    • Gemeldet - anzeigen

    Du könntest Unicode verwenden:

     let myCheckbox:= if Basismodul then "☑" else "☐" end;

    Und dann eben den Text im Drucklayout ausgeben. Aber: Unicode sieht nicht überall genau gleich aus.

      • Jens_Waschwill
      • vor 9 Monaten
      • Gemeldet - anzeigen

       Hallo Stefan. Vielen Dank. Aber wo gebe ich das denn ein? 
      Ich habe ja im Formular (Wordvorlage) kein Formelfeld. Wie funktioniert das bei den dynamischen Dingern. Im Druckeditor von ninox kenne ich das. Aber im dynamischen geht das auch? wie? 

       

      Vielen Dank. 

      • Stefan_Munsch.1
      • vor 9 Monaten
      • Gemeldet - anzeigen

      Wenn du die Word-Vorlage über ein JSON füllst, dann könnte es so aussehen:

      { ...

      "checkbox" : if Basismodul then "☑" else "☐" end,

      ... }

      Sonst schreibst du die Formel in ein (verstecktes) Formelfeld und rufst im Word das Formelfeld auf.

      • Jens_Waschwill
      • vor 9 Monaten
      • Gemeldet - anzeigen

        Hi Stefan. Danke. Aber genau das verstehe ich nicht. Wie fülle ich was über ein JSON. Das hat sich mir überhaupt nicht erschlossen. Sorryyyy. 

      Und wie erstelle ich ein verstecktes Formelfeld in Word? 

      Ich glaube, wenn ich diese Klamotten verstanden habe, komme ich wesentlich weiter im Ninox-leben :-)

      Kannst Du mich erhellen? 

      Viele Grüße, Jens

      • Stefan_Munsch.1
      • vor 9 Monaten
      • Gemeldet - anzeigen

      Hier ein kleines Beispiel. Ich hoffe, es hilft weiter.

      • Jens_Waschwill
      • vor 9 Monaten
      • Gemeldet - anzeigen

       Hi Stefan. 

      Ja, vielen Dank. Das hat mir jetzt wirklich sehr geholfen. Was ich gerade nicht verstehe ist die Formatierung. Ich habe einfach mal versucht ein weiteres Feld dort anzeigen zu lassen. 

      Ich finde allerdings den Fehler der Formatierung nicht. 

      Wieso ist das N nicht unter dem B? Du hast ein Leerzeichen dazwischen. Das habe ich aber auch gehabt. Findest du das Problem?  Und nochmals vielen Dank für deine Hilfe. 

      • Stefan_Munsch.1
      • vor 9 Monaten
      • Gemeldet - anzeigen

      Ja, gute Frage. Ist so weit alles korrekt. Ich habe die Vorlage im Druck nochmals ersetzt – mit deinem Word. Jetzt wird es richtig dargestellt bei mir. PS: Es lag nicht am Unterstrich.

      • Jens_Waschwill
      • vor 9 Monaten
      • Gemeldet - anzeigen

       

      Du, eine Frage habe ich noch. 

      Ich habe eine Vorlage und habe diese Datensatzfelder hinzugefügt

      Muss ich die dann auch in die json-Formel irgendwie packen? Auf dem Ausdruck sind die nämlich sonst nicht zu sehen. Aber wie setzte ich die ein? 

      json- 

      let myModul1 := "  ";
      let mymod2 := "    ";
      let myCheckbox := 'Formel Basis';
      let mycheck2 := 'Formel AMS';
      let mycheck3 := 'Fromel Dokms';
      {
          Checkbox: myCheckbox,
          Check2: mycheck2,
          Check3: mycheck3
      }
      

      • Stefan_Munsch.1
      • vor 9 Monaten
      • Gemeldet - anzeigen

      Also in deinem Fall müsste das etwa so aussehen:

      {

      Firmenname: "Meine tolle Firma GmbH",

      'Strasse_Nummer': "Feldweg 99",

      PLZ: "12345",

      Ort: "Entenhausen"

      }

      Oder wenn die Adresse irgenwo her aus einem andern Datensatz kommt:

      let myAddress:= select Datensatz_meiner_Adresse;

      {

      Firmenname: myAddress.Firmenname,

      'Strasse_Nummer': myAddress.Strasse + " " +myAddress.Nummer,

      ....

      }

      Die Namen im JSON müssen einfach exakt mit den Bezeichnungen im Word übereinstimmen. Als Erkennungszeichen steht im Word einfach immer noch d. davor.

      • Jens_Waschwill
      • vor 9 Monaten
      • Gemeldet - anzeigen

       Mensch, ist das kompliziert.

      Was mache ich denn falsch? 

      let myModul1 := "  ";
      let mymod2 := "    ";
      let myCheckbox := 'Formel Basis';
      let mycheck2 := 'Formel AMS';
      let mycheck3 := 'Fromel Dokms';
      let myAdress := Firmenname;
      {
          Checkbox: myCheckbox,
          Check2: mycheck2,
          Check3: mycheck3,
          Firmenname: myAdress
      }
      

      Es kommt nix dabei raus ?

      • Jens_Waschwill
      • vor 9 Monaten
      • Gemeldet - anzeigen

       Hi Stefan. Ich habe es hinbekommen. tadaaa. Wirklich super. Es wäre schon ziemlich genial, wenn es für so etwas einen Kurs oder eine gute Beschreibung geben würde. 

      Kannst du mir noch sagen, wie das mit den Auswahlfeldern funktioniert? 
      Ich bekomme im Ausdruck immer die Zahl angezeigt. 

      let myModul1 := "  ";
      let mymod2 := "    ";
      let myCheckbox := 'Formel Basis';
      let mycheck2 := 'Formel AMS';
      let mycheck3 := 'Fromel Dokms';
      let myAdress := (select Vertrieb);
      {
          Checkbox: myCheckbox,
          Check2: mycheck2,
          Check3: mycheck3,
          Firmenname: myAdress.Firmenname,
          Strasse_Nummer: myAdress.Strasse_Nummer,
          PLZ: myAdress.PLZ + " " + myAdress.Ort
      }
      

       

       

      Nochmals vielen Dank und schönen Sonntag. 

      Grüße, Jens

      • Stefan_Munsch.1
      • vor 9 Monaten
      • Gemeldet - anzeigen

      let x:=Auswahlfeld gibt die Nummer des Eintrags zurück bzw. die Datensatz-ID bei dynamischen Auswahlfeldern.

      let x:=text(Auswahlfeld) gibt den eingetragenen Wert zurück.

      • Jens_Waschwill
      • vor 9 Monaten
      • Gemeldet - anzeigen

       Ja, Perfekt. Auch das hat funktioniert. Hast du eine Quelle, wo du das alles nachlesen kannst? Ist mir langsam etwas peinlich, dass ich da alles nachfragen muss. 

      Noch eine Frage ist jetzt aufgetaucht. 

      Ich habe Dezimalwerte in Ninox (Felder). Wie gebe ich die Dezimalfelder im Dyn.Layout aus? 

      Die Position habe ich in das Json geschrieben:

      E_summe: myPosition.Endsumme,
      

      Ergebnis ist daraufhin im Ausdruck: 

      Das Feld in Ninox ist eine Formel. 

       

      Ich habe auch unter carbone.io geschaut und verschiedenstes ausprobiert. Aber leider ohne Erfolg.
      Hast du darauf auch eine Lösung, oder soll ich das in die Gruppe stellen? 

      Vielen Dank und schönen Wochenstart. 

      Jens

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

       Hallo Jens, ich bin jetzt nicht der Carbone-Experte, von daher mag es elegantere Lösungen geben, aber ich würde den Wert einfach mit format() aufbereiten, als String übergeben und die betreffende Spalte im Template ggf. auf rechtsbündige Ausrichtung setzen.

      E_summe: format(myPosition.Endsumme, "#0.00 €"),
      • Jens_Waschwill
      • vor 9 Monaten
      • Gemeldet - anzeigen

       Gute Idee.

      Irgendwas funktioniert aber nicht. 

      Wenn ich das hinzufüge:

      oder so.

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

       

      Mein Vorschlag bezog sich  auf folgende Zuweisung: 

      E_summe: myPosition.Endsumme,

      Und die funktioniert ohne das hinzugefügte format()? Die Schreibweise legt nahe, dass es sich bei myPosition um eine Datensatz-ID bzw. den Wert aus einer N:1-Verknüpfung handelt.

      Die Fehlermeldung mit „[number]“ hingegen deutet darauf hin, dass es sich bei myPosition um ein Array bzw. eine 1:N-Verknüpfung handelt.

      Falls die Werte aus ‚Endsumme‘ addiert werden sollen, könnte man ein sum() einbauen:

      E_summe: format(sum(myPosition.Endsumme), "#0.00 €"),

      Ansonsten noch mal schauen, wo myPosition genau herkommt und was es tatsächlich als Wert zurückgibt.

      Infos zum Thema Verknüpfungen finden sich bspw. hier:

      https://forum.ninox.de/t/p8h0t0r/einsteiger-tutorial-zu-verknupfungen-in-ninox

      • Jens_Waschwill
      • vor 9 Monaten
      • Gemeldet - anzeigen

       

      Ok. Das myPosition kommt aus der Json-Formel 

      Endsumme ist ein Formelfeld aus der Tabelle: Vertrieb 

      In dem Formelfeld: Endsumme  steht einfach nur:

      sum('Summe AMS' + 'Summe Basis')
      
      • Ninox-Professional
      • planoxpro
      • vor 9 Monaten
      • Gemeldet - anzeigen

       

      Die Code-Zeile

      let myPosition := (select Vertrieb);

      gibt ein Array (quasi eine Liste) mit den IDs aller(!) Datensätze der Tabelle 'Vertrieb' zurück. Bei der Angabe „myPosition.Endsumme“ weiß Ninox dann nicht, aus welchem der Array-Einträge/Datensätze die ‚Endsumme‘ geholt werden soll. Deshalb die Fehlermeldung. Man kann das ausprobieren, in dem man ganz gezielt nur den ersten oder letzten Eintrag der Tabelle 'Vertrieb' anspricht:

      let myPosition :=first(select Vertrieb);
      {
         E_summe: format(myPosition.Endsumme, "#0.00 €")
         ...

      Das sollte zu einem technisch korrekten Ergebnis führen, da myPosition nun kein Array mit mehreren Einträgen mehr enthält, sondern nur noch einen einzigen Datensatz, nämlich den ersten der Tabelle 'Vertrieb'.

      Ob das Ergebnis auch sachlich richtig wäre, kann ich nicht sagen (vermutlich: nein), weil ich das Datenmodell nicht kenne und nicht weiß, welche Verbindung zur Tabelle ‚Vertrieb‘ besteht.

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

      PS: Man kann solche Dinge übrigens auch unabhängig vom Drucklayout testen und die richtige Herangehensweise herausfinden. Dazu in der betreffenden Tabelle einfach ein Formelfeld erstellen und den Code ohne die geschweiften Klammern und die Zuweisung hineinschreiben. Zum Beispiel:

      let myPosition := first(select Vertrieb);
      format(myPosition.Endsumme, "#0.00 €")

      So lassen sich verschiedene Dinge ausprobieren. Wenn das angezeigte Ergebnis irgendwann passt, kann man den Formel-Inhalt genau so in die JSON-Daten übernehmen und dem Feld E_summe zuweisen.

      • Stefan_Munsch.1
      • vor 9 Monaten
      • Gemeldet - anzeigen

      Wenn das Zahlenformat schon auf dem Feld definiert ist, kannst du im JSON auch text(Zahlenfeld) verwenden, um die Formatierung zu übernehmen.

      • Jens_Waschwill
      • vor 9 Monaten
      • Gemeldet - anzeigen

       
      Vielen Dank Stefan. Ich habe es jetzt hinbekommen. Der Tipp mit dem text hat leider nicht funktioniert, obwohl es ein Formelfeld mit definierter Formatierung ist. Aber trotzdem tausen Dank für die Hilfe.

      • Jens_Waschwill
      • vor 9 Monaten
      • Gemeldet - anzeigen

      Hi. Genau der Tipp hatte mich nun zum Erfolg geführt. Vielen lieben Dank.

Content aside

  • vor 9 MonatenZuletzt aktiv
  • 22Antworten
  • 111Ansichten
  • 3 Folge bereits