Newsgroup: it.comp.appl.access
Titolo: Report troppo lungo reloaded

Qualche giorno fa ho postato un thread al quale delle anime di buona volontà 
hanno risposto, dandomi delle delucidazioni: il mio problema era, ed è, 
quello di far stampare delle fatture che abbiano un nnumero prefissato N di 
righe (in modo da non andare sue giù con i totali);
Bene!
Ho seguito il consiglio di andare a vedere su sitocomune ed in particolare 
alla faq 4.6 dei reports, c'è un piccolo esempio di database che farebbe al 
caso mio; il problema è che pur adattandolo al mio database ho i seguenti 
problemi:
1) non mi stampa l'Intestazione Pagina (e c'è da dire che in effetti mi 
andava sempre in debug fino a che non ho modificato il controllo IntPagina 
in IntestazionePagina;
2) vorrei che anche l'Intestazione Gruppo venisse stampato ad ogni pagina, 
ovemai in una fattura ci fossero più record nel corpo di quanti se ne 
debbano stampare in una pagina;
3) sono riuscito con varie modifiche a far stampare le righe vuote in modo 
che arrivassero al mio numero N, ma se i record superano il numero N, mi 
stampa un numero enorme di righe vuote;
Vi posto il codice che ho inserito...sperando che qualcuno, compreso dove 
sbaglio nonostante la mia "spiegazione"...mi sappia aiutare:
Option Compare Database
Option Explicit
Dim intCR As Integer        'contatore di righe
Dim intCP As Integer        'contatore di pagine per gruppo
Const intNR As Integer = 16 'numero di righe da stampare
Private Sub Corpo_Format(Cancel As Integer, FormatCount As Integer)
    'incrementa il contatore di righe
    intCR = intCR + 1
    If intCR = intNR Then
        'se il numero di riga coincide con il numero max di righe stampabili
            'se il numero di riga e' maggiore dell'ultimo record
            'rende invisibili i controlli testo nel corpo
        If intCR + intNR * intCP > Me.conteg Then ControlliAssociatiVisibili 
False
        'imposta l'interruzione di pagina se non e' l'ultima pagina
        If intCP + 1 < Me.conteg / intNR Then Me.IntestazionePagina.Visible 
= True
    ElseIf intCR + intNR * intCP = Me.conteg Then
        'se il numero di riga coincide con l'ultimo record
        'evita lo spostamento sul record successivo
        Me.NextRecord = False
    ElseIf intCR + intNR * intCP > Me.conteg Then
        'se il numero di riga e' maggiore dell'ultimo record
        'evita lo spostamento sul record successivo
        'e rende invisibili i controlli testo nel corpo
        Me.NextRecord = False
        ControlliAssociatiVisibili False
    End If
End Sub
Private Sub IntestazioneGruppo0_Format(Cancel As Integer, FormatCount As 
Integer)
    'incrementa il contatore di pagine per gruppo
    intCP = 0
End Sub
Private Sub IntestazionePagina_Format(Cancel As Integer, FormatCount As 
Integer)
    'azzera il contatore di righe
    intCR = 0
    'incrementa il contatore di pagine per gruppo
    intCP = intCP + 1
    'elimina l'interruzione di pagina
    Me.IntestazionePagina.Visible = False
    'rende visibili i controlli testo nel corpo
    ControlliAssociatiVisibili True
End Sub
Private Sub ControlliAssociatiVisibili(blnStato As Boolean)
    Me.CODICE.Visible = blnStato
    Me.TIPOLOGIA.Visible = blnStato
    Me.DESCRIZIONE.Visible = blnStato
    Me.Quantità.Visible = blnStato
    Me.Moltiplicazione.Visible = blnStato
    Me.Pz_Netto.Visible = blnStato
End Sub

 ha scritto nel messaggio 
news:qkAke.935157$b5.40...@news3.tin.it...

p.s. uso Access 2003