Stampare più report in PDF da una maschera

di il
6 risposte

Stampare più report in PDF da una maschera

Buonasera a tutti,

ritorno con i miei mille problemi

Avrei la necessità di inserire in una maschera un bottone che, una volta premuto, mi faccia comparire qualcosa (maschera, report, non so) dalla quale io possa selezionare i report che mi interessa stampare, e lanciare la stampa in PDF (NB: i report dovrebbero confluire in un unico PDF).

Mettiamo caso di avere 3 report: Report1, Report2, Report3
La maschera in cui inserire il bottoncino di stampa è Riepilogo
La maschera/report/altro da cui scegliere i report da stampare è MascheraStampa

Qualche idea? Non ho idea da dove partire col codice

6 Risposte

  • Re: Stampare più report in PDF da una maschera

    La parte di selezione dei reports è banale... ti basta riempire una ListBox a selezione multipla ed estesa con l'elenco dei reports... quindi leggi i selezionati e mandi in stampa in pdf.
    Il problema lo puoi avere dopo per Unirli.... e spero che tu abbia un motivo valido per avere Reports distinti che poi devi riunire, perché mi puzza molto di errore di struttura...

    In tutti i casi prova a fare qualche passo seguendo quello che ti ho suggerito e vedi...
  • Re: Stampare più report in PDF da una maschera

    Sinho89 ha scritto:


    ... lanciare la stampa in PDF (NB: i report dovrebbero confluire in un unico PDF).
    ...
    Come ha già fatto notare @Alex, siamo proprio sicuri che i 3 report non siano tali solo perché sono stati studiati male e non si possa crearne uno solo che contiene tutto?
    Se da 3 devono diventare 1, userei pdfCreator, attenzione però: versione 1.7.3, gestibile con vba. Non l'ho mai usata però la documentazione è abbastanza completa. pdfCreator permette di "mettere in coda" le varie stampe e poi di unirle in un unico file PDF.
    Altra strada è quella dell'uso di pdftk che però non è gestibile da vba e che pertanto devi usare come applicazione esterna, costruendo la stringa da passare alla riga comandi. In pratica crei 3 file pdf da Access che poi unirai tramite pdftk e alla fine dovrai cancellare i 3 file di partenza.
    Altre strade non ne conosco.
    Ah... ho dato per scontato che tu non abbia Adobe Acrobat (non il solo Reader), se invece c'è, puoi usare anche quello, ovviamente.
    Una brevissima ricerca su Masterdrive.it mi ha portato a queste pagine:
    http://forum.masterdrive.it/microsoft-office-access-vba-23/unire-pi-report-in-unico-pdf-46225/
    http://forum.masterdrive.it/access-79/problema-utility-stephen-lebans-70561/
    http://forum.masterdrive.it/access-79/unire-pi-documenti-in-formato-pdf-80428/
    Potrebbero esserci problemi nell'uso di alcune delle soluzioni proposte in presenza di sistema operativo e/o Access a 64bit. Non li ho mai provati.
    (prova a creare direttamente un report unico)
  • Re: Stampare più report in PDF da una maschera

    @Alex e Philcattivocarattere, grazie per le risposte

    In pratica, i 3 report sono rappresentativi di 3 parti diverse (oggetti/servizi) di un preventivo. Ovviamente, non è detto che in ogni preventivo siano presenti tutte e 3 le parti, perchè chiaramente dipende dalle richieste del cliente e da qui l'esigenza di avere una maschera da cui decidere che cosa stampare

    [Dato che sono all'inizio della costruzione di questa parte di database, i report che andrò a strutturare saranno molti più di questi 3. Però una volta imparato il meccanismo potrò cavarmela anche in presenza degli altri.]

    Creare un report unico, all'interno del quale inserire i dati provenienti da tutti i report/maschere, non so quanto mi possa essere utile. Perchè come farei a dirgli di stamparmi nel report solamente i campi che mi interessano? Dovrei, per esempio, porgli un filtro in cui specifico di stampare determinati campi se >0? (o qualcosa di simile?)
    Se secondo voi può essere una buona strada, potreste darmi dei suggerimenti?

    Anche perchè dopo aver provveduto a strutturare i report secondo la grafica che mi interessa ottenere in stampa, già non riesco a filtrarli per ottenere in anteprima di stampa solo quelli su cui sto lavorando... mi restituisce un report per ogni record della tabella a cui l'ho associato e non solo quello che fa riferimento, per esempio, al numero preventivo della maschera aperta. E' un po' arrabattata come spiegazione, me ne rendo conto

    Adesso spulcio un po' i link che mi hai messo qui, Philcattivocarattere. Speriamo mi possano essere d'aiuto!

    Grazie per l'aiuto e buona giornata a tutti
  • Re: Stampare più report in PDF da una maschera

    Dare un giudizio sul lavoro di altri senza averne elementi è sempre semplice quanto riduttivo.
    Quello che ti viene suggerito, non è solo di UNIRE i REPORT... ma di capire e valutare se la struttura che sta dietro al tutto sia corretta, perchè anche per come hai provato a spiegare ora, gli elementi pur ridotti per ipotizzare qualche errore di Struttura, ci sono...

    Perchè ad esempio dici:

    Sinho89 ha scritto:


    In pratica, i 3 report sono rappresentativi di 3 parti diverse (oggetti/servizi) di un preventivo
    Quindi perchè hai 3 Parti diverse se i dati contenuti sono RICONDUCIBILI..., essendo un Database e non un Foglio di EXCEL, è evidente che le Forme Normali(quelle della Normalizzazione) richiederebbero tutt'altro scenario...

    Quindi se tu avessi strutturato in modo "Normale" inserendo l'elemento Differenziale delle 3 Parti diverse, anche il Report conseguente, generato Con Raggruppamento in Sezioni per "Elemento distintivo" sarebbe stato Automatico ed unico...

    Insomma, devi fare tu un lavoro di riflessione, gli elementi li hai, così come eventualmente valuterai se val la pena ripensare alla struttura(perchè non sempre è possibile rifare tutto) e dedicarti allo sforzo di Codice che serve per rimettere assieme i 3 PEZZI...
  • Re: Stampare più report in PDF da una maschera

    Rieccomi.
    Ho finalmente trovato il tempo per rimettermi sotto con le modifiche di questo database.

    La parte di selezione tramite listbox e stampa dei pdf, come dicevi tu Alex, è stata banale.
    Ora, però, sono riuscito solo a far stampare un pdf per ogni report.
    Ciò che servirebbe, come dicevo, è un meccanismo automatizzato che permetta di unirli (pre o post stampa) in un unico file pdf.

    Tentando nuove soluzioni, ho provato a produrre un report unico (come dicevate voi giustamente).
    Soluzione1
    Provo a riassumere ciò da cui sono partito e ciò che ho fatto (sicuramente sbagliando, altrimenti avrebbe funzionato bene bene):
    - Ho 3 tabelle (chiamiamole Tabella1, Tabella2, Tabella3)
    - Ognuna di queste tabelle è corrispondente a delle caratteristiche di una differente macchina industriale (Macchina1, Macchina2,Macchina3...sono macchine differenti l'una dalle altre, e quindi non riconducibili tra loro per caratteristiche, dato che anche nel report avrò una impaginazione specifica e differente per ognuna delle macchine...però sono riconducibili tramite NUMPREV, ovvero il numero del preventivo)
    - Ognuna di queste 3 tabelle, a seconda se la macchina è presente o meno nel mio preventivo, potrebbe contenere un record relativo alla macchina con le info sopra citate.
    Potrebbe benissimo, quindi, capitare che ci sia Macchina1 e Macchina2, ma NON Macchina3.
    - Ho costruito 3 report differenti (Report1, Report2, Report3), perchè come ho detto prima è necessario dare ad ognuno una specifica impaginazione. Ognuno dei report fa riferimento appunto a rispettivamente Tabella1, Tabella2, Tabella3, ed è composto da sole caselle di testo impostate come riducibili e da una casella per oggetto OLE...cioè una figura)
    - Ho costruito un ReportUnico con al suo interno 3 sottoreport riducibili (cioè i 3 report che ho citato sopra), separati da un interruttore di pagina così che possa mantenere l'impaginazione che mi occorre senza avere pagine tagliate a metà.

    Arrivo al problema: quando non ho una delle tre macchine, il ReportUnico stampa una pagina bianca al posto del report interessato.
    Spiego meglio. Mettiamo caso di avere Macchina1, Macchina2 ma NON Macchina3. Il report stampa le prime due pagine in modo perfetto dato che ha un record da cui attingere dati, ma al posto della pagina relativa al Report3 stampa una pagina bianca.
    In quale modo è risolvibile? Consigli?
    Non eliminando l'interruttore di pagina perchè è importante ai fini del mantenimento dell'impostazione grafica della pagina successiva...anche se ho visto che eliminandolo, risolvo il problema! (purtroppo l'impostazione grafica è fondamentale per questo lavoro, e mi ritroverei con pagine tagliate a metà e cose simili)

    Soluzione2
    Ho tentato un'altra soluzione, come avevate suggerito voi. Cioè la costruzione di un report unico sfruttando la riconducibilità dei tre record tramite il numero preventivo.
    Tramite query, legando le tre tabelle per numero preventivo, ottengo ancora meno rispetto alla soluzione 1. Questo perchè, se in tutte e tre le tabelle non è presente il record con relativo numero preventivo (per esempio, se sono presenti Macchina1 e Macchina2, ma NON Macchina3), il report viene stampato completamente bianco.
    E' possibile mettere qualche condizione sul campo NUMPREV (numero preventivo) tale che:
    - se c'è il record nella tabella con il numero preventivo interessato, allora stampa il report
    - se non c'è il record nella tabella con il numero preventivo interessato, allora il report non viene stampato? (però non devo avere la pagina bianca...perchè altrimenti ogni volta a fine lavoro dovrei star li a togliere le pagine bianche, e numerarle, manualmente con uno strumento di merge)

    Grazie anticipatamente per tutto!
  • Re: Stampare più report in PDF da una maschera

    Sinho89 ha scritto:


    Rieccomi.
    Ho finalmente trovato il tempo per rimettermi sotto con le modifiche di questo database.
    ...
    Grazie anticipatamente per tutto!
    Non sono in grado di valutare la correttezza del tuo operato con la realizzazione dei subreport, mi devo fidare di questa necessità. Ho focalizzato la ricerca della soluzione sul fatto che ci siano interruzioni di pagina e che un subreport non contenga informazioni da stampare e sono arrivato qui: If subreport has no data on report..
    Fa' attenzione ai nomi dei controlli "container" dei subreport che possono non coincidere con il nome del report, per far riferimento agli oggetti giusti.
Devi accedere o registrarti per scrivere nel forum
6 risposte