Dividere la sezione dettaglio in + colonne

giovedì 12 marzo 2009 - 17.27

trinity Profilo | Guru

Salve ragazzi,
in pratica ho un file report in crystal report.net dove al suo interno ho inserito un campo di un db nella sezione dettaglio.
Io vorrei che alla fine della pagina, prima di crearne un'altra il report portasse i dati del campo su un'altra colonna accanto alla prima.
Di seguito cerco di fare un esempio visivo:

Nominativo
----------------------------------------------
1 Rossi Mario 6 Rossi Mario
2 Rossi Mario 7 Rossi Mario
3 Rossi Mario 8 Rossi Mario
4 Rossi Mario 9 Rossi Mario
5 Rossi Mario 10 Rossi Mario

calcolate che il campo è uno solo....ciaoooooo

Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

ysdemarc Profilo | Expert

sinceramente non ho capito bene...

se ti interessa elencare un dettaglio su più colonne devi fare così:

clicca col destro sulla sezione "Dettagli" e scegli "Formato sezione..."

metti il segno di spunta su "Formato colonne multiple"

vedrai (in alto) che crea un'altra scheda "Layout".. vai li e setta la larghezza delle colonne, la distanza tra loro e la direzione di stampa

"per colonne" stampa in verticale i dettagli nella prima colonna as es:
1 AAA 4 DDD
2 BBB 5 EEEE
3 CCC

"per riga" stampa i dettagli sulle colonne procedendo in senso orizzontale ad es:
1 AAA 2 BBB
3 CCC 4 DDD
5 EEE

Selezionando anche "Formato gruppi con più colonne" anche i gruppi funzioneranno come nel dettaglio e verranno incolonnati.
Vincenzo
Programmatore sbilenco

trinity Profilo | Guru

Grazie mi serviva proprio questo consiglio...
ciao a buon rendere
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

freeteo Profilo | Guru

>Grazie mi serviva proprio questo consiglio...
>ciao a buon rendere
Ciao Trinity, accetta la risposta di ysdemarc così chiudiamo il thread.Grazie.

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

Duka Profilo | Newbie

Ciao,
ho provato anche io la tua soluzione su Crystal 11, ma ho un problema con l'ampiezza verticale del dettaglio se utilizzo l'opzione layout "Per colonne".
es. per colonne
colonna1 colonna2
aaaaaaa
bbbbbbb
ccccccc
n........

es. per righe
colonna1 colonna2
aaaaaaa bbbbbbb
ccccccc n........

In pratica non riesco a tenere ferma la dimesione in altezza del dettaglio, che con l'opzione per colonne si prende tutta la pagina, invece di ripartirsi tra le due colonne (cosa che fa con l'opzione per righe).
Avete qualche indicazione su come si definisce l'ampiezza verticale del dettaglio ?
Tenete presente che i dati sono reperiti da un file xml, e che nella label Layout il parametro Altezza compare in grigio chiaro, non impostabile.
grazie

ysdemarc Profilo | Expert

Ciao.. non credo che si possa fare in modo così semplice quello che vuoi tu.

Il comportamento della ripartizione su colonne mi sembra più che giusto che non li riparta uniformemente, ma prima facci ala prima colonna, poi la seconda è così via.. è così che funzionano le paginazioni.

se le vuoi ripartire uniformemente potresti rielaborarti i dati che passi, non facendo ordinare a crystal report, m passandoli già tu come li vuoi i dati, sapendo a priori quante righe hai, quante c'è ne vanno ogni colonna, e aggiungere dei record vuoti fino a fine colonna...

o provi a giocare coi sotto report

oppure ti fai delle sezioni Dettagli invisibili vuote che renderai visibili a seconda ti quante righe stamperai nel tuo report.. ..

comunque sono soluzioni un pò strambe.. io opterei o per la prima o per l'ultima

ciao
Vincenzo
Programmatore sbilenco

Duka Profilo | Newbie

Ciao Ysdemarc,
".. è così che funzionano le paginazioni."
mi hai fatto balenare un'idea... che domani provo.

Inizialmente pensavo che si potesse fissare col parametro "altezza" del layout l'ampiezza verticale delle colonne... (ma poi allora che serve ???)

l'uso che cercavo era un po' come la formattazione per colonne in word.

l'idea, non so quanto sbilenca, è invece quella di impostare i limiti della pagina...
cioè deduco che se i dettagli, per colonne, devono mangiarsi tutta la pagina prima di passare alla colonna successiva...
allora io gli accorcio la pagina e sposto il resto del report sui piè di pagina.
che dici ? può essere un'alternativa valida ?
domani test !!! ciao e grazie

freeteo Profilo | Guru

>cioè deduco che se i dettagli, per colonne, devono mangiarsi
>tutta la pagina prima di passare alla colonna successiva...
>allora io gli accorcio la pagina e sposto il resto del report
>sui piè di pagina.
intendi che il render dei dettagli è verticale e poi passa sulla seconda colonna? E' possibile impostare che prima vada in orizzontale e poi scenda di riga impostare "across then down" invece di "down then across" nella tab layout di colonna dei dettagli.
Non so se questo può aiutarti.

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

ysdemarc Profilo | Expert

>Inizialmente pensavo che si potesse fissare col parametro "altezza" del layout l'ampiezza verticale delle colonne... (ma poi allora che serve ???)

infatti del layout sia che metti per riga che per colonna puoi modificare la larghezza e non l'altezza..alla fine l'altezza di una colonna non è altro che la somma delle altezze del tuo dettaglio e/o gruppo


>l'idea, non so quanto sbilenca, è invece quella di impostare i limiti della pagina...
>cioè deduco che se i dettagli, per colonne, devono mangiarsi tutta la pagina prima di passare alla colonna successiva...
>allora io gli accorcio la pagina e sposto il resto del report sui piè di pagina.

non capisco cosa intendi per "sposto il resto su piè di pagina"..

io non so che tipo di licenze hai di crystal..comunque con le cose scarse che ho io e le mie conoscenze farei così..

ad esempio so che la pagina può contenere un massimo di 3 colonne ed un massimo di 20 righe ed ogni riga di altezza 150 quindi un totale di altezza colonna di (150 * 20) 3000.

ora se non uso gruppi a colonna (la cosa si complicherebbe) farei un footer group invisibile , che mi servirà in modo molto brutto per impostare la Width

quindi supponendo che io abbia 50 righe da stampare in 3 colonne mi basterebbe fare 50/3 cioè 16,6.. prendendo l'intero successivo 17

quindi la Width del mio group footer da impostare sarà ((20 - 17) * 150) e quindi 450.. e lo rendo visibile

nel risultato finale dovresti trovarti quindi 17 colonne nella prima, 17 nella seconda e 16 righe nella terza.. quindi come aver impostato la stampa per righe ma in colonna come stampa per colonne...

oppure una variante (ma solo cose da pazzi) al posto di impostare la Width di un footer group dovresti crearti tanti dettagli vuoti invisibili quante le righe che può contenere.. e in fase di stampa rendere visibili il numero di dettagli desiderate per completare la colonna..

quindi giunto a 17 record, rendi visibili 3 dettagli, a 34 altri 3

tutto comunque da provare..

Mi viene in mente un'altra idea se può esserti utile.
Potresti impostare la stampa per righe ma lavorare sull'ordinamento delle righe che mandi.
Quindi supponendo che tu mandi in pasto a Crystal un DataTable di nome dt potresti creartene un'altro di nome dtXPrint dove andrai a mettere situati i record.





Vincenzo
Programmatore sbilenco

Duka Profilo | Newbie

Ciao, per cominciare preciso che uso la versione XI o 11, di Crystal.

Io ho risolto il problema dell'ampiezza verticale della sezione Dettagli (con flag su "Formato colonne multiple" e in label "Layout" flag "Per colonne") aumentando il valore verticale del Piè di pagina.
Ho praticamente lavorato proprio sulla PAGINAZIONE per vincolare l'ampiezza verticale dei dettagli.

Avevo strutturato report_1 (formato A4 h=29cm righello verticale) con:
- Sezione Intestazione pagina h=10cm
- Sezione dettagli h=1cm
- Sezione "Piè di pagina report" h=8cm contenente un ulteriore sottoreport con un'altra sezione Dettagli
- Sezione Piè di pagina report h=2cm.
Impostando la sezione Dettagli di report_1(con flag su "Formato colonne multiple" e in label "Layout" flag "Per colonne"), succedeva che prima di passare ad utilizzare la seconda colonna i dettagli di report_1 dovevano arrivare a un'altezza pari a 29-10-2 = 18cm, spostando sulla pagina succesiva la sezione Piè di pagina report con i dati del sottoreport.
Praticamente il foglio 1 era bianco per metà, sul lato destro.

Per utilizzare tutto il foglio, con i dettagli che riempissero la seconda colonna, ho trasferito il sottoreport sulla sezione Piè di pagina, aumentandola da h=2 a h=10cm. Soppresso la sezione Piè di pagina report h=8.
Così facendo ai dettagli è rimasta un'ampiezza verticale pari a 29-10-10=9cm, che ha costretto le righe dettaglio di report_1 a utilizzare ambo le colonne del foglio.

Non potevo utilizzare l'opzione "Per righe" del Layout, perchè la lettura dei dati forzatamente doveva essere incollonata, per risultare comprensibile.

Ciao e grazie a tutti degli spunti , sperando di essere stato abbastanza chiaro....
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