Probleme mit Ebene/Skalierung in Abhängigkeit der letzten Seite

Hallo,

Ich habe einen LL-Bericht der grob nach folgendem Schema aufgebaut sein soll:

  • Auf der ersten Seite gibt es einen Header, bestehend aus ca. einem Dutzend Textblöcken und Bildern
  • Auf jeder Seite gibt es einen Footer, bestehend aus einigen Textblöcken
  • Ab dem Header der ersten Seite gibt es einen Berichtscontainer mit vier Tabellen
  • Auf der letzten Seite steht ein Disclaimer

Die Größe und Position des Berichtscontainers hängen von der Seite ab: Auf der ersten Seite ist die Y-Position aufgrund des Headers limitiert. Wenn die Tabellen wenig genug Inhalt haben, ist die Höhe außerdem durch den Disclaimer limitiert. Das habe ich mit einer simplen Verschachtelung von If-Bedingungen über die Seitenzahlen realisiert, die Höhe des Berichtscontainers ist wie folgt definiert:

if(Page() = 1,if(Page() = val(TotalPages$()), 60, 160),120)

Hier ist das erste Problem: Wenn der Bericht einseitig ist, sollten die Bedingungen “Page()=1” sowie “Page() = val(TotalPages$())” erfüllt sein, da TotalPages ja 1 ist.
Dennoch skaliert LL den Bericht auf 160. Wenn ich Lastpage() statt TotalPages$() verwende, ist das Verhalten identisch.

Ein vergleichbares Problem gilt für den darauffolgenden Disclaimer. Da er auf der letzten Seite angezeigt werden soll, habe ich eine Ebene namens “Letzte Seite” mit der Bedingung “Page() = val(TotalPages$ ())” dafür eingerichtet, unter Verwendung dieser Ebene wird er jedoch nie angezeigt. Testweise habe ich auch eine vergleichbare Ebene mit der Bedingung Page() = val(Lastpage()) ausprobiert, die das gleiche Problem erzeugt.

Außerdem habe ich versucht, den Disclaimer über eine Verkettung an den Berichtscontainer zu knüpfen - auch hier habe ich keine Erfolge erzielt.

Die Werte für Page, LastPage und TotalPages habe ich mir im LL-Bericht selber ausgeben lassen, um dort Fehler zu finden - sie entsprechen aber den erwarteten Werten.

Meine Vermutung ist, dass ich in irgendeiner Form die Funktion von LastPage/TotalPages missverstehe. Wo könnte der Fehler liegen?

Die Bedingung Page() = LastPage() oder Page() = val(Totalpage$()) funktionieren nicht. Sie sind nicht dafür gemacht.

Nimm als Bedingung einfach LastPage() bzw. LastFooterThisTable() in einer Tablle.

LG,
Marco

1 Like

Leider kann mit Totalpage$() nicht gerechnent werden. Würde man es dazu verwenden, um die Größe des Berichtscontainers zu ändern, hätten wir ein klassisches Henne-Ei-Problem. Wenn der Container kleiner wird ändert sich ja ggf. auch wieder die Gesamtseitenzahl. Das kann so leider nicht klappen.

Mit List & Label26 hilft eventuell das Multipass Verfahren. Damit könnte das geschickter gemacht werden. Aber auch da - wenn man im zweiten Pass dann die Größe des Containers ändert verändert sich auch das Ergebnis.

Danke, Lastpage() funktioniert schonmal, der Disclaimer wird jetzt korrekt angezeigt. Fehlt noch die Skalierung des Berichtscontainers - irgendeine Idee?

Vielleicht so.

Cond(Page() =1 And LastPage(),xx, Cond(Page()=1,yy,LastPage(),zz,dd))))

Also,
Wenn Seite =1 UND letzte Seite, dann nur xx sonst
Wenn Seite 1 (und nicht letzte Seite), danm yy, sonst
Wenn Letztes Seite (und nicht Seite 1), dann zz, sonst
Den Defaultwert.

Probier mal aus, ob das evtl. funktioniert.

LG,
Marco

Das macht leider auch keinen Unterschied, trotzdem danke!

Wie @oboyaci sagte, scheint es ein Henne-Ei-Problem zu sein. Ich werde mal versuchen, die Anzahl Zeilen zuerst auszuwerten und dann in Abhängigkeit davon zu skalieren.