+1 800 256 3608 (toll-free in North America) or +49 7531 9060-10| service@combit.com

Tabelle zusammenhalten

Hallo

Ich versuche aktuell eine Rechnung mit List&Label 25 zu designen.
Die Rechnung besteht aus einem Kopfteil (Anschrift, Rechnungsnummer etc.), Positionen (Bezeichnung, Artikelnummer, Preis etc.) und einem Fussteil.
Der Fussteil besteht aus einer Tabelle mit der Summierung der Positionen nach Steuercode und einigen fixen Fusszeilen.

Der Fussteil soll auf der selben Seite sein auf der die Positionen enden, wenn er vollständig dort Platz hat, sonst soll er auf eine neue Seite. Ideal, aber nicht zwingend erforderlich, wäre eine Positionierung am Ende des Blattes (also quasi von unten nach oben gezeichnet).

Ich habe im Forum diverse vergleichbare Fragen gefunden, leider jedoch keine funktionierende Lösung. Einige Antworten die ich gefunden habe lassen mich vermuten, dass es eine solche auch nicht gibt, was schade wäre.

Ich habe versucht zwei Berichtscontainer auf die verschiedenen möglichen Arten miteinander zu verketten. Dabei gibt es dann entweder immer einen Umbruch, was ich auch einfach mit der “Umbruch vor” Option erreichen kann, oder es wird mitten in den Datenzeilen der Fussteil-Tabelle umgebrochen.

Ich habe auch die verschiedenen Optionen zum “Zusammenhalten” ausprobiert, schaffe es aber damit höchstens die letzte Datenzeile mit den Fusszeilen auf die nächste Seite zu bekommen, es müssen aber alle Datenzeilen und Kopfzeilen mit auf die nächste Seite.

Auch mit der “Umbruch vor” Option hatte ich kein Glück. Mit RemainingTableSpace() < X würde es funktionieren. Dafür müsste ich aber X kennen. Das wäre die tatsächliche Grösse der Fusszeilen-Tabelle. Die kann ich aber im Code nicht kennen, da sie ja im Designer durch Schriftgrösse etc. beeinflusst wird. Im Designer habe ich aber auch keine Option wie “TableHeight()” gefunden.
Da der Fussteil eine Tabelle mit dynamischer Anzahl an Zeilen enthält (es kann nur einen Steuercode geben, theoretisch aber auch ein Dutzend, auch wenn das extrem unwahrscheinlich ist), ist vermutlich die tatsächliche Grösse erst dann bekannt wenn der Report fertig ist, dann ist es aber zu spät.

Ich habe noch diverse andere Lösungsansätze probiert oder angedacht und verworfen, weil sie nicht funktionieren können.

Was ist bräuchte wäre eine Möglichkeit als Fusszeile einer Tabelle eine Tabelle hinzuzufügen. Dann sollte das mit dem Zusammenhalten funktionieren. Aber sowas habe ich auch nicht gefunden.

Eigentlich ist der Wunsch diese Informationen zusammen zu halten aber nicht unnötig zwei Seiten zu drucken, wenn alles auf einer Seite Platz hat, doch sehr verständlich und kann nicht nur in unserer Firma vorhanden sein. Ich hoffe also, dass Combit irgendeinen Mechanismus dafür eingebaut hat.

Kennt irgendjemand eine Lösung oder hat zumindest eine Idee was ich probieren könnte?

Sonst bleibt mir nur meine Chefs irgendwie zu überzeugen, dass Umbrüche mitten im Fussteil nicht so schlimm sind oder die Abschaffung verschiedener Steuercodes, damit ich keine dynamische Auflistung brauche und dies einfach als fixe Fusszeile angeben kann.

Warum brauchst Du dafür zwei Berichtscontainer? Viel einfacher wäre es doch zwei Tabellen in einem Container unterzubringen.

Wäre bei, Fußteil nicht einfacher diese auch als Fusszeilen zu definieren, die Summen könnten mit Summenvarablen oder SUM gebildet werden.

Ich brauche keine zwei Berichtscontainer, das habe ich nur ausprobiert weil ich gehofft hatte, mit der Verkettung mehr erreichen zu können als mit der automatischen Verkettung von zwei Tabellen in einem Container. Da das nicht funktioniert hat, habe ich jetzt wieder zwei Tabellen in einem Container, wie ich es vor diesem Versuch hatte.

Das Problem ist, dass ich eine dynamische Anzahl an Zeilen habe. Es gibt mal einen Steuercode, mal zwei und in seltenen Fällen drei, theoretisch aber beliebig viele. Ich habe keine Möglichkeit gefunden eine dynamische Anzahl an Fusszeilen zu erzeugen. Als ich bei den Fusszeilen mal “Tabelle.Spalte” als Input angegeben habe, wurde einfach nur eine Zeile der Tabelle als Fusszeile erzeugt und nicht für jede Zeile eine eigene Fusszeile.
Summenvariablen würden nicht funktionieren, da sie ja auch nicht dynamisch sind, sondern vorher eine fixe Anzahl an Summenvariablen festgelegt werden müssten. Dann könnte ich auch schon beim Abfüllen der Datenquelle festlegen wie viele es gibt und das mit fixen Fusszeilen regeln.

Ich würde es als Fusszeilen relalisieren, dann könntest Du z.B. einfach per Option die Fusszeilen an den unteren Rand der Seite packen.

Es gibt aber, so wie ich es verstehe zwei Szenarien:

a) Es gibt maximal 3 (oder 4,5) Steuercodes. Dann kannst du für jeden Steuercode eine Fußzeile definieren und diese per Darstellungsbedingung anzeigen oder eben nicht.

b) Die Anzahl lässt sich wirklich nicht genau festlegen. Dann brauchst Du eine zweite Tabelle in deinem Container (unterhalb der erste), welche die Fusszeilen als Datenzeilen enthält.

LG,
Marco

Ich habe leider Szenario b) und würde nur ungern (wenn es gar nicht anders geht) auf a) ausweichen, auch wenn das in 99 % der Fälle ausreichen würde.
Das Problem ist nur, dass List & Label nicht in der Lage ist die Datenzeilen zusammen zu halten. Ich bekomme also einen Seitenumbruch in den Datenzeilen des Fussteils, wenn diese nicht mehr auf die Seite passen. Diese Zeilen müssen aber immer zusammenbleiben. Andererseits soll natürlich nicht umgebrochen werden, wenn die Zeilen noch auf die Seite passen, also ist “Umbruch Vor = TRUE” auch keine Lösung.

Ich experimentiere gerade mit “Umbruch Vor = RemainingTableSpace(True) < 1000 * Anzahl Zeilen * Ungefähre Zeilenhöhe + Ein bisschen Spielraum”.
Ich habe die Hoffnung, dass das zumindest in den meisten Fällen funktionieren wird und schlimmstenfalls in einigen Fällen umbricht obwohl das nicht nötig wäre, weil Zeilenhöhe und Spielraum nicht exakt bestimmt werden können.

Sie sollten hier die Anzahl der Fusszeilen per Code abschätzen und damit eine Schätzung für die Höhe zu bekommen. Es gibt hier verschiedene Optionen zum Zusammenhalten, die greifen aber nur für Untertabellen. Informationen hierzu finden Sie auch im folgenden KB Artikel:

Die Sache mit der Schätzung mache ich ja jetzt, wie ich in meiner letzten Nachricht geschrieben habe.
Ich hatte nur auf etwas präziseres als eine doch recht grobe Schätzung gehofft, die zudem noch wieder angepasst werden muss, wenn der Report angepasst wird und dadurch die Zeilenhöhe verändert wird.

Die Sache mit den Untertabellen klingt interessant.
Dafür muss ich dann die letzte Zeile markieren, da die Tabellen nichts miteinander zu tun haben und ich die Untertabelle ja nur danach anhängen möchte. Ich probiere mal aus, ob das mit dem Zusammenhalten damit funktioniert.

Ich habe es jetzt ausprobiert.

Leider ist auch bei Untertabellen das “Zusammenhalten” der Datenzeilen kein wirkliches Zusammenhalten. Passen noch Datenzeilen der Untertabelle auf die erste Seite, wird trotzdem umgebrochen.
Ausserdem kann ich die Untertabelle nur nach Datenzeilen platzieren, nicht nach den Fusszeilen der ersten Tabelle, wie ich es brauchen würde.

Leider sehen wir hier für Ihr Szenario keine weiteren Möglichkeiten.

© combit GmbH