2011-10-13 8 views
6

Mi sto irritando con iReports. Il problema è che ho un set di dati che restituisce i dati per più clienti e voglio usare "Espressione di gruppo" contro l'ID cliente e fare in modo che il rapporto disponga le schede di dettaglio per cliente.iReports Raggruppamento bug - ricorrenze multiple?

Sto trovando che, apparentemente a caso, dove c'è più di una riga di dati per un cliente, iReports genererà due o più raggruppamenti (a volte fa quello che mi aspetto e raggruppa tutti i dati del cliente insieme), il campo IDing il cliente è lo stesso e non cambia.

Qualcuno ha visto questo prima? Ad essere onesti, non posso credere che in realtà sia un bug, ma qualcosa che ho perso. Tanto da cercare ancora per trovare un risultato adatto.

+0

Sono stati ordinati i dati per ID cliente (il campo in cui si raggruppa)? –

risposta

8

Penso che questo sia un problema di ordinamento dei dati.
La citazione da iReport Ultimate Guide:

JasperReports gruppi record valutando l'espressione di raggruppamento. A ogni ora il valore dell'espressione cambia, viene creata una nuova istanza di gruppo. Il motore non esegue alcun ordinamento di record (se non richiesto esplicitamente ), quindi quando definiamo i gruppi dovremmo sempre occuparci dell'ordinamento dei record . Cioè, se vogliamo raggruppare un insieme di indirizzi entro il paese , i record che selezioniamo per il rapporto dovrebbero già essere ordinati per paese entro il . È semplice ordinare i dati quando si utilizza una query SQL utilizzando la clausola ORDER BY. Quando ciò non è possibile (ovvero, quando ottiene i record da un documento XML), possiamo richiedere che JasperReports elimini i dati per noi. Questo può essere fatto utilizzando il tipo opzioni disponibili nella finestra di query


È possibile ordinare i dati in questi modi:

  • in caso utilizzando dei Database connessione JDBC di tipo origine dati è possibile aggiungere ORDER BY customerId clausola alla query del report, dove customerId - nome colonna del campo d con cliente id
  • in caso utilizzando dei file di connessione csv o qualcosa di simile è possibile organizzare l'ordinamento dei dati con l'aggiunta di SortField proprietà per il campo al modello della relazione (jrxml file):
<jasperReport ...> 
    ... 
    <field name="customerId" class="java.lang.String"/> 
    <sortField name="customerId"/> 
+0

Ciao Alex, Mille grazie per questo ... ha risolto il problema! – Mark

+0

@Mark welcome :) –

3
  1. SQL Statement ha ORDER BY?
  2. iReport group è raggruppato per customer_id?