2012-11-25 21 views
21

Ho un rapporto simile in Jaspersoft iReport Designer, ma non riesco a capire come sommare tutti i valori presenti nella colonna verticale "Doctor Payment" per ottenere un totale di "1601"? La lunghezza di queste colonne è variabile (ad esempio, il numero di righe varia a seconda della dimensione del database & della frequenza di aggiornamento).Come sommare tutti i valori in una colonna in iReport Designer Jaspersoft?

Esiste una variabile come $V{COLUMN_COUNT} (in realtà non fornisce alcuna riga, qui 5), che fornisce la somma di tutti i valori in una colonna? Se no, come fare la somma ?

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

risposta

53

È abbastanza semplice risolvere il problema. È necessario creare e utilizzare una nuova variabile per sommare i valori della colonna "Pagamento medico".

Nel tuo caso la variabile può essere dichiarata in questo modo:

<variable name="total" class="java.lang.Integer" calculation="Sum"> 
    <variableExpression><![CDATA[$F{payment}]]></variableExpression> 
</variable> 
  • il tipo di calcolo è Somma;
  • il Reset tipo è Rapporto;
  • l'variabile espressione è $ F {} pagamento, dove $ F {} pagamento è il nome di un campo contiene somma (dottore pagamento).

L'esempio di lavoro.

CSV di origine dati:

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

Il modello:

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

Il risultato sarà:

Generated report via iReport's preview


È possibile trovare molte informazioni nello JasperReports Ultimate Guide.

+0

Ho un po 'di logica, ma dove mettere una nuova variabile, sto mettendo in partenza, vale a dire dopo molti dichiarati, ma fornire l'errore che la variabile non è stata trovata: "totale" –

+0

@SagarNikam Hai provato il mio esempio? –

+0

sì, signore con il tuo campione funziona, ma passo a dati in tempo reale, lavorando con mysql query, dà errore "variabile non trovata", dichiaro variabile dopo sopra, potrei inviare file completo –

7

iReports campi personalizzati per le colonne (somma, media, ecc)

  1. fare clic destro su variabili e fare clic su Crea variabile

  2. Cliccare sulla nuova variabile

    a.Notare le proprietà a destra

  3. Rinominare la variabile di conseguenza

  4. modificare il valore Nome classe per il corretto tipo di dati

    a. È possibile cercare cliccando i 3 puntini

  5. Selezionare il tipo corretto di calcolo

  6. modificare l'espressione

    a. Fare clic sulla piccola icona

    b. Seleziona la colonna che stai cercando di eseguire il calcolo per

    c. Fare clic su Fine

  7. Imposta Valore Espressione iniziale di 0

  8. Impostare il tipo di incremento a nessuno

  9. Abbandona Incrementer fabbrica Nome classe vuota
  10. Impostare il tipo di ripristino (di solito segnalare)

  11. Trascinare un nuovo campo di testo sullo stage (in genere nell'ultima pagina o nel piè di pagina della colonna)

  12. Fare doppio clic sul nuovo campo di testo
  13. Cancella l'espressione “campo di testo”
  14. Selezionare la nuova variabile

  15. fare clic su Fine

  16. Mettere il nuovo testo in una posizione desiderabile 
Problemi correlati