0

Dynamisches Dokument - Gruppierung ??

Hallo liebe Comunity.

Ich komme gerade an einer Stelle nicht weiter und benötige hier Unterstützung.

Ich möchte ein Plan erstellen bzw. als dynamisches Dokument mit json drucken.

Das hier ist meine Tabelle:

 Derzeit bekomme ich diese Ausgabe:

 

 Ich würde es aber gerne so haben, dass gleiche Datumsangaben nur einmal angezeigt werden.

Also so (ohne die markierte Zeile)

 Derzeit habe ich folgende Wordvorlage:

 json-Formel sieht so aus:

{
    Kundenname: Auditmanagement.Unternehmen,
    Strasse: Auditmanagement.'Straße / Hausnummer',
    PZ: Auditmanagement.PLZ,
    Ort: Auditmanagement.Ort,
    geplAD: Auditmanagement.'Auditdatum von - bis',
    Auditor: text(Auditor),
    Zertinorm: text(Norm),
    Auditplan: for i in Auditplan do
        {
            Zeit1: format(i.Zeit, "hh:MM"),
            Audittag: format(i.Datum, " DD.MM.YYYY "),
            Inhalt: i.Inhalte1,
            Bereich: i.'Bereich / Standort/ Gesprächs-partner'
        }
    end
}

 

 

Für Hilfe wäre ich sehr dankbar. Irgendwie schreit es nach Grupierung. Ich habe aber kein Plan, wie das funktioniert.

Also vielen vielen Dank.

10 Antworten

null
    • UweG
    • vor 4 Monaten
    • Gemeldet - anzeigen

    Das würde ich im Template mit den 'conditioned-outputs' lösen.
    Man muss das JSON dann entsprechend bauen, was etwas tricky sein kann.

    Anbei eine kleine Bsp-DB, wie ich es lösen würde. Die zugehörigen Druck Templates sind enthalten.

      • Jens_Waschwill
      • vor 4 Monaten
      • Gemeldet - anzeigen

      Super gut. Vielen Dank. Bin mir nur nicht sicher, ob ich das hinbekommen kann. So gut bin ich leider nicht. Schade, dass es da keine einfachere Möglichkeit der Gruppierung gibt.

       

      Danke sehr.

      • Jens_Waschwill
      • vor 4 Monaten
      • Gemeldet - anzeigen

      Hi nochmal.

      Ich habe es hinbekommen. Nur listet er mir wie auch in der Beispieldatenbank. Alle Einträge aus der Tabelle Auditplan auf. Ich möchte aber nur die Inhalte der Tabelle Auditplan zu dem aktuellem Datensatz. Kannst Du mir da helfen ?

      et vTbl := ((select Auditplan) order by Datum);
      let vObj := vTbl.{
              vDat: format(Datum, "DD.MM.YYYY"),
              vZeit: format(Zeit, "hh:mm"),
              vTxt: Inhalte1,
              vDatArr: let xDat := Datum;
              vTbl[Datum = xDat].Datum
          };
      let xArr := [{}];
      xArr := null;
      let xObj := {};
      for i from 0 to cnt(vObj) do
          xObj := item(vObj, number(i));
          if i = 0 then
              setItem(xObj, "vSkip", 1);
              xArr := array(xArr, [xObj])
          else
              if item(vObj, number(i - 1)).text(vDatArr) = item(vObj, number(i)).text(vDatArr) then
                  setItem(xObj, "vSkip", 0);
                  xArr := array(xArr, [xObj])
              else
                  setItem(xObj, "vSkip", 1);
                  xArr := array(xArr, [xObj])
              end
          end
      end;
      let pJson := {
              pName: "JW",
              pTbl: xArr
          };
      Image := importFile(this, printAndSaveRecord(this, "Auditplan1", pJson), "PrintOut.pdf")
      

      Vielen Dank.

      • UweG
      • vor 4 Monaten
      • Gemeldet - anzeigen

      1.Zeile ändern in:
      let vTbl := Auditplan order by Datum

      • Jens_Waschwill
      • vor 4 Monaten
      • Gemeldet - anzeigen

      Cool. Vielen lieben Dank für deine Hilfe. Schönen Tag noch.

      • Jens_Waschwill
      • vor 4 Monaten
      • Gemeldet - anzeigen

      Hallo Uwe.

      Könntest Du mir noch verraten, wie ich eine Leerzeile nach einer Gruppierung hinbekomme?
      An der Stelle, an der sich die rote Linie befindet, soll eine Leerzeile hin. Bekomme das nicht hin.

      Muss ich in dem Script was zusätzlich eintragen?

       

      let vTbl := (Auditplan order by Datum);
      let vObj := vTbl.{
              vDat: format(Datum, "DD.MM.YYYY"),
              vZeit: format(Zeit, "hh:mm"),
              vTxt: Inhalte1,
              vBer: 'Bereich / Standort/ Gesprächs-partner',
              vDatArr: let xDat := Datum;
              vTbl[Datum = xDat].Datum
          };
      let xArr := [{}];
      xArr := null;
      let xObj := {};
      for i from 0 to cnt(vObj) do
          xObj := item(vObj, number(i));
          if i = 0 then
              setItem(xObj, "vSkip", 1);
              xArr := array(xArr, [xObj])
          else
              if item(vObj, number(i - 1)).text(vDatArr) = item(vObj, number(i)).text(vDatArr) then
                  setItem(xObj, "vSkip", 0);
                  xArr := array(xArr, [xObj])
              else
                  setItem(xObj, "vSkip", 1);
                  xArr := array(xArr, [xObj])
              end
          end
      end;
      let pJson := {
              Adatum: Auditdatum,
              Aditor: text(Auditor),
              Norrev: Normenrevision,
              AFirma: Auditmanagement.Unternehmen,
              AStr: Auditmanagement.'Straße/Hausnummer',
              APLZ: Auditmanagement.PLZ,
              AOrt: Auditmanagement.Ort,
              pTbl: xArr
          };
      let MeineDatei := printRecord(this, "Auditplan1", pJson);
      

      Vielen Dank.

      Grüße, Jens

      • Rafael_Sanchis
      • vor 2 Wochen
      • Gemeldet - anzeigen

       

      Hi UweG, there are any way to Sum the Totlak Columns ? In each agrupation.

      Thanks

      • UweG
      • vor 2 Wochen
      • Gemeldet - anzeigen

       Here an example DB
      Tabellendruck Gruppieren inclRowSum.ninox

      • Rafael_Sanchis
      • vor 2 Wochen
      • Gemeldet - anzeigen

       

      Too many thanks appreciate your help

      • Rafael_Sanchis
      • vor 8 Tagen
      • Gemeldet - anzeigen

       Hi again UweG. I have two problem here.

      • Sort by Fecha Gasto
      • And Where format the Total ? 
      let vTbl := ((select TRANSACCIONES) order by Categorias.Categoria);
      let vObj := vTbl.{
              vFGst: format(Fecha_Gasto, "DD.MM.YYYY"),
              vNota: Nota,
              vCat: text(Categorias.Categoria),
              vStatus: text(Status),
              vPago: text(Pago),
              vZahl: format(Monto_Gastos, "€ #,##0.00"),
              vCatArr: let xCat := Categorias;
              vTbl[Categorias = xCat].Categorias,
              vSum: let yCat := Categorias;
              sum(vTbl[Categorias = yCat].Monto_Gastos)
          };
      let xArr := [{}][null];
      let xObj := {};
      for i from 0 to cnt(vObj) do
          xObj := item(vObj, number(i));
          if i = 0 then
              setItem(xObj, "vSkip", 1);
              if item(vObj, number(i)).text(vCatArr) != item(vObj, number(i + 1)).text(vCatArr) then
                  setItem(xObj, "vSkipSum", 3)
              end;
              xArr := array(xArr, [xObj])
          else
              if item(vObj, number(i - 1)).text(vCatArr) = item(vObj, number(i)).text(vCatArr) then
                  setItem(xObj, "vSkip", 0);
                  if item(vObj, number(i)).text(vCatArr) != item(vObj, number(i + 1)).text(vCatArr) then
                      setItem(xObj, "vSkipSum", 3)
                  end;
                  xArr := array(xArr, [xObj])
              else
                  setItem(xObj, "vSkip", 1);
                  if item(vObj, number(i)).text(vCatArr) != item(vObj, number(i + 1)).text(vCatArr) then
                      setItem(xObj, "vSkipSum", 3)
                  end;
                  xArr := array(xArr, [xObj])
              end
          end
      end;
      let pJson := {
              pName: "Rafael Sanchis",
              pAdress: "Calle Arturo Soria 267",
              pCity: "Madrid",
              pMobile: "+34 617 624 239",
              pTbl: xArr
          };
      Gastos := importFile(this, printAndSaveRecord(this, "SumCat", pJson), "PrintOut.pdf")