Visualizzazione dell'intestazione condizionata

mercoledì 04 gennaio 2006 - 17.40

Anonimo Profilo | Senior Member

Ciao
avrei bisogno di un consiglio per crystal report...dovrei fare un report in cui ho una parte di dettaglio, e due sottoreport in due report footer. Voglio visualizzare una certa intestazione(che è nell'header della pagina) solo quando i dati visualizzati nel report sono ancora quelli della parte di dettaglio. In poche parole quando vengono visualizzati i sottoreport l'intestazione deve scomparire.
Come posso ottenere questo risultato?
STRUTTURA DEL REPORT
Report header
Page header
Detail
Report footer1 (qui c'è il primo sottoreport)
Report footer2 (qui c'è il secondo sottoreport)
Grazie mille!!
ciaoo

freeteo Profilo | Guru

ciao,
per fare questo puoi lavorare in 2 modi :
- controllare che tu non sia arrivato all'ultimo record
- lavorare con le variabili "shared" negli oggetti formula, dove setti a true 1flag che fa da condizione

in entrambi i casi devi controllare la proprieta' "ometti" (Suppress se hai la vers inglese) della sezione che vuoi visualizzare...

Ad ogni modo, la 1a strada è la piu agile in questo caso (ma la 2a ti puo' tornare utile anche per altri casi piu particolari) e quindi dettagliatamente puoi mettere nella sezione che devi visualizzare, la proprieta' "Ometti" e dargli questa condizione (clicchi sul pulsante "X+2" vicino al flag) :

OnLastRecord

la quale ti è 1a costante che ovviamente è a true se sei sull'ultimo record (di dettagli).

Nel tuo caso puo andare bene perche il "reportfooter" appare quando sei alla fine del report (a differenza del pagefooter che campare alla fine di ogni pagina)

Ciao

Matteo Raumer
.net addicted :-)
http://blogs.dotnethell.it/freeteo

Anonimo Profilo | Senior Member

Ciao!
Grazie per avermi risposto, la cosa che non capisco è che la condizione per nascondere il blocco devo metterla nella sezione page header come faccoi a controllare l'ultimo record di dettagli che è un'altra sezione?
grazie ancora..


freeteo Profilo | Guru

ciao,
fai cosi':
- scegli l'elemento da visualizzare solo sull'ultima pag e fai tasto dx->formattazione->Ometti
- Non fleggare ometti ma premi il pulsante "X+2" (tasto "formula") difianco al check.
- Si apre 1a finestra che si chiama "editor di formule" e li dentro scrivi : "not OnLastRecord"

A questo punto salva tutto e controlla che sia visibile solo nell'ultima pagina, se devi nascondere ed abilitare piu di 1oggetto, ti consiglio di aggiungere 1a sezione al "pageheader" e mettere tutto li dentro cosi' setti la stessa proprieta' "ometti" che ti ho appena spiegato, non piu al singolo oggetto, ma all'insieme (ovvero la sezione che hai appena aggiunto)

capito cosa intendo? spero di essere stato chiaro...:-)
ciao

Matteo Raumer
.net addicted :-)
http://blogs.dotnethell.it/freeteo

Anonimo Profilo | Senior Member

ciao!
si sei stato chjiarissimo ho provato e funziona grazie!!
ti posso chiedere altre due cose?
- si possono fare più query in un report o bisogna sempre ricorrere allo stratagemma dei sottoreport? per query separate intendo query che vanno su tabelle diverse scollegate tra loro...
- dal menu database è possibile vedere la query sql, la si puo modificare in qualche modo? come?
in generale secondo te è preferibile partire da un universo BO per fare i report o partire dalle tabelle di databases?
grazie ancora!!!!!

ciao

Anonimo Profilo | Senior Member

Scusa Matteo devo chiederti un'altra cosa rispetto al problema di prima, utilizzando la funzione OnLastReport ho un piccolo baco nel senso che se proprio l'ultimo record di dettaglio mi va su una nuova pagina l'intestazione che voglio io non è piu visualizzata ...
come posso fare?? grazie!!!!

freeteo Profilo | Guru

ciao,
per il problema del "OnLastReport" sull'ultima pagina puoi abbinare il controllo anche al fatto che tu sia o meno sull'ultima con "PageNumber = TotalPageCount".

Per la domanda se conviene partire dall'universo BO io ti ocnfesso che l'universo BO non lo conosco bene,ma che se lavori con 1oggetto standard come le tabella di ado.net è sicuramente piu conveniente soprattutto per le tipologie di campo che sicuramente sono compatibili anche se arrivano da fonti diverse, qindi diciamo sei piu "scalabile".

Per quanto riguarda le tabelle scollegate,purtroppo non sono supportate ufficilamente (e se non erro dovrebbe segnalartelo quando le aggiungi senza fare nessun link) ma cmq lo puoi fare, e i nrealta' funziona solo che potrebbero capitarti dei comportamenti anomali (valori duplicati errati e cose di questo genere...).Ad ogni modo io cmq ti consiglio di usare sempre sottoreport ma ancora meglio se puoi lavorare con Join fra tabelle direttamente da query e poi raggruppare, che è piu veloce ;-)

Spero di averti aiutato, ciao

Matteo Raumer
.net addicted :-)
http://blogs.dotnethell.it/freeteo

Anonimo Profilo | Senior Member

Ciao!
Grazie mille per l'aiuto, avrei ancora qualche problemino da chiederti...

per la questione del controllo OnLastRecord purtroppo non posso utilizzare anche la condizione sul controllo dell'ultima pagina del report, perche a me servirebbe l'ultima pagina in cui viene "stampata" la sezione dettagli...non l'ultima pagina in generale del report...si può fare? Il risultato che voglio ottenere è che finchè viene "stampata" la sezione dettagli devo visualizzare una sezione page header e dalla pagina dopo in poi un'altra sezione page header.

Inoltre, io dovrei visualizzare una sezione che contiene un sottoreport a seconda che la query che genera il sottoreport restituisca delle righe o meno. Nel caso non restituisse righe non dovrei proprio vedere la sezione che contiene tale sottoreport. come posso fare? Perchè nella formula per nascondere la sezione mi fa inserire solo condizioni contenenti campi del report principale...

Infine.. è possibile creare delle variabili globali che possono essere utilizzate sia nel report principale che nei sottoreport, e che magari queste variabili possano contenere query verso il db?

Grazie mille ancora per l'aiuto!!!

Ciao

freeteo Profilo | Guru

>per la questione del controllo OnLastRecord purtroppo non posso
>utilizzare anche la condizione sul controllo dell'ultima pagina
>del report, perche a me servirebbe l'ultima pagina in cui viene
>"stampata" la sezione dettagli...

OnLastRecord è proprio l'ultima pag in cui ci sono i record quindi i "dettagli"

>che finchè viene "stampata" la sezione dettagli devo visualizzare
>una sezione page header e dalla pagina dopo in poi un'altra

devi lavorare con qualche variabile condivisa del report ma non ho capito bene come vorresti fare se puoi allegare 1report d'esempio vedo se riesco a correggertelo e ridartelo... (se puoi metti anche 1db temporaneo nello zip)

>Inoltre, io dovrei visualizzare una sezione che contiene un sottoreport
>a seconda che la query che genera il sottoreport restituisca
>delle righe o meno....

Il flag si chiama "ometti sezioni vuote" (da mettere nel report e anche nel sottoreport) solo che proprio vuota non è perche c'e' dentro il sottoreport allora a design time fallo piccolo in altezza in modo che non si veda anche se c'e' senza dati ;-)

>Infine.. è possibile creare delle variabili globali che possono
>essere utilizzate sia nel report principale che nei sottoreport,

Si si chiamano "shared" e le utilizzi nei campi formula con:
"shared numbervar miavar := ..." e poi la recuperi con " shared numbervar miavar; "

>e che magari queste variabili possano contenere query verso
eh no non si puo' cambiare la struttura del report che hai costruito a design time, devi lavorare con filtri sui dati al massimo (recordselectionformula) ma i campi visualizzati restano quelli con cui l'hai costruito...

ciao

Matteo Raumer
.net addicted :-)
http://blogs.dotnethell.it/freeteo
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5