2012-11-25 3 views
21

Ich habe unter ähnlichen Bericht in Jaspersoft iReport Designer, aber nicht in der Lage, herauszufinden, wie alle Werte in der vertikalen Spalte "Arzt Zahlung" summiert werden, um insgesamt "1601" zu bekommen? Die Länge dieser Spalten ist variabel (d. H. Keine der Zeilen variiert je nach Größe der Datenbank & ihre Aktualisierungshäufigkeit).Wie fasst man alle Werte in einer Spalte in Jaspersoft iReport Designer zusammen?

Gibt es eine Variable wie $V{COLUMN_COUNT} (gibt tatsächlich keine von Zeilen, hier 5), , die Summe aller Werte in einer Spalte gibt? Wenn nein, wie zu tun Summe?

Doctor ID Doctor Payment 
A1    123 
B1    223 
C2    234 
D3    678 
D1    343 
Total   1601 

Antwort

53

Es ist ziemlich einfach, Ihre Aufgabe zu lösen. Sie sollten eine neue Variable zum Summieren von Werten der "Doctor Payment" Spalte erstellen und verwenden.

In Ihrem Fall kann die Variable wie folgt erklärt werden:

<variable name="total" class="java.lang.Integer" calculation="Sum"> 
    <variableExpression><![CDATA[$F{payment}]]></variableExpression> 
</variable> 
  • die Berechnungsart ist Summe;
  • die Rücksetztyp ist Bericht;
  • die Variable Ausdruck ist $ F {} Zahlung, wo $ F {} Zahlung der Name eines Feldes enthält sum (Doktor Payment).

Das Arbeitsbeispiel.

CSV-Datenquelle:

 
doctor_id,payment 
A1,123 
B1,223 
C2,234 
D3,678 
D1,343 

Die Vorlage:

<?xml version="1.0" encoding="UTF-8"?> 
<jasperReport ...> 
    <queryString> 
     <![CDATA[]]> 
    </queryString> 
    <field name="doctor_id" class="java.lang.String"/> 
    <field name="payment" class="java.lang.Integer"/> 
    <variable name="total" class="java.lang.Integer" calculation="Sum"> 
     <variableExpression><![CDATA[$F{payment}]]></variableExpression> 
    </variable> 
    <columnHeader> 
     <band height="20" splitType="Stretch"> 
      <staticText> 
       <reportElement x="0" y="0" width="100" height="20"/> 
       <box leftPadding="10"/> 
       <textElement textAlignment="Center" verticalAlignment="Middle"> 
        <font size="10" isBold="true" isItalic="true"/> 
       </textElement> 
       <text><![CDATA[Doctor ID]]></text> 
      </staticText> 
      <staticText> 
       <reportElement x="100" y="0" width="100" height="20"/> 
       <box leftPadding="10"/> 
       <textElement textAlignment="Center" verticalAlignment="Middle"> 
        <font size="10" isBold="true" isItalic="true"/> 
       </textElement> 
       <text><![CDATA[Doctor Payment]]></text> 
      </staticText> 
     </band> 
    </columnHeader> 
    <detail> 
     <band height="20" splitType="Stretch"> 
      <textField> 
       <reportElement x="0" y="0" width="100" height="20"/> 
       <box leftPadding="10"/> 
       <textElement/> 
       <textFieldExpression><![CDATA[$F{doctor_id}]]></textFieldExpression> 
      </textField> 
      <textField> 
       <reportElement x="100" y="0" width="100" height="20"/> 
       <box leftPadding="10"/> 
       <textElement/> 
       <textFieldExpression><![CDATA[$F{payment}]]></textFieldExpression> 
      </textField> 
     </band> 
    </detail> 
    <summary> 
     <band height="20"> 
      <staticText> 
       <reportElement x="0" y="0" width="100" height="20"/> 
       <box leftPadding="10"/> 
       <textElement> 
        <font isBold="true"/> 
       </textElement> 
       <text><![CDATA[Total]]></text> 
      </staticText> 
      <textField> 
       <reportElement x="100" y="0" width="100" height="20"/> 
       <box leftPadding="10"/> 
       <textElement> 
        <font isBold="true" isItalic="true"/> 
       </textElement> 
       <textFieldExpression><![CDATA[$V{total}]]></textFieldExpression> 
      </textField> 
     </band> 
    </summary> 
</jasperReport> 

Das Ergebnis wird sein:

Generated report via iReport's preview


Sie können viele Informationen in der JasperReports Ultimate Guide finden.

+0

Ich habe etwas Logik, aber wo ich neue Variable setzen, setze ich am Anfang, dh nach vielen deklariert, aber geben Fehler, dass die Variable nicht gefunden: "total" –

+0

@SagarNikam Haben Sie meine Probe versuchen? –

+0

Ja, Sir mit Ihrem Beispiel funktioniert es, aber ich auf Echtzeit-Daten, arbeiten mit MySQL-Abfrage, gibt es Fehler "Variable nicht gefunden", ich deklariere Variable nach über, würde ich senden vollständige Datei –

7

iReports Benutzerdefinierte Felder für Spalten (Summe, Durchschnitt, etc.)

  1. auf Variablen rechten Maustaste und klicken Sie auf Create Variable

  2. Klicken Sie auf die neue Variable

    ein.Beachten Sie die Eigenschaften auf der rechten

  3. Benennen Sie die Variable entsprechend

  4. Ändern Sie den Wert Klassenname auf den richtigen Datentyp

    ein. Sie können

  5. Veränderung der Expression

    ein, indem Sie auf die drei Punkte

  6. Wählen Sie die richtige Art der Berechnung suchen. Klicken Sie auf das kleine Symbol

    b. Wählen Sie die Spalte aus, die Sie für die Berechnung der

    c. Klicken Sie auf Fertig

  7. Set Anfangswert Expression auf 0

  8. den Zuwachs Typ auf keine

  9. Leave Incrementer Werksklassenname leer
  10. Stellen Sie den Reset-Typ (in der Regel berichten)

  11. Ziehen Sie ein neues Textfeld auf die Bühne (normalerweise in Fußzeile der letzten Seite oder Spaltenfuß)

  12. Doppelklicken Sie auf das neue Textfeld
  13. Löschen der Ausdruck „Textfeld“
  14. Wählen Sie die neue Variable

  15. Click Finish

  16. den neuen Text in einer gewünschten Position Setzen 
Verwandte Themen