Paginazione saltata per sottoreport?

mercoledì 01 ottobre 2008 - 11.35

nihira Profilo | Newbie

Ciao a tutti.

Durante la costruzione di un report, mi sono trovato nella condizione di dover inserire un'altra sezione dettagli che doveva avere un'intestazione pagina e piè di pagina indipendenti dalla struttura già esistente.
Naturalmente sono dovuto ricorrere ad un sottoreport e apparentemente avevo risolto il problema.
Adesso però, generando documenti che sviluppano più pagine mi sono accorto che da quando ho messo il sottoreport, mi è saltata la paginazione (il campo speciale "numero pagina" è posizionato nell'intestazione pagina del report principale) che restituisce sempre pagina=1.

Stesso discorso per una barra colorata posizionata nel piè di pagina con la scritta "SEGUE" che veniva stampata per tutte le pagine del singolo documento esclusa l'ultima. La sintassi usata per questo box di testo colorato è la seguente:

IF VAL(MID(PageNofM,8,1)) < VAL(RIGHT(PageNofM,1)) THEN "SEGUE " ELSE ""

Apparentemente non ci sarebbero motivi per cui non dovrebbe funzionare, ma sempre da quando ho inserito il sottoreport, il box non mi viene più stampato in nessun caso. Qualcuno sarebbe così bravo da capire dove sia il problema? Grazie in anticipo

ale.orma Profilo | Junior Member

>Durante la costruzione di un report, mi sono trovato nella condizione
>di dover inserire un'altra sezione dettagli che doveva avere
>un'intestazione pagina e piè di pagina indipendenti dalla struttura
>già esistente.
>Adesso però, generando documenti che sviluppano più pagine mi
>sono accorto che da quando ho messo il sottoreport, mi è saltata
>la paginazione (il campo speciale "numero pagina" è posizionato
>nell'intestazione pagina del report principale) che restituisce
>sempre pagina=1.
Questo è molto strano.... l'unica cosa che mi viene in mente è che per errore sia stata selezionata la casella "Ricomincia numerazione dopo", all'interno dell'esperto sezione del report principale (in questo caso i dettagli) . In questo modo ogni volta che vengono stampati i dettagli la variabile che indica il numero di pagina assume valore 1.

>Stesso discorso per una barra colorata posizionata nel piè di pagina con la scritta "SEGUE" che veniva stampata >per tutte le pagine del singolo documento esclusa l'ultima. La sintassi usata per questo box di testo colorato è la >seguente:
>IF VAL(MID(PageNofM,8,1)) < VAL(RIGHT(PageNofM,1)) THEN "SEGUE " ELSE ""
Prova con questa sintassi:
if PageNumber<TotalPageCount then "SEGUE" else ""

DomA Profilo | Expert

Ciao Alessandro,
Vorrei farti una semplice domanda. Il sottoreport in questione in quale sezione del report si trova?
Io ti suggerisco di provare a metterlo nella sez. Piè di pagina report.
Prova e fammi sapere se funziona.


Domenico

nihira Profilo | Newbie

>Prova con questa sintassi:
>if PageNumber<TotalPageCount then "SEGUE" else ""

Provato... a funzionare funziona, però mi sorge questo dubbio:
Il TotalPageCount (che non avevo proprio visto) dovrebbe fare un conteggio totale sulle pagine che sviluppa il report.
Siccome il report sul quale sto lavorando deve prevedere non uno soltanto, ma una serie di documenti, così facendo mi dovrebbe stampare la barra segue su ogni pagina ultima esclusa, cioè vale a dire anche sull'ultima pagina di un fine documento all'interno delle pagine totali generate.
Invece il PageNofM, ricominciando la numerazione ogni volta, seppur più cervellotico nel modo in cui ho scritto la formula, quantomeno offrirebbe meno possibilità di sbagliarsi.
Non so se ho reso il concetto... dimmi se sei d'accordo o no... in ogni caso ti ringrazio molto ugualmente per aver proposto una strada alternativa.

Riguardo alla paginazione rimasta fissa, il sottoreport è posizionato nel "piè di pagina gruppo principale".
Mi avete comunque acceso la lampadina perché andando a smanettare nell'esperto sezione di questo gruppo, tutto magicamente si è sbloccato.
Evidentemente questa cosa io la facevo nel pié di pagina report dove è posizionata invece la barra colorata.
Insomma un bel casino, ma almeno per questa volta sembra tornato tutto a posto.

Grazie mille per l'aiuto... il problema è che qui in azienda di persone che sappiano usare crystal non c'è nessuno a parte me, il che è tutto dire... (io da pochi mesi non sapevo manco cosa fosse e comunque non se ne fa un utilizzo massiccio tale da acquisire esperienza) ed ogni volta che c'è un problema è un dramma perché non si sa a chi chiedere... meno male che ci siete voi... ^___^

DomA Profilo | Expert

non ho capito bene cosa ti serve. Comunque con la formula seguente nel mio report fattura faccio visualizzare il Totale Documento solo all'ultima pagina.

IF PageNumber < TotalPageCount then 0 else Sum ({Articoli.Imponibile}) + Sum ({Articoli.Imposta})

Tu prova ad adattarla alle tue esigenze.
Se funziona ricordati di accettare la risposta così diamo anche agli altri la soluzione.
Domenico

ale.orma Profilo | Junior Member

>Il TotalPageCount (che non avevo proprio visto) dovrebbe fare
>un conteggio totale sulle pagine che sviluppa il report.
Questo solo se la numerazione non viene resettata dopo aver stampato qualche sezione prima della "Piè di pagina report", esattamente come fa PageNofM che sarebbe poi l'unione tra PageNumber e TotalPageCount.

>Riguardo alla paginazione rimasta fissa, il sottoreport è posizionato
>nel "piè di pagina gruppo principale".
Se ho capito bene ogni tuo "documento" è costituito da questo "gruppo principale", e presumo che nella sezione "Piè di pagina gruppo" tu abbia selezionato "nuova pagina dopo", in modo che il documento (gruppo) successivo inizi in una nuova pagina.
Se nell'esperto sezione del piè di pagina gruppo principale spunti la casella ricomincia numerazione dopo i tuoi documenti vengono numerati partendo da uno dopo la fine di ogni gruppo.
Ad esempio metti che il report sviluppa 2 gruppi principali di cui il primo di 5 pagine e il secondo di 3; ricominciando la numerazione dopo il piè di pagina gruppo, quando stampi il report vengono stampati 8 fogli: nei primi 5 troverai stampato pagina 1di 5, pagina 2 di 5 ecc... mentre negli ultimi 3 avrai pagina 1 di 3, pagina 2 di 3 e pagina 3 di 3, quindi alla fine di ogni gruppo il valore di PageNumber viene riportato a 1 e TotalPageCount conterrà il numero delle pagine occupate dal gruppo.

Adesso ho solo un dubbio sul box che deve mostrare la scritta "SEGUE":
a) la vuoi mostrare su tutti i documenti tranne l'ultima pagina dell'ultimo documento? (allora non devi resettare la numerazione per effettuare il test nella formula)
b) la vuoi mostrare su tutte le pagine di ciascun documento (gruppo) tranne che sull'ultima (dove ho il pie di pagina gruppo e il sottoreport) e in tal caso puoi resettare la numerazione come ti ho detto e usare la sintassi if PageNumber<TotalPageCount ecc...ecc...

Spero che la spiegazione sia stata abbastanza comprensibile!!!
Se hai dubbi chiedi pure, altrimenti accetta la risposta che chiudiamo il thread, ciao!

nihira Profilo | Newbie

>Se ho capito bene ogni tuo "documento" è costituito da questo
>"gruppo principale", e presumo che nella sezione "Piè di pagina
>gruppo" tu abbia selezionato "nuova pagina dopo", in modo che
>il documento (gruppo) successivo inizi in una nuova pagina.
>Se nell'esperto sezione del piè di pagina gruppo principale spunti
>la casella ricomincia numerazione dopo i tuoi documenti vengono
>numerati partendo da uno dopo la fine di ogni gruppo.
>Ad esempio metti che il report sviluppa 2 gruppi principali di
>cui il primo di 5 pagine e il secondo di 3; ricominciando la
>numerazione dopo il piè di pagina gruppo, quando stampi il report
>vengono stampati 8 fogli: nei primi 5 troverai stampato pagina
>1di 5, pagina 2 di 5 ecc... mentre negli ultimi 3 avrai pagina
>1 di 3, pagina 2 di 3 e pagina 3 di 3, quindi alla fine di ogni
>gruppo il valore di PageNumber viene riportato a 1 e TotalPageCount
>conterrà il numero delle pagine occupate dal gruppo.

E' esattamente così! Allora ho erroneamente pensato che il TotalPageCount si riferisse alle pagine dell'intero report piuttosto che all'ultima pagina del singolo documento prima del reset paginazione.
Come avevo già detto la formula così suggeritami è decisamente più snella e comprensibile.
Grazie ad entrambi!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5