RD3: Ottimizzazione Book
copia linkDescrizione
E' stato ottimizzato il motore di visualizzazione dei book se si utilizza il motore di rendering RD3: quando il report viene visualizzato in anteprima, ad ogni variazione e ristampa della pagina il motore RD3 è in grado di inviare le sole differenze presenti tra la pagina precedentemente mostrata e la nuova pagina da visualizzare.
Questa modalità differenziale funziona anche se il book viene completamente ristampato utilizzando il metodo RefreshPages. Il vantaggio ottenuto è notevole: videate che potevano richiedere anche un secondo per essere aggiornate ora richiedono solo poche decine di ms, con un incremento di prestazioni tra 5 e 50 volte rispetto alla versione precedente.
Funzionalità interessate
La visualizzazione in anteprima di un book in tecnologia C# e Java.
Note
Il sistema assegna automaticamente un identificativo univoco ad ogni oggetto presente nel book. In particolare l'identificativo delle sezioni, delle box di sezione e degli span contenuti in box di sezione, viene calcolato tenendo conto della posizione del recordset al momento della formattazione.
Tale identificativo potrebbe non essere efficiente in alcuni casi particolari, ad esempio supponiamo venga mostrato in anteprima un book contenente 100 record e per ognuno di questi venga mostrata una sezione ed una box. Il sistema assegna automaticamente ad ognuna delle sezioni e delle box un identificativo dipendente dal numero di riga in cui è stata formattata la sezione per cui, per esempio, la prima sezione avrà identificativo S1, la seconda S2 e così via
Ora se viene eliminato il primo record e viene ristampato il book, il sistema calcola le differenze tra la pagina prima della ristampa e dopo la ristampa. Per calcolare le differenze il sistema prende la prima sezione della nuova pagina (che ha identificativo S1) e la confronta con la sezione avente lo stesso identificativo presente nella vecchia pagina. Occorre ricordare, però, che ora la prima sezione della nuova pagina è legata a quello che era il secondo record della vecchia pagina dato che è stato eliminato un record. Quindi il sistema confronta la sezione S1 della nuova pagina con la sezione S2 della vecchia pagina e ci potrebbero essere molto differenze. Questo avviene poi per tutte le altre sezioni presenti, rendendo non ottimale l'aggiornamento.
In questa situazione, è opportuno aggiungere una colonna calcolata alla query del report il cui DB Code sia HASH e tramite questa ricavare un identificativo univoco (per esempio la chiave primaria della tabella usata nella query) che "permanga" anche se vengono eliminate righe dalla tabella. In questo modo, tornando all'esempio sopra, il sistema riuscirebbe ad eliminare la prima sezione senza modificarne nessun altra, in modo estremamente ottimizzato.
Ultima modifica: 06/06/2009 / Validità: da 8.1.3650