Replicare elemento sul corpo di ogni pagina di un report

di il
21 risposte

Replicare elemento sul corpo di ogni pagina di un report

Salve,
sto cercando di replicare un elemento (ad es. una casella di testo o un'immagine) in modo che appaia su ogni pagina di un report nella sezione del corpo (ovviamente in una posizione fissa) che è a lunghezza variabile in base ai dati visualizzati.
Come si può fare, se possibile?
Il risultato finale sarebbe quello di avere per ogni pagina una scritta centrale sul bordo pagina dal lato lungo per la firma, come si usa nei contratti per capirsi..

21 Risposte

  • Re: Replicare elemento sul corpo di ogni pagina di un report

    Nel corpo del Report direi proprio che non va bene e forse non hai compreso come funziona il Report.
    Lo puoi mettere nell'intestazione di PaginaPagina per farla visualizzare su tutte le pagine mentre nell'intestazione di PaginaReport solo nella prima pagina principale.
  • Re: Replicare elemento sul corpo di ogni pagina di un report

    Capito, volevo appunto essere sicuro che non esistesse qualche funzione o artificio da codice a me sconosciuto che non fosse l'inserimento nell'intestazione/piede. Purtroppo in quelle sezioni non ottengo il risultato desiderato, percui mi arrendo al fatto che non è possibile e basta..
  • Re: Replicare elemento sul corpo di ogni pagina di un report

    Grazie comunque!
  • Re: Replicare elemento sul corpo di ogni pagina di un report

    No ti sbagli è possibile ma serve essere capaci che è differente da quello che dici.
    Quindi se ti arrendi sei libero ma non passa il messaggio che non si può.... SI PUÒ.
  • Re: Replicare elemento sul corpo di ogni pagina di un report

    Allora evidentemente non ho capito il suggerimento..

    @Alex ha scritto:


    Nel corpo del Report direi proprio che non va bene e forse non hai compreso come funziona il Report.
    Lo puoi mettere nell'intestazione di PaginaPagina per farla visualizzare su tutte le pagine mentre nell'intestazione di PaginaReport solo nella prima pagina principale.
    Stando a quanto hai detto e per come l'ho capita io, nel corpo non non va bene ma va utilizzato l'intestazione PaginaPagina.
    Bene, ma mettendolo in quella sezione nella posizione desiderata (premesso come già detto che il risultato è piazzare un testo a META' dell'altezza del foglio) viene creata una sezione di intestazione bianca alta quanto la metà del foglio su ogni pagina..
    Allego per chiarezza un esempio di quello che vorrei ottenere (campo FIRMA QUI)
    Allegati:
    20844_11234ce9b3f9439464dc3e3d3fb5a276.jpg
    20844_11234ce9b3f9439464dc3e3d3fb5a276.jpg

    20844_a3fd06aeabc687840f73a835bab7f28b.jpg
    20844_a3fd06aeabc687840f73a835bab7f28b.jpg

    20844_435ab90b2a6e4eccb0ab54ed263d0b8c.jpg
    20844_435ab90b2a6e4eccb0ab54ed263d0b8c.jpg
  • Re: Replicare elemento sul corpo di ogni pagina di un report

    Da verificare il funzionamento (supponendo una stampa in formato A4 verticale) :
    - crea, se serve, una sezione IntestazionePagina con altezza a te consona (i.e. 2 cm) non riducibile/espandibile;
    - crea, se serve, una sezione PièdiPagina con altezza a te consona (i.e. 2 cm) non riducibile/espandibile;
    - crea, se serve un raggruppamento con eventuali intestazioni Header e Footer (supponiamo che ti servano) con altezza 3 cm non riducibili/espandibili.
    Se hai creato tutte le sezioni precedenti, con le altezze proposte (e non ridimensionabili a runtime) hai occupato 2+2+3+3 cm = 10 cm, ti restano disponibili circa 19.7 cm per il corpo (formato A4 : altezza circa 29.7 cm)
    Crea la sezione corpo alta 19.7 cm (eventualmente da ridurre in caso di margini superiore/inferiore) NON ridimensionabile (quindi non riducibile e non espandibile), posiziona i campi che ti servono nella parte alta del corpo e posiziona dove ti serve il campo firma (nella parte destra del corpo circa a metà dello stesso).
    Se funziona (io credo di sì) devi solo giocare un poco con le altezze delle sezioni e dei campi nel corpo (che poi potrebbe essere un solo campo di tipo memo) per ottenere il risultato migliore ...
  • Re: Replicare elemento sul corpo di ogni pagina di un report

    Un'altra soluzione, nel caso quanto sopra proposto non funzionasse, è sfruttare un sottoreport SOLO per i campi del corpo (firma esclusa) da inserire nella sezione corpo del report principale (come proposto nella risposta precedente con le sezioni ad altezze fisse e senza ovviamente i campi del corpo).
  • Re: Replicare elemento sul corpo di ogni pagina di un report

    NNL78 ha scritto:


    ...
    Stando a quanto hai detto e per come l'ho capita io, nel corpo non non va bene ma va utilizzato l'intestazione PaginaPagina.
    Bene, ma mettendolo in quella sezione nella posizione desiderata (premesso come già detto che il risultato è piazzare un testo a META' dell'altezza del foglio) viene creata una sezione di intestazione bianca alta quanto la metà del foglio su ogni pagina..
    Allego per chiarezza un esempio di quello che vorrei ottenere (campo FIRMA QUI)
    Il Corpo viene ripetuto ad ogni Record.
    Se metti un'immagine nel corpo ed hai 10 Records per una pagina ottieni 10 Immagini, e questo ovviamente non va bene.
    Quindi la cosa più semplice per chi non ha una discreta conoscenza del prodotto è appunto sfruttare il PieDiPagina o l'Intestazione di Pagina, in quel modo non devi nemmeno scrivere codice.
    Ma se l'esigenza è inserire l'immagine a META' della Pagina, come dicevo certo che si può fare ma serve avere qualche conoscenza in più... cosa che fatico a misurare.
    Intanto se devi inserire un Rettangolo con la scritta Firma, forse è più semplice disegnare il rettangolo e scrivere "Firma"
    L'unico punto con cui poter agire è l'evento Report_Page(), che viene generato al termine di ogni Pagina già completata nelle singole sezioni.
    In questo evento puoi, rilevando la dimensione della pagina, sapere dove sta la mezzeria, e disegnare il tuo rettangolo con la scritta sovrapposto alla grafica della pagina in qualsiasi punto in quanto i riferimenti del disegno sono ASSOLUTI alla pagina.

    Non ho mai provato a gestire un'immagine in quanto la posizione fisica dell'Oggetto Immagine sarebbe vincolata ad una Sezione Specifica, e questo la renderebbe NON gestibile in questo evento in modo completo.

    Cosa differente invece è se il Corpo viene generato SOLO 1 volta per pagina in quanto occupa in altezza una dimensione fissa che rende fisso il tutto.
    In questo caso conti sul fatto che l'altezza del Corpo è centrata nell'altezza della Pagina, ed in questo caso allora si metti un'immagine laterale nella sezione corpo ed ottieni quanto chiesto.

    Come spero tu abbia compreso, non c'è una soluzione ASSOLUTA, ma molto dipende dalla specificità della tua impostazione e serve ragionarci sempre, ma la soluzione si trova.
  • Re: Replicare elemento sul corpo di ogni pagina di un report

    @Alex ha scritto:


    Il Corpo viene ripetuto ad ogni Record.
    Se metti un'immagine nel corpo ed hai 10 Records per una pagina ottieni 10 Immagini, e questo ovviamente non va bene.
    Questa verità, che conosco (dovrei conoscere ) mi fa dubitare di quanto ho suggerito, che si basa sulla mia memoria di n report costruiti con le casistiche più variegate ... al momento non ho disponibilità di Access per verificare quanto ho suggerito.
    Forse, anzi probabilmente, ho utilizzato un sezione Header o Footer di un raggruppamento e non il corpo per realizzare qualcosa di simile a quanto richiesto dall'OP.
    Se ne avrò il modo farò delle verifiche/prove in questi giorni.
  • Re: Replicare elemento sul corpo di ogni pagina di un report

    Ciao Max, non avevo letto il tuo suggerimento a pieno in quanto probabilmente abbiamo scritto insieme.
    La cosa che inganna, e che l'OP da per scontato, è non considerare fondamentale la 2° parte del mio esposto che sicuramente modifica qualsiasi considerazione.
    Se il Corpo ha Altezza fissa e viene generato OneShot per pagina, il problema non si pone mai..., peraltro le immagini che ha posto ingannano nel senso che lasciano pensare sia così, ma l'importante è spiegare che appunto nel caso in cui il Corpo avesse una dimensione tale da essere possibile la ripetizione nella singola pagina... affidarsi al caso non è adeguato.

    Quello che proponi tu invece, sempre io lo abbia ben compreso, funziona secondo me se appunto nel Report metti l'altezza della Sezione(acDetail=corpo) in modo tale da Coprire la pagina, ed inserito nel Corpo stesso metti il SottoReport con i records.
    A questo punto l'immagine si mette nella sezione Corpo del Report che, piazza l'immagine sempre nel mezzo ed il SottoReport fa la sua parte disegnando i Records entrocontenuti nell'altezza del Corpo Parent..

    Concordo con te, e mi pare una buona soluzione.
  • Re: Replicare elemento sul corpo di ogni pagina di un report

    @Alex ha scritto:


    Quello che proponi tu invece, sempre io lo abbia ben compreso, funziona secondo me se appunto nel Report metti l'altezza della Sezione(acDetail=corpo) in modo tale da Coprire la pagina, ed inserito nel Corpo stesso metti il SottoReport con i records.
    A questo punto l'immagine si mette nella sezione Corpo del Report che, piazza l'immagine sempre nel mezzo ed il SottoReport fa la sua parte disegnando i Records entrocontenuti nell'altezza del Corpo Parent..

    Concordo con te, e mi pare una buona soluzione.
    Ciao Alex,
    hai compreso appieno il mio suggerimento ... sono abbastanza convinto di aver realizzato qualcosa del genere in passato.
    Il trucco è mantenere le dimensioni fisse delle varie sezioni del report principale (facendo in modo che la somma delle altezze + i margini non superi i confini del formato di stampa scelto), inserire sezione del corpo il campo firma e il sottoreport (che permette di gestire le sue sezioni con dimensioni eventualmente variabili).
  • Re: Replicare elemento sul corpo di ogni pagina di un report

    max.riservo ha scritto:


    Ciao Alex,
    hai compreso appieno il mio suggerimento ... sono abbastanza convinto di aver realizzato qualcosa del genere in passato.
    Il trucco è mantenere le dimensioni fisse delle varie sezioni del report principale (facendo in modo che la somma delle altezze + i margini non superi i confini del formato di stampa scelto), inserire sezione del corpo il campo firma e il sottoreport (che permette di gestire le sue sezioni con dimensioni eventualmente variabili).
    Si infatti funziona sicuramente, è una soluzione ottima e semplice.
  • Re: Replicare elemento sul corpo di ogni pagina di un report

    Grazie per le risposte, proverò a lavorare sui vari suggerimenti.
    Nel mentre, giusto per rendere più chiara la situazione specifica del report in questione, riepilogo come è composto:

    - sezione intestazione (numero contratto e data)
    - sezione corpo (dati anagrafici delle parti, testo contratto)
    - sezione piede (numero pagina)

    Il singolo report (corrispondente al singolo contratto, ossia al singolo record della query sorgente) può essere lungo n pagine poichè il campo "testo contratto" è un memo che può essere più o meno lungo a seconda del contratto in questione. Di conseguenza è questo campo che va ad occupare n pagine non prevedibili a priori.
    Nella stampa finale inoltre vorrei generare n report, che varieranno solo per i dati anagrafici.
  • Re: Replicare elemento sul corpo di ogni pagina di un report

    Stavo seguendo il suggerimento relativo all'evento Report_Page() e disegnando un rettangolo di esempio questo viene correttamente riportato su tutte le pagine come desiderato. Adesso in aggiunta al rettangolo dovrei inserire un'immagine o una scritta, ho dato un occhio ai metodi supportati me non vedo niente che possa fare al mio caso..
Devi accedere o registrarti per scrivere nel forum
21 risposte