Ich baue einen Bericht mit Gruppen auf JasperSoft Studio und versuche, die Summe der Werte von zwei Spalten für jede Gruppe zu erhalten. Ich bin in der Lage, den Bericht erfolgreich zu generieren und bekomme die meisten richtigen Werte, aber ich habe bemerkt, dass die Summen jeder Gruppe genau sind, wenn und nur wenn alle Werte in der Gruppe auf derselben Seite sind, sonst werde ich falsch Summen.Falsche Summe bei Gruppierung über mehrere Seiten hinweg
Dies ist der Teil der .jrxml, der die Gruppe definiert:
<group name="customer-tree">
<groupFooter>
<band height="30">
<property name="com.jaspersoft.studio.unit.height" value="pixel"/>
<frame>
<textField>
<reportElement x="1407" y="0" width="66" height="30" uuid="cd6ad251-ee00-480a-bab7-04e1b094448b"/>
<textElement textAlignment="Right">
<font isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$V{customer-tree_billing-total}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="1473" y="0" width="72" height="30" uuid="d2424c64-8449-4c75-aca8-69244b990d44"/>
<textElement textAlignment="Right" verticalAlignment="Top">
<font isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$V{customer-tree_total}]]></textFieldExpression>
</textField>
</frame>
</band>
</groupFooter>
</group>
Und das sind die Definitionen der verwendeten Variablen zusammenzufassen:
<variable name="customer-tree_total" class="java.lang.Long" resetType="Group" resetGroup="customer-tree" incrementType="Column" calculation="Sum">
<variableExpression><![CDATA[$V{customer-tree_total} + $F{total_calls}]]></variableExpression>
<initialValueExpression><![CDATA[0L]]></initialValueExpression>
</variable>
<variable name="customer-tree_billing-total" class="java.lang.Long" resetType="Group" resetGroup="customer-tree" incrementType="Column" calculation="Sum">
<variableExpression><![CDATA[$V{customer-tree_billing-total} + $F{billing_days}]]></variableExpression>
<initialValueExpression><![CDATA[0L]]></initialValueExpression>
</variable>
Dinge, die ich habe schon versucht:
- Verwendung verschiedener Abfrageparameter. I nur falsche Werte, wenn alle Ergebnisse in einer Gruppe nicht auf eine Seite passen, und dies wurde bestätigt, indem alle Ergebnisse auf einer Seite angezeigt werden, indem
<property name="net.sf.jasperreports.page.break.no.pagination" value="apply"/>
zur Quelle hinzugefügt wird. In diesem Fall sind alle Summen der Gruppe korrekt. - Ändern Sie die Parameter und verwandte Variablen alle auf
java.lang.Integer
(stattjava.lang.Long
), um zu sehen, ob die<variableExpression>
Ausdrücke betroffen wären. - Halten Sie die Parameter als
java.lang.Long
und fügen Sie sie zu den zugehörigen Variablen mitLong
'sintValue()
.
Versuchen incrementType = "Spalte" zu entfernen und nur $ F {..} in dem Abgang variable Ausdrücke. – dada67
Wow @ dada67, ich kann nicht glauben, dass das tatsächlich funktioniert hat ... Danke! Wolltest du die Frage formell beantworten, damit ich deine Antwort offiziell annehmen kann? –
Eine Antwort geschrieben. – dada67