Newsgroup: it.comp.lang.visual-basic
Titolo: Datareport in più copie

Ciao a tutti, provo ad esporre il mio problema con DataReport.
Sto cercando di fare una stampa con DR che in uno stesso foglio A4 mi
stampi due copie (ossia un originale ed una copia cliente p.e.) ma non
riesco a capire se posso impostare la lunghezza del report (non esiste
la proprietà Reportheight) oppure se è possibile non fare avanzare il
foglio dopo la prima stampa e quindi provare a stampare una seconda
copia nello stesso foglio a partire da dove è terminata la prima.
Qualcuno potrebbe aiutarmi?
Grazie
Roberto

Dopo dura riflessione, Roberto ha scritto :

Facciamo una premessa:
il datareport stampa dei RECORD, ossia delle righe di dati.
A questo punto esistono diverse possibilità, a seconda delle quali 
occorre agire in modo diverso:
1) ogni 'copia' è una lista, seppur breve, di dati. Cioè, in pratica tu 
vuoi una lista di dati in alto e una in basso nello stesso foglio A4
2) ogni copia è UN record, cioè tu stampi un dato in alto e uno in 
basso.
3) ogni copia è una lista lunga di dati, che tu vuoi che proseguano 
comunque duplicati pagina per pagina, se non ci stanno in un solo 
foglio A4.
Dammi questo dettaglio, e vediamo di proseguire.
Ciao
Alberto
-- 
L'economia sa tutto di te e tu non sai niente dell'economia. La tua 
banca sa tutto di te, di quanti soldi hai, e quando li spendi; ma tu 
non sai niente di cosa fa la banca dei tuoi soldi e dove li mette, e se 
ce li ha!


Grazie Albe,
direi che si tratta di una lista abbastanza breve, per cui la 1
(l'accendiamo).
nel caso si trattasse del punto 3 (lista breve ma che potrebbe sforare
la semipagina cambierebbe qulcosa?)
Ciao

Dopo dura riflessione, Roberto ha scritto :

Si, se sfora la pagina cambia completamente tutto il concetto.
Orbene...
Due soluzioni:
A)
Quello che ti serve è in sostanza che i tuoi record vengano divisi in 
due gruppi.
A questo punto, tu dimentica tutto il concetto di sezione di testata 
report, testata pagina, piè di pagina, piè di report.
Quello che ti servirà, e che userai come testata e piè di ciascun tuo 
'minireport' (ossia della metà dell'A4 che per te rappresenta una copia 
del report), saranno le sezioni di testata e piè di GRUPPO.
Sono sezioni non di default, da aggiungere col tasto destro a design 
time,
A questo punto devi far si che il tuo recordset non sia un recordset 
normale, bensì un recordset gerarchico, composto da DUE record di 
gruppo e due copie dei tuoi record, ciascuna copia legata 
gerarchicamente ad uno dei due gruppi (un banale Append All nella query 
ti risolverà tutto).
Poi colleghi la gerarchia 'gruppo' al gruppo, e la gerarchia dettaglio 
alla Section1 come si fa di solito.
Se cerchi su google qualcosa come "recordset gerarchico datareport" 
dovresti trovare anche il codice e gli esempi di query.
A questo punto, in pochi minuti avrai ottenuto i due report uno sopra e 
uno sotto.
Resta solo un problema. Il secondo report inizierà subito dopo la fine 
del primo. Se il primo è corto, il secondo report sarà più in alto 
della metà foglio. Viceversa se il primo è lungo.
Allora, l'ideale sarebbe ridimensionare il piè di report del primo 
report in modo da spostare in basso una label vuota e allungando 
verticalmente la Section stessa, in funzione di quante righe siano 
presenti nel primo gruppo. Con qualche prova, individuerai il fattore 
di ridimensionamento corretto.
B)
In alternativa, ma è meno facile da disegnare graficamente a design 
time, puoi realizzare il tuo datareport inserendoci a design time 
qualche centinaio di label, aventi nome indicizzato (Label01, Label02, 
ecc..., si fa tenendo premuto Ctrl+V dopo averne fatta una a mano), e 
poi posizionarle a run-time con un normale Do While Not EOF sul 
recordset, che a questo punto sarà un normalissimo recordset non 
gerarchico. Anche per questo potresti trovare parecchio su google, 
credo di averne scritto decine di volte.
Questo metodo ha anche il grosso vantaggio che consente di realizzare 
le caselline complete di bordi quando tu avessi delle descrizioni che 
vanno a capo, anche per le RptLabel che invece non andassero a capo ma 
che tu volessi affiancate (che è forse uno dei più grossi buchi del 
datareport).
Con tanto google, troverai tutto.
Il caso 2) sarebbe stato il più facile, potendo usare Section1 come 
intero report.
Il caso 3) è invece complicatissimo, ma risolvibile con pazienza sempre 
sfruttando la soluzione B descritta qui sopra.
Ciao
Alberto
-- 
Heinrich Zille: Ognuno crede che l'altro sia come se stesso, 
dimenticando che al mondo esistono anche delle persone oneste.

OK grazie mille,
ora leggo le tue osservazioni e ci studio un po' su.
Nel caso dovessi avere ancora dubbi o bisogno di consigli continuerò
il thread nel frattempo ti ringrazio.
ciao