Mehrere Summen pro Gruppe

Hallo,

ich möchte folgende Tabelle im LL Designer erstellen:

Artikel | Menge | Einheit
A-BC    | 10    | stk
A-DE    | 5     | kg
A-FG    | 2     | stk
A-HI    | 1     | kg
Summe A | 12    | stk
        | 6     | kg
B-BC (...)

Also es ist schon nach Artikel gruppiert, dafür bekomme ich per Gruppenfußzeile auch eine Summe hin, aber nur eine Summe die stk und kg mischt.

Eine Idee war diese Formel, die aber auch zwei Probleme hat:

 sum(cond(t.einheit=NthValue(distinct(t.einheit),1), t.menge))

Zum einen bezieht sich nthValue nicht auf die aktuelle Gruppe womit ich dann auch bei 1 keine Summe bekomme wenn die erste Einheit in der Gruppe nicht vorkommt. Und zum anderen bräuchte ich eine Schleife um alle Einheiten zu durchlaufen.

Ist das über den Designer lösbar, oder muss ich das im Programmcode berechnen und dann als Untertabelle einbinden?

Ich würde an dieser Stelle mit zwei Summenvariablen arbeiten, einer Summe für die stk und einer für die kg. In etwa so:

@SummeStk, Formel Cond(Einheit="stk", Menge, 0)
@SummeKg, Formel Cond(Einheit="kg", Menge, 0)

Dann können Sie die beiden Formeln im Fuß verwenden.

Leider hatte ich wohl vergessen zu erwähnen dass mir die Einheiten bei Erstellung des Formulars nicht bekannt sind, es können im Programm jederzeit neue angelegt werden. Daher auch die Idee mit der Schleife um über alle Einheiten zu laufen.

Dann würde sich tatsächlich eine Relation zu einer Einheiten-Tabelle anbieten - damit könnten Sie das sauber lösen.

Ich stelle gerade fest dass im Fuß keine Untertabelle Tabelle eingefügt werden kann. Die Option steht nur bei Kopfzeile, Gruppenkopf und Datenzeile zur Verfügung.
Somit scheint mir das so auch nicht lösbar.

Ich hätte dann einfach die Information in eine eigene Tabelle gepackt und die als “Fußzeile” ausgegeben. Also im Vorfeld die Werte über die Programmlogik passend aggregiert und in einer eigenen Datenbanktabelle geparkt.

Wenn die Zahl der Einheiten endlich ist könnten Sie vielleicht auch mit einer Verschachtelung a la

SetVar(Einheit, NullSafe(GetVar(Einheit),0)+Anzahl)

arbeiten und dann einfach alle denkbaren Einheiten im Fuß ausgeben. Die nicht verwendeten sind dann einfach NULL…

1 Like