Zeilenumbruch. Eine neue Ergänzung zu 4D Write Pro Tables!

Die Dokumententabellen von 4D Write Pro haben sich in den letzten Versionen stark verbessert. Wir, das 4D Team, haben uns so sehr dafür eingesetzt, 4D Write Pro zu einem leistungsstarken, vorlagenbasierten Dokumentgenerator zu machen, dass wir bereits Fortschritte wie Kopfzeilen, Datenquellen, Übertragszeilen… veröffentlicht haben, um nur einige leistungsstarke Funktionen zu nennen.

Jetzt, mit 4D v20, sind die Umbruchzeilen an der Reihe, ihren Einzug zu halten!

Meine Damen und Herren, Trommelwirbel, bitte!

Das Feature in Aktion

 

Das zu erreichende Ziel

Was auch immer Ihre Tätigkeit ist, Sie müssen auf jeden Fall Listen erstellen.

Diese Listen werden nach Ihren eigenen Kriterien sortiert, und in der Regel ist es notwendig, Gruppen für jede dieser Gruppen zu erstellen, um Summen oder Statistiken zu erhalten. Genau das bietet Ihnen diese neue Funktion von 4D Write Pro!

Wann und wie? Hier ist ein konkretes Beispiel

Wenn eine Tabelle aus einer sortierten Datenquelle gespeist wird, soll eine Umbruchzeile eingefügt werden, wenn sich der dem Sortierkriterium entsprechende Wert ändert.

Stellen Sie sich vor, Sie kennen Menschen aus mehreren Kontinenten, Ländern und Städten.

Sie möchten eine Liste dieser Personen erstellen, die nach Kontinent, Land und Stadt gruppiert ist.

blank

Oder Sie möchten einen Bericht erstellen, der auf der Beziehung zum Unternehmen basiert, und eine Liste der Mitarbeiter erstellen, die nach dem Unternehmen auf jedem Kontinent gruppiert sind.

blank

 

In beiden Fällen müssen Sie zunächst sicherstellen, dass diese Auswahl nach diesen drei Kriterien sortiert ist.

Fall 1:

ds.people.all().orderBy("continent asc, country asc, city asc")

Fall 2:

ds.People.all().orderBy("worksFor.name asc, continent asc)

Für jedes Sortierkriterium eine Zwischenzeile

Sobald die Datenquelle mit der Tabelle verknüpft ist, werden die Personen in der „Wiederholungszeile“ und in der gewünschten Reihenfolge angezeigt. Schauen wir uns nun an, wie man sie nach Sortierkriterien gruppieren kann.

Verwendung der Schnittstelle

Im Zeilenmenü sind jetzt neue Elemente verfügbar. Sie sind kontextabhängig und werden nur angezeigt, wenn sich der Cursor innerhalb einer Tabelle befindet (und unterhalb der Kopfzeile, falls vorhanden).

blank

 

 

 

 

Die Formel kann z. B. auf einem Attributnamen (This.item.country) oder einem zugehörigen Attributpfad (z. B. This.item.worksFor.name) oder einer beliebigen anderen Formel (Substring(This.item.name;1;1)) beruhen.

Sobald das Unterbrechungsattribut festgelegt wurde, können Sie die Formel sehen, wenn Sie den Mauszeiger über das Unterbrechungssymbol „S“ (wie in Sort) bewegen.

 

blank

Oberhalb oder unterhalb von BreakS?

Umbruchzeilen können oberhalb oder unterhalb der wiederholten Zeile (gefüllt durch die Tabellendatenquelle) liegen.

Die Umbrüche werden jedes Mal gerendert, wenn sich der von der Umbruchformel zurückgegebene Wert ändert. Stellen Sie also sicher, dass die Position der Umbrüche mit den Sortierkriterien der Datenquelle übereinstimmt.

blank

 

Ein neues Zeilenattribut

Das Attribut wk break formula enthält die Formel, deren Ergebnis die Anzeige der Umbruchzeile bestimmt. Allein das Vorhandensein dieses Attributs bewirkt, dass eine Zeile als Umbruchzeile betrachtet wird. Es können beliebig viele Zeilenumbrüche definiert werden, z. B. Formula(This.item.city) für die niedrigste Bruchstufe und Formula(This .item.continent) für die höchste Stufe.

 

WP SET ATTRIBUTES($row; wk break formula; Formula(This.item.country))
WP RESET ATTRIBUTES($row; wk break formula)

Denken Sie daran:

  • Eine Unterbrechungszeile muss sich genau über oder unter einer wiederholten Zeile oder einer anderen Unterbrechungszeile befinden, wenn es mehrere Ebenen gibt. Andernfalls werden sie nicht berücksichtigt.
  • Die Anzahl der Ebenen ist auf fünf begrenzt. Wenn Sie eine sechste Ebene hinzufügen, wird kein Fehler ausgelöst, aber sie wird auch nicht gerendert.
  • Das Einfügen von Zwischenzeilen in die Tabelle sortiert die Datenquelle nicht. Die Datenquelle muss eigenständig sortiert werden.

Das war’s!

Inhalt der Umbruchzeilen

Zusätzlich zum Text können Umbruchzeilen zwei Arten von Formeln enthalten.

  • Die erste Möglichkeit besteht darin, die Elemente zu verwenden, die in den wiederholten Zeilen vorhanden sind oder vorhanden sein könnten (Beispiel: This.breakItems).
    Der zurückgegebene Wert ist der letzte Wert, der vor dem Umbruch verwendet wurde (oder der erste Wert, der verwendet wurde, wenn die Umbruchzeile vor den wiederholten Zeilen liegt).
  • Die zweite Möglichkeit ist neu: Die Eigenschaft breakItems kann nur im Kontext von Umbrüchen verwendet werden (Beispiel: This.breakItems).
    Die breakItems sind eine Teilmenge der Quelldaten der Tabelle, die genau den wiederholten Zeilen der betreffenden Umbruchzeile entsprechen.

    • Um das Beispiel der mehrfachen Umbrüche nach Kontinent-Land-Stadt zu verwenden: Wenn sich der Inhalt ändert, entspricht die Untermenge den Personen des Kontinents (vor der Änderung), und zwar unabhängig davon, ob die Umbruchzeile vor oder nach der wiederholten Zeile platziert wird. Diese Teilmenge kann für Berechnungen wie sum(„salary“), average(„salary“), usw. verwendet werden.

 

blank

 

Schließlich legen wir fest, dass diese Teilmengen denselben Typ wie die Quelldaten der Tabelle haben, d. h. eine Entity Selection oder eine Collection.

Mehr Informationen

Weitere Informationen über diese Funktion finden Sie in der Dokumentation.

Schlussfolgerung

Diese neue Funktion zeigt einmal mehr die Leistungsfähigkeit von 4D Write Pro bei der automatischen Dokumentenerstellung.

Mit den Breaks wird ein weiterer Schritt gemacht. Lassen Sie uns wissen, was Sie über das 4D Forum denken.

Roland Lannuzel
- Product Owner & 4D Experte - Nach seinem Studium der Elektronik arbeitete Roland als Entwickler und Berater in der industriellen IT-Branche, wo er Lösungen für Kunden mit einer Vielzahl von Datenbanken und Technologien entwickelte. In den späten 80er Jahren verliebte er sich in 4D und setzte es bei der Entwicklung von Geschäftsanwendungen wie Buchhaltungs-, Abrechnungs- und E-Mail-Systemen ein. 1997 trat er schließlich in das Unternehmen ein und leistete einen wertvollen Beitrag, indem er Spezifikationen, Testtools und Demos entwarf, Schulungen durchführte und auf vielen Konferenzen für die 4D Community sprach. Er gestaltet die Zukunft von 4D aktiv mit, indem er neue Funktionen und Datenbankentwicklungstools definiert.