Vorrei creare un campo di testo che contenga Page X of Y
, senza dividerlo in due parti, come da soluzione comune. Il mio campo di testo contiene "Page " + $V{currentPage} + " of " + $V{PAGE_NUMBER}"
con evaluationTime=auto
.
Diciamo che ho un rapporto con 10 pagine. Tre sono la banda del titolo , sei sono la banda del dettaglio e una è la banda sumria . I miei risultati mostrano "Page 0 of 10"
per la Banda del titolo , i conteggi corretti per la Banda di dettaglio , quindi "Page 0 of 10"
per la Banda di riepilogo s.
Come si fa a garantire che la variabile sia calcasting ovunque, non solo sulla banda di dettaglio ?
Per Jaspersoft Studio v6, o se il numero della prima pagina è duplicato, prova questa soluzione , che utilizza $V{MASTER_CURRENT_PAGE}
e $V{MASTER_TOTAL_PAGE}
con un tempo di valutazione di Master
.
Per le altre versioni di Jaspersoft Studio, provare i passaggi descritti nelle sottosezioni successive.
Crea una variabile come segue:
V_CURRENT_PAGE_NUMBER
1
$V{PAGE_NUMBER}
0
, utilizza $V{PAGE_NUMBER} + 1
. 1 of Y
, imposta Expression su $V{PAGE_NUMBER}
invece dell’espressione del valore iniziale e lascia l’espressione del valore iniziale vuota. Page
Queste impostazioni sono illustrate nella seguente figura:
Impostando l’ espressione su 1
impedisce che il suo valore sia null
. Cioè, se il piè di pagina mostra Pagina null di 4 probabilmente significa che l’ Espressione non è stata impostata.
La variabile è creata.
Aggiungi una banda di piè di pagina come segue:
Il piè di pagina è aggiunto.
Crea un campo di testo come segue:
msg("Page {0} of {1}", $V{V_CURRENT_PAGE_NUMBER}, $V{PAGE_NUMBER})
Auto
Queste impostazioni sono illustrate nella seguente figura:
Il campo di testo singolo viene creato.
Per un report con tre pagine più una pagina di riepilogo, l’anteprima del report mostra:
La pagina di riepilogo mostra:
Vedi il post sul blog di Robert Ensinger su questo argomento per maggiori dettagli.
L’approccio comune, come hai detto, utilizza due campi di testo separati:
Numero di pagina corrente
$V{PAGE_NUMBER}
con EvaluationTime: Now
Numero di pagina totale
$V{PAGE_NUMBER}
con EvaluationTime: Report
Ho provato questo approccio , ma ho trovato numeri di pagina errati: {1/7, 1/7 , 2/7, 3/7, 4/7, 5/7, 6/7}.
Per JasperReports 6+, utilizza le variabili di sistema MASTER_CURRENT_PAGE
e MASTER_TOTAL_PAGES
e ricorda di impostare il tempo di valutazione del campo di testo su Master
:
Vedi: http://jasperreports.sourceforge.net/sample.reference/book/index.html
Per quanto riguarda il numero di pagina corrente, evaluationTime=now
e $V{PAGE_NUMBER}
è la tua risposta.
Sfortunatamente non penso che tu possa ottenere quello che vuoi perché c’è un bug in PAGE_COUNT quando Split Allowed è attivo per la banda Detail. Altrimenti evaluationTime=now
e "Page " + $V{PAGE_NUMBER} + " of " + $V{PAGE_COUNT}"
probabilmente funzionerebbero.
Questo dovrebbe aiutare, usando Evaluation Time come Report
--update your elements here --update your elements here