Reports |
4.2 Stampare fronte-retro. |
Federico Luciani |
(D) Come faccio a stampare di un report prima le pagine dispari e poi le pagine pari per ottenere una stampa fronte-retro? (R) La soluzione che ho trovato è molto semplice e sfrutta la possibilità di annullare la stampa di una determinata sezione del report, inoltre con un semplice calcolo (Me.Page Mod 2) è possibile determinare se la pagina che sta per essere stampata è pari o dispari. Ma veniamo al codice, copiate la seguente routine nel modulo del report: Private Sub Corpo_Print(Cancel As Integer, PrintCount As Integer) If (g_Pagine = 2 And Me.Page Mod 2 = 1) Or _ (g_Pagine = 1 And Me.Page Mod 2 = 0) Then _ Cancel = True End SubAttenzione, se nel report sono presenti altre sezioni (Ad es. Intestazione di pagina), anche per queste deve essere gestito l'evento 'Su stampa': Private Sub IntestazionePagina_Print(Cancel As Integer, PrintCount As Integer) If (g_Pagine = 2 And Me.Page Mod 2 = 1) Or _ (g_Pagine = 1 And Me.Page Mod 2 = 0) Then _ Cancel = True End SubInfine, inserite la seguente dichiarazione, in un altro modulo: Global g_Pagine As IntegerCome vedete a seconda del valore della variabile globale g_Pagine vengono stampate solo le pagine pari o dispari. A questo punto non vi resta che assegnare il valore 1 o 2 (dispari o pari) alla variabile g_Pagine prima di mandare in stampa il report. Ad esempio, per stampare solo le pagine pari: g_Pagine = 2 DoCmd.OpenReport "nomeReport", acViewPreviewSe impostate la variabile ad un qualunque valore diverso da 1 e 2 il report verrà stampato normalmente. N.B. Purtroppo questo soluzione per la stampa in fronte-retro funziona bene solo con alcune stampanti, con le altre vengono stampate pagine bianche. |