2016-10-04 2 views
2

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 (statt java.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 mit Long 's intValue().
+2

Versuchen incrementType = "Spalte" zu entfernen und nur $ F {..} in dem Abgang variable Ausdrücke. – dada67

+0

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? –

+0

Eine Antwort geschrieben. – dada67

Antwort

1

entfernen incrementType = "Spalte" und nur $ F {..} in den variablen Ausdrücke lassen:

<variable name="customer-tree_total" class="java.lang.Long" resetType="Group" resetGroup="customer-tree" calculation="Sum"> 
    <variableExpression><![CDATA[$F{total_calls}]]></variableExpression> 
    <initialValueExpression><![CDATA[0L]]></initialValueExpression> 
</variable> 
<variable name="customer-tree_billing-total" class="java.lang.Long" resetType="Group" resetGroup="customer-tree" calculation="Sum"> 
    <variableExpression><![CDATA[$F{billing_days}]]></variableExpression> 
    <initialValueExpression><![CDATA[0L]]></initialValueExpression> 
</variable> 
Verwandte Themen