by lucabaldini » 7 May 2015, 15:46
Io uso raramente i sub-report perché la loro query viene eseguita ogni volta per ogni "istanza" in cui sono contenuti... ci sono molti modi di creare un report e io, se riesco, provo a incorporare i dati in una unica query e poi, tramite raggruppamenti, mostro i dati raggruppati.
In altre parole invece di avere un report e mettere un sub-report nel detail, creo un report unico con un gruppo dove raggruppo i dati per lo stesso campo che cambia ad ogni detail (es: primary key).
Comunque, un sub-report spezzabile è un sub-report che si può spezzare su più pagine... già l'idea in sè del sub-report spezzabile è una forzatura del sistema. Mi spiego meglio.
Il sistema, come sai, formatta una sezione di detail alla volta... solo se la sezione può essere incollata sulla pagina il sistema la incorpora e passa alla prossima istanza. Questo non è vero per i sub-report (come puoi vedere anche dal debug). Il sistema, quando deve, formatta l'intero sub-report come se la pagina fosse infinita. Poi adatta la sezione in cui è contenuto il sub-report e vede se ci sta sulla pagina. Se non ci sta e non si può spezzare la stampa si ferma. Se ci sta e si può spezzare il sistema spezza la sezione ed incorpora, nella sezione, la porzione di sub-report (già formattato) che ci sta. Poi, quando passa alla prossima pagina, recupera dalla cache in memoria la parte rimanente di sezione e prova ad incollarla sulla pagina, ripetendo l'algoritmo indicato sopra fino a quando la sezione è completamente stampata. A questo punto il sistema passa alla pagina successiva.
Mentre incorpora i vari pezzi del sub-report, se sono nel caso di sezione di gruppo e il flag "stampa al cambio pagina" è attivo ne fa una copia al volo e la incolla nella pagina... Non la ri-formatta ma la clona semplicemente... a differenza di quanto viene fatto per il "ciclo principale" del report.