Condividi tramite

Report: impostazione altezza piè pagina e visibilità dei controlli ( labels)

Anonimo
2018-01-09T02:25:39+00:00

Salve a tutti,

ho uno strano problema, che mi sta affliggendo da diversi mesi, di cui non riesco a venirne a capo e che vado a sottoporvi.

Ho creato un report con intestazione report, corpo e pièdipagina pagina.

Nella formattazione del pièdipagina pagina guardando un vecchio post ho inserito questo codice:

if Me.Page = Pages Then

Me.Etichetta1.Visible = True

Me.Etichetta2.Visible = False

Me.SezionePièdiPagina.Height = 3492

Me.Erichetta1.Height = 3492

Else

Me.Etichetta1.Visible = False

Me.Etichetta2.Visible = True

Me.SezionePièdiPagina.Height = 520

Me.Erichetta1.Height = 520

End if

In poche parole quando apro il report in Anteprima di Stampa è tutto perfettamente impostato come voglio, tutte le pagine sono piene di record e vedo l'etichetta2 alta 1cm dal fondo, mentre l'ultima pagina ha il fondo alto circa 6cm con l'etichetta1 alta 6cm circa come l'ho disegnata.

Il problema è che se lancio il comando di stampa oppure salvo in Pdf il report o anche solo apro l'Imposta Pagina per controllare i margini ma senza cambiare nulla, ecco che tutto va in malora e l'etichetta2 sguazza felicemente in un fondo pagina di 6cm SU TUTTE LE PAGINE e naturalmente mi si aggiungono altre pagine per via del ristringimento del corpo.

Perché succede questo?

Cosa posso fare per avere la mia formattazione fissa?

Grazie a tutti coloro che sapranno aiutarmi.

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

11 risposte

Ordina per: Più utili
  1. Anonimo
    2018-01-09T16:00:19+00:00

    Ciao Sandro,

    grazie per la tua celere risposta.

    Allora ho modifica il codice che mi hai postato, ed ho provato ad inserire nel pièdipagina pagina anche 2 caselle di testo

    • nr_pagina = page
    • tot_pagine = pages

    ho provato anche a rinominarle

    • page = page
    • Pages = pages

    ma il risultato non cambia!

    Ho anche modificato il tuo codice così:

    If .Page = .Pages Then

    .SezionePièDiPaginaPagina.Height = 3492

    .Etichetta1.Height = 3492

        Else

    .SezionePièDiPaginaPagina.Height = 520

            .Etichetta1.Height = 520

    End If

    ma il rusultato non cambia:

    Clicco sul pulsante per aprire l'Anteprima di Stampa e tutte le pagine sono esattamente come le voglio io... come lancio la stampa, o salvo il pdf o clicco su Imposta Pagina ecco che tutte le pagine hanno l'altezza a 3492 ed ovviamente i record vengono spostati in altre pagine.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2018-01-09T15:54:56+00:00

    Salve Michele,

    grazie per le tue celeri risposte.

    Il codice l'ho inserito nell'evento SezionePièdiPagina_Format(...)

    per cui sull'evento "su formattazione" del piè di pagina pagina

    mentre per il Report.Footer se non sbaglio agisce come il pièdipagina Report che mi attacca l'etichetta alla fine del corpo del report ed in quel caso dovrei aggiungere n record per far si che l'etichetta sia a fondo pagina.

    Ma comunque non riesco a capire perché al momento dell'apertura dell'anteprima è perfetto come lo voglio io e cambia a seconda dell'azione che si esegue.

    Come dire l'anteprima è una "cosa così" che ti faccio vedere a monitor, ma in realtà non è quello che realmente produci... perché?

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2018-01-09T13:02:29+00:00

    ciao Massimo,

    per conteggiare correttamente le pagine come vedi qui :

    https://msdn.microsoft.com/en-us/vba/access-vba/articles/report-pages-property-access?f=255&MSPPError=-2147217396

    serve una textBox anche invisibile con il controlSource =pages o =pages.

    Assumendo che access lavora in twips, e che 1440 twips = 2.54 cm :

    1440:2.54=3492:x , l'altezza per la sezione è impostabile a 6.15 cm per l'ultima pagina

    1440:2.54=520:x, l'altezza per la sezione è impostabile a 0,91 cm per l'impostazione predefinita nella proprietà altezza della sezione nella scheda formato.

    Detto questo prova come segue :

    Private Sub SezionePièDiPaginaPagina_Format(Cancel As Integer, FormatCount As Integer)

    With Me

    .Etichetta1.Visible = CBool(.Page = .Pages)

    .Etichetta2.Visible = Not CBool(.Page = .Pages)

    If .Page = .Pages Then

    .SezionePièDiPaginaPagina.Height = 3492

    .Etichetta1.Height = 3492

    End If

    End With

    End Sub

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2018-01-09T08:12:26+00:00

    Salve,

      il problema è che me.Pages non viene valorizzato col nr delle pagine totali del report. Hai provato ad usare una sezione Report Footer? E' una sezione che viene visualizzata alla fine di tutto.

    Fammi sapere, grazie

    Michele

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2018-01-09T07:56:51+00:00

    Salve,

      in che evento hai inserito il codice?

    Dovresti inserirlo nell'evento OnPrint.

    La risposta è stata utile?

    0 commenti Nessun commento