Newsgroup: it.comp.lang.delphi
Titolo: Problema quickreport moduli multipli.

Ciao a tutti,
devo creare con quickreport una stampa composta da quattro pagine a4,
quindi devo stampare in sequenza: 
-record1pagina1
-record1pagina2
-record1pagina3
-record1pagina4
-record2pagina1
-record2pagina2
-record2pagina3
e così via.
 
Non riesco a ottenere questa cosa. Se provo col componente QrCompositeReport e 4 qrReport distinti (uno per pagina)mi stampa tutti le pagine 1 poi tutte le pagine 2 ecc.
 
Se provo con un Quickreport contenente una detailband e una childband riesco a ottenere 
-record1pagina1
-record1pagina2
-record2pagina1
-record2pagina2
 
però se aggiungo altre childband per le due pagine rimanenti queste vengono ignorate...
 
Come devo fare? 
Grazie a tutti anticipatamente.
 
-- 
mnoga

 e così via.
 
ciao. 
 
Non mi e' chiaro cosa stai cercando di ottenere: hai un daataset
con N record e devi fare 4 pagine, la prima con una parte dei campi
di tutti gli N record, poi una secondo con un'altra parte dei
campi degli stessi record, eccetera?
 
 
Che tipo di dataset stai usando: una table, una query, un clientdataset?
Se stai usando una query, puoi intervenire modificando il testo SQL ?
 
ciao
Giacomo


no, mi spiego meglio.
Ho un clientdataset riempito con 10 record.
Per ogni uno di quei record devo stampare 4 pagine diverse, cioè dei report diversi.
Se uso qrcompositereport e aggiungo i 4 report, lui mi stampa la prima pagina del record 1, la prima del record 2 ecc e poi la seconda pagina del record 1, la seconda del record 2 e così via, e non è quello che serve a me.
 
Il totale delle pagine deve essere Numrecord * 4(pagine) però l'ordinamento deve essere prima tutte le pagine del record 1, poi tutte quelle del record 2 ecc, e non riesco ad ottenderlo.
 
Sono riuscito ad ottenere circa quello che volevo creando un singolo report, mettendo una detail band, e a quella detail ho checkato haschild a true. Alla childband che appare ho messo a sua volta haschild a true e così via fino ad avere 4 band. A runtime ho messo l'altezza di ogni band pari ad un a4 e cosi ognuna mi occupa una pagina.
Così facendo però ho un bug e una scomodità: il bug è che per la prima pagina mi stampa solo la detail band, e dal secondo record in poi invece è tutto corretto. La scomodità è che per ora ho messo solo due label di test, poi quando riempirò le pagine(abbastanza complesse) dovrò ogni volta a design rimpicciolire la dimensione delle band che non mi interessano ed aumentare quella che mi serve, rendendo laboriosa la modifica.
 
-- 
mnoga

 del record 2 e così via, e non è quello che serve a me.
 
Scusa, non ho capito quello che devi fare .....
Comunque provo a darti una soluzione su quello che hai scritto tu.
Con QR devi costruirti 4 report differenti, ognuno dei quali ha le 
caratteristiche che hai bisogno.
Qiesti report li chiami, per esempio QR1, QR2, QR3, QR4 dove hai le 
procedure
LanciaQR1, LanciaQR2, LanciaQR3, LaciaQR4.
Poi nel pulsantino della tua form, dove hai provveduto a mettere un bella 
stampantina, lanci la tua procedura tipo
 
Procedure PrintAll;
begin
    TuoDataSet.first
    While Not TuoDataSet.Eof Do
    Begin
         // Qui scorri tutto il tuo data set dal primo all'ultimo record.
         // Qui chiami il tuo primo report dove tratti i dati
         LanciaQr1; // Report1 sul primo record del to dataset
         LanciaQr2; // Report2 sul primo Record del tuo dataset;
         LanciaQr3;
        LanciaQr4;
        TuoDataSet.Next // Passa al record successivo e ripeti le stampe
    End;
end;
 
Nella procedura sopra descritta hai le 4 pagine (diverse) per ogni record, 
ma poi le devi  sistemare per ovvi motivi.
Spero possa esserti utile.
 
Ciao
 
Daniele
 
PS: Per completezza .... ecco un esempio ...
     La Unit dove crei il report la chiami Form_Report1.
     La form la chiami FQR1 e qu dentro metti il TQuickRep e tutti i suoi 
componenti di stampa.
     Hai la famosa LanciaQr1 che sara' piu' o meno cosi'
 
Procdure LanciaQr1;
Begin
    FQR1:=TFQR1.Create(Nil);
    try
       FQR1.QuickRep1.Preview;
    Finally
       Freeandnil(FQR1)
    End;
End;
 
Nell'evento OnCreate sistemi tutti i dati che hai nel record, attuale, del 
tuo dataset.
Questo per 4 (sempre se e' quello che cercavi).
Esiste anche l'altro caso dove, per esempio, vuoi i 4 report separati.
In questo caso devi fare 4 cicli ovvero
 
    TuoDataSet.first
    While Not TuoDataSet.Eof Do
    Begin
         LanciaQr1; // Report1, tutto il dataset
        TuoDataSet.Next // Passa al record successivo e ripeti le stampe
    End;
    TuoDataSet.first
    While Not TuoDataSet.Eof Do
    Begin
         LanciaQr2; // Report2, tutto il dataset
        TuoDataSet.Next // Passa al record successivo e ripeti le stampe
    End;
    TuoDataSet.first
    While Not TuoDataSet.Eof Do
    Begin
         LanciaQr3; // Report3, tutto il dataset
        TuoDataSet.Next // Passa al record successivo e ripeti le stampe
    End;
    TuoDataSet.first
    While Not TuoDataSet.Eof Do
    Begin
         LanciaQr4; // Report4, tutto il dataset
        TuoDataSet.Next // Passa al record successivo e ripeti le stampe
    End;
 
 

 Così facendo però ho un bug e una scomodità: il bug è che per la prima pagina mi stampa solo la detail band, e dal secondo record in poi invece è tutto corretto. La scomodità è che per ora ho messo solo due label di test, poi quando riempirò le pagine(abbastanza complesse) dovrò ogni volta a design rimpicciolire la dimensione delle band che non mi interessano ed aumentare quella che mi serve, rendendo laboriosa la modifica.
 
Questo approccio mi sembra quello corretto. Se non ricordo male sulle
childband c'e' una proprieta' "ForceNewPage" che le manda "a capo"
indipendentemente dalle dimensioni. Prova a mettere quello e a usare
delle bande di altezza piu' piccola di A4 per una prima prova. 
 
ciao
Giacomo
 
 
 


Si questa è la soluzione "disperata" che mi ero tenuto in canna anche io, il problema però è questo: se io stampo su pdf, o faccio una preview di tutto, mi vengono tutti file di una pagina,diviso, o altrimenti continuano ad apparirmi preview di ogni pagina.

no questo non mi serve, ad ogni modo non serve scorrere i record, assegnando al report il clientdataset si arrangia da solo a scorrerlo tutto
 
-- 
mnoga


si il forcenew page c'è su tutte, per eliminare il bug ho dovuto mettere nelle child il KeepOnOnePage a False, ma per il primo record tenerlo a true, e così mi funziona
Non so se devo segnalarlo o se sbaglio qualcosa io prima...
 
-- 
mnoga

 tutto
E' quel "si arrangia da solo" che mi e' sempre piaciuto poco ....
 
Fammi sapere come hai risolto ..
 
Ciao
 
Daniele
 
 
-- 
mnoga