Newsgroup: it.comp.appl.access
Titolo: ATTN: ROBERTO DA CASA

Scusa se uso un nuovo messaggio.
Il vecchio messaggio aveva come oggetto:
Stampare un numero N costante per pagina.
Questo è quello che ho trovato io e che non ha un esempio .mdb
Davide La Mantia (Sib)
Un sistema per realizzare un report con un numero costante di righe per
pagina indipendentemente dal numero di record da stampare è usare un codice
come questo:
Option Compare Database
Option Explicit
Dim RigheStampate As Integer 'Conta le righe stampate
Dim RigheTotali As Integer 'Righe da stampare in totale (vengono conteggiate
all'inizio)
Dim PagineTotali As Integer 'Pagine da stampare (vengono calcolate all
'inizio)
Dim PagineStampate As Integer 'Conta le pagine stampate
Const RighePerPagina = 20 'Righe da stampare in ogni pagina
Const RigheFinali = 6 'Righe occupate dal pie' di pagina di gruppo
Private Sub Corpo_Print(Cancel As Integer, PrintCount As Integer)
   Dim ctl As Control
   RigheStampate = RigheStampate + 1
   If PagineStampate < PagineTotali Then
      If RigheStampate >= RighePerPagina Then
         If RigheStampate > RighePerPagina Then
            RigheVisibili False
         End If
         If RigheStampate < ((RighePerPagina + RigheFinali) *
PagineStampate) Then
            Me.NextRecord = False
         End If
      End If
   Else
      If RigheStampate >= RigheTotali + (PagineTotali - 1) * RigheFinali
Then
         If RigheStampate > RigheTotali + (PagineTotali - 1) * RigheFinali
Then
            RigheVisibili False
         End If
         If RigheStampate < RighePerPagina * PagineStampate +
(PagineTotali - 1) * RigheFinali Then
            Me.NextRecord = False
         End If
      End If
   End If
End Sub
Private Sub IntestazioneGruppo0_Print(Cancel As Integer, PrintCount As
Integer)
   RigheTotali = DCount("idfatturerighe", "T_fatturerighe", "idfattura ='" &
Me.IdFattura & "'")
   PagineTotali = Int(RigheTotali / RighePerPagina) + IIf((RigheTotali Mod
RighePerPagina) > 0, 1, 0)
   PagineStampate = PagineStampate + 1
   RigheVisibili True
End Sub
Private Sub PièDiPaginaGruppo1_Print(Cancel As Integer, PrintCount As
Integer)
   RigheStampate = 0
   PagineStampate = 0
   PagineTotali = 0
End Sub
Private Function RigheVisibili(fVisibili As Boolean)
   Dim ctl As Control
   For Each ctl In Me.Corpo.Controls
      ctl.Visible = fVisibili
   Next ctl
End Function
Si basa sul semplice principio che, per inserire righe vuote, è sufficiente
ripetere la stampa dell'ultimo record tante volte quanto è necessario ad
arrivare in fondo alla pagina senza però farne vedere il contenuto.
In questa soluzione è previsto un pie' di pagina di gruppo che occupi 6
righe (RigheFinali), questo parametro serve per poter gestire la stampa su
più pagine. Dato che il pie' di pagina di gruppo viene visualizzato solo
sull'ultima pagina del gruppo è necessario aggiungere 6 righe vuote per
mantenere costante il numero di righe per pagina.
Nell'esempio proposto l'intestazione di gruppo è riportata su ogni pagina
(altrimenti sarebbe necessario aggiungere righe vuote anche in testa).
Certamente questo codice puo' essere migliorato sia nella compattezza sia
nell'efficienza, ma svolge il suo compito correttamente.
Ciao e grazie per il tuo interessamento......comunque a me non
funziona.......sarà che sono negato con il Vb per access??
Se faccio le stesse cose con le macro funzionano! :P
Ciao
ULTRAREFLEX

 ULTRAREFLEX
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------