Mostra “Pagina X di Y” usando un singolo campo di testo

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 ?

Jaspersoft Studio, 6+

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 .

Studio Jaspersoft

Per le altre versioni di Jaspersoft Studio, provare i passaggi descritti nelle sottosezioni successive.

Crea variabile

Crea una variabile come segue:

  1. Crea una variabile denominata V_CURRENT_PAGE_NUMBER
  2. Seleziona la variabile per aprirne le proprietà (vedi sotto)
  3. Imposta espressione su: 1
  4. Imposta l’ espressione del valore iniziale a: $V{PAGE_NUMBER}
    • Se il numero di pagina mostra 0 , utilizza $V{PAGE_NUMBER} + 1 .
    • Se il numero di pagina mostra sempre 1 of Y , imposta Expression su $V{PAGE_NUMBER} invece dell’espressione del valore iniziale e lascia l’espressione del valore iniziale vuota.
  5. Imposta il tipo di ripristino su: Page

Queste impostazioni sono illustrate nella seguente figura:

Variabile numero pagina corrente

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 piè di pagina

Aggiungi una banda di piè di pagina come segue:

  1. Seleziona il rapporto nel riquadro di struttura
  2. Controlla il sumrio con Intestazione e piè di pagina per assicurarsi che il piè di pagina della pagina appaia nella pagina di riepilogo.
  3. Aggiungi una banda di piè di pagina .

Il piè di pagina è aggiunto.

Crea campo di testo

Crea un campo di testo come segue:

  1. Trascina e rilascia un singolo campo di testo sulla banda del Footer di pagina .
  2. Seleziona il campo di testo.
  3. Imposta espressione su: msg("Page {0} of {1}", $V{V_CURRENT_PAGE_NUMBER}, $V{PAGE_NUMBER})
  4. Imposta il tempo di valutazione su: Auto

Queste impostazioni sono illustrate nella seguente figura:

Campo di testo singolo

Il campo di testo singolo viene creato.

Rapporto di anteprima

Per un report con tre pagine più una pagina di riepilogo, l’anteprima del report mostra:

Pagina 1

La pagina di riepilogo mostra:

Pagina 4

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