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 Sub
Attenzione, 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 Sub
Infine, inserite la seguente dichiarazione, in un altro modulo:
   Global g_Pagine As Integer
Come 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", acViewPreview
Se 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.


Se pensate di avere del materiale freeware interessante e volete pubblicarlo, allora leggete qui.