Pagine report dispari e pari

di il
5 risposte

Pagine report dispari e pari

Salve avrei bisogno di un aiuto
io ho un registro da stampare attraverso un report
il registro è diviso in due cioè in pagine di carico e pagine di scarico
e precisamente le pagine di carico sono tutte quelle dispari
e quelle di scarico le pagine sono tutte quelle pari
il registro è diviso in due tabelle una di carico e una di scarico
="Pagina " & [Pagina]
come devo modificare la riga di comando che conta le pagine
in maniera che conti le pagine dispari
e in maniera che conti le pagine pari
grazie
vi saluto
e buon lavoro

5 Risposte

  • Re: Pagine report dispari e pari

    E' da stabilire come si sviluppa il report, ad esempio se parliamo di un formato A4 con ciascuna pagina dispari (del carico) e pari (dello scarico) puoi realizzare due report uno per i carichi ed uno per gli scarichi, modificando (tramite codice VBA) il numero della pagina (Page, che dovrà essere raddoppiata, 2P per le pari e 2P -1 per le dispari).
    Qualora il report si riferisca ad un foglio A5, che deve essere stampato su un foglio A4 orizzontale, si dovrà sviluppare su due colonne, agendo sempre sul numero della pagina.
    Nel caso il report si sviluppi su un'area più ampia del fogio A4, ad esempio su A3, le due pagine affiancate, quando vengono stampate, sono numerate in modo progressivo, quindi se si vuole contraddistinguerle si può porre la posizione del numero di pagina a destra o sinistra sul bordo esterno, se si vuole mantenere il numero di pagina, delle coppie (destra e sinistra) si può impostare la pagina dimezzando il numero di page (P\2 +1) per le dispari e P\2 per le pari.
    Ti cito dei link, che forniscono elementi aggiuntivi, per approfondire l'argomento:
    https://docs.microsoft.com/en-us/office/vba/api/access.report.pages
    https://forum.ialweb.it/forum_posts.asp?TID=16463583&title=interruzione-di-pagina-report
    https://answers.microsoft.com/it-it/msoffice/forum/msoffice_word-mso_windows8-mso_365hp/numerazione-pagina-destra-e-sinistra/22766b92-1356-4cd7-94d8-16aad3711853
  • Re: Pagine report dispari e pari

    marcoxp ha scritto:


    Salve avrei bisogno di un aiuto
    io ho un registro da stampare attraverso un report
    il registro è diviso in due cioè in pagine di carico e pagine di scarico
    e precisamente le pagine di carico sono tutte quelle dispari
    e quelle di scarico le pagine sono tutte quelle pari
    il registro è diviso in due tabelle una di carico e una di scarico
    ="Pagina " & [Pagina]
    come devo modificare la riga di comando che conta le pagine
    in maniera che conti le pagine dispari
    e in maniera che conti le pagine pari
    grazie
    vi saluto
    e buon lavoro
    Scusa ma magari ho frainteso l'esigenza e sto semplificando troppo...!
    Ipotiziamo un Report di 10pgs... quante pagine pari avrò...?
     PaginePari=[Pages]\2
    Dove ho messo il BackSlash perchè prende l'intero... infatti se hai 11pages, hai 5 pagine pari...
    Quante pagine dispari ho ...? (Pages-PaginePari)...?

    Nella sostanza...
    ="Pagina " & [Pagina] & " di " & IIF(([Pagina] Mod 2)=0;[Pagine]\2;[Pagine]-[Pagine]\2)
    oppure
    ="Pagina " & [Pagina] & " di " & IIF(([Pagina] Mod 2)=0;[Pagine]\2;Fix(0,5+[Pagine]/2))
  • Re: Pagine report dispari e pari

    Tempo fa io ho risolto (complicandomi un po' di più la vita) e forse non in modo elegante per un database ad uso personale

    Nel mio caso tenevo separato anche l'incremento di pagina (uno per le pari e uno per le dispari) non so se è questo che ti serve.

    Su SezionePièDiPaginaPagina_Print ho inserito questo codice che si appoggia su una tabella (tbl_Page_Rpt )

    richiamando poi in una txt i valori con dlookup e visualizzando solo la txt opportuna (probabilmente ne basta una di txt popolandola con il valore adeguato )
    Dim TotPari, TotDispari, NumPagine, PagPari, PagDispari, Contatore, Indice
    
    If Me.Page = 1 Then 'Esegue solo prima volta
    
    DoCmd.RunSQL "DELETE * FROM tbl_Page_Rpt;"
    
    Contatore = 0
    Indice = 1
    PagDispari = 0
    
    Do Until Contatore = Me.Pages
    TotPari = Int(Me.Pages / 2)       'pagine pari
    TotDispari = Me.Pages - TotPari   'pagine dispari
    
    DoCmd.RunSQL " INSERT INTO tbl_Page_Rpt ( NumeroTotalePagine, NumeroTotalePari, NumeroTotaleDispari, ProgressivoPari, ProgessivoDispari )SELECT " & Indice & " AS NumeroTotalePagine, " & TotPari & " AS NumeroTotalePari, " & TotDispari & " AS NumeroTotaleDispari, 0 AS ProgressivoPari, 0 AS ProgessivoDispari;"
    
    Indice = Indice + 1
    Contatore = Contatore + 1
    Loop
    
    
    Dim conn As ADODB.Connection
    Dim rs1 As ADODB.Recordset
    Set conn = CurrentProject.Connection
    Set rs1 = New ADODB.Recordset
    
    Dim NumPages, ContPari, ContDispari
    
    ContPari = 1
    ContDispari = 1
    
      rs1.Open "tbl_Page_Rpt", conn, adOpenDynamic, adLockOptimistic
                         
      Do Until rs1.EOF
      
      NumPages = (rs1("NumeroTotalePagine"))
      If (NumPages / 2) - Int(NumPages / 2) = 0 Then
      
         With rs1
        .Fields("ProgressivoPari") = ContPari
        .Update
        End With
        
        ContPari = ContPari + 1
        
        Else 'Se dispari
        
        With rs1
        .Fields("ProgessivoDispari") = ContDispari
        .Update
        End With
        
        ContDispari = ContDispari + 1
        End If
      
      rs1.MoveNext
      
      Loop
    
    rs1.Close
    conn.Close
    Set conn = Nothing
    Set rs1 = Nothing
    End If
    
    TotPari = Int(Me.Pages / 2)
    TotDispari = Me.Pages - TotPari
    
    Me.txtTotPari = "Pagina " & DLookup("[ProgressivoPari]", "tbl_Page_Rpt", "[NumeroTotalePagine] = " & Me.Page) & " di " & TotPari
    Me.txtTotDispari = "Pagina " & DLookup("[ProgessivoDispari]", "tbl_Page_Rpt", "[NumeroTotalePagine] = " & Me.Page) & " di " & TotDispari
    'visualizzo solo la txt opportuna
    If (Me.Page / 2) - Int(Me.Page / 2) = 0 Then
    Me.txtTotDispari.Visible = False
    Me.txtTotPari.Visible = True
    Else
    Me.txtTotDispari.Visible = True
    Me.txtTotPari.Visible = False
    End If
  • Re: Pagine report dispari e pari

    Anche per incrementare in modo indipendente pagine pari e dispari bastano 2 righe di codice:
    ProgrPari=Page\2 ' equivale a Int(Page/2)
    ProgrDispari=Fix(0.5+Page\2)
  • Re: Pagine report dispari e pari

    Grazie @Alex
    Non dubitavo di essermi complicato la vita
Devi accedere o registrarti per scrivere nel forum
5 risposte