PreCalc-Funktion in LLCP

Hallo,

ich versuche die PreCalc() Funktion in LLCP zu nutzen, um die Anzahl der Einträge einer Tabelle bereits im Tabellenkopf anzuzeigen - das scheint aber leider nicht zu funktionieren. Stattdessen wird die ganze (Kopf-) Zeile, in der die Funktion aufgerufen wird, nicht gerendert.

In der Vorschau des Designers wird der Wert korrekt ausgegeben.

Die Precalc-Funktion wird von LLCP nicht unterstützt - ich bin mir auch nicht sicher, ob wir die Unterstützung dafür noch implementieren können/werden. Die Funktion entstand im Classic-Bereich vor dem Mehrpassverfahren und vor der Unterstützung für native Aggregatsfunktionen. Gerade mit ersterem lässt sich das gleiche Ergebnis erzielen, ich beschreibe den Workaround hier gerne:

Die Idee ist, ein 2-Pass-Verfahren durchzuführen und im ersten Pass die Gruppensummen zu berechnen. Im zweiten Pass können dann die im ersten Pass berechneten Summen ausgegeben werden. Das ist gar nicht allzu kompliziert:

(1) Das 2-Pass-Verfahren in den Projekteigenschaften aktivieren:

image

(2) Einen Gruppenfuß (!) für die Berechnung der Gruppensummen erstellen:

Man beachte die Darstellungsbedingung (die Zeile wird nur im ersten Pass ausgegeben) und die Formel - im Wesentlichen wird hier im Beispiel je Land per SetVar die Gruppensumme gemerkt.

(3) Das kann man jetzt im Gruppenkopf nutzen:

Hier wird jetzt per GetVar die zuvor gesetzte Gruppensumme ausgelesen. Man könnte dem Gruppenkopf auch zusätzlich noch eine Bedingung mitgeben, dass er nur im zweiten Pass gedruckt wird, das ist aber nicht notwendig, da wir ohnehin nur den zweiten Pass anzeigen:

image

Im Ergebnis erhält man - sowohl in LLCP als auch im Classic-Mode - die gewünschte Ausgabe:

Ich hänge das Beispiel hier mal als Classic-Projekt an, es kann mit unserer Beispielanwendung ausgeführt und getestet werden.

GroupCounterWorkaround.lsr (73.7 KB)

1 Like

PS: dafür könnte die dann noch einfachere Lösung eine native Aggregatsfunktionenberechnung per NativeCount sein, wenn das von deiner Datenquelle unterstützt wird - ich war gerade gedanklich zu dem Thread im englischen Forum verrutscht :slight_smile:. Wenn die Datenquelle das nicht kann ist natürlich auch dafür der Workaround passend, ersetze Gruppenkopf durch Kopf und Gruppenfuß durch Fuß mit Darstellungsbedingung LastFooterThisTable().

Hallo Jochen,

vielen Dank für die ausführliche Erklärung.

NativeCount() gibt in meinem Fall leider keine sinnvollen Werte zurück - das scheint von meiner Datenquelle also nicht unterstützt zu werden. Die Lösung mit dem 2-Pass-Verfahren hat (nach einigem Herumprobieren) aber gut funktioniert.

1 Like

Super, das freut mich, danke für das Feedback. Das wird auch von der Performance her keinen Unterschied machen, auch Precalc triggert implizit ein 2-Pass-Verfahren, das ist einfach eine (zugegebenermaßen etwas einfacher zu konfigurierende) Alternative zur beschriebenen Vorgehensweise.