Stampare singolo report

di il
29 risposte

Stampare singolo report

Salve a tutti,
mi sono rivolto a questo forum perchè la mia limitata conoscenza di access non mi consente di risolvere dei problemi che dovrebbero essere semplici.
Ho realizzato un database con access 2007 per l'inserimento dei dati anagrafici e non del personale. Funziona tutto tranne la stampa del report.
Mi spiego meglio, ho la necessità di stampare su una specifica scheda ogni singolo campo del report corrispondente ad una sola persona e invece quando mando in stampa vengono stampate tutte le schede. Purtroppo malgrado la mia ricerca in rete non sono riuscito a risolvere questo problema che chiuderebbe in bellezza la mia realizzazione. Grazie!

29 Risposte

  • Re: Stampare singolo report

    1. Apri una macro in visualizzazione struttura
    2. Nel primo rigo Azioni scrivi:
    ApriReport
         Nome report: il tuo report
         Condizione WHERE: [NomeCampoID]=[Maschere]![NomeMaschera]![NomeCampoID]
    3. Salva la macro con nome ad es. StampaPersonaCorrente
    4. Crea sulla maschera un pulsante e associa all'evento "Su clic" la macro StampaPersonaCorrente

    Questa soluzione parte dal presupposto che sia la maschera, sia il report abbiano in comune il campo chiave primaria IDPersona (quello che io ho chiamato [NomeCampoID]).
  • Re: Stampare singolo report

    OsvaldoLaviosa ha scritto:


    1. Apri una macro in visualizzazione struttura
    2. Nel primo rigo Azioni scrivi:
    ApriReport
         Nome report: il tuo report
         Condizione WHERE: [NomeCampoID]=[Maschere]![NomeMaschera]![NomeCampoID]
    3. Salva la macro con nome ad es. StampaPersonaCorrente
    4. Crea sulla maschera un pulsante e associa all'evento "Su clic" la macro StampaPersonaCorrente

    Questa soluzione parte dal presupposto che sia la maschera, sia il report abbiano in comune il campo chiave primaria IDPersona (quello che io ho chiamato [NomeCampoID]).
    Grazie per il suggerimento!! Ho fatto come hai scritto con il seguente risultato:
    quando procedo ad effettuare la modifica che mi hai suggerito funziona e stampa ogni singolo report che viene visualizzato nella maschera. Il tutto funziona benissimo quando effettuo la modifica senza chiudere completamente il programma.
    Quando esco dal programma e lo riapro nuovamente, cliccando sul tasto stampa, mi appare una finesta con la scritta: Immettere valore parametro MASCHERE!GENERALE!ID se digito nella finesta il numero di ID corrispondente alla persona compaiono tutti i dati e procedo alla stampa, se invece clicco semplicemente ok, senza inserie l'ID, mi stampa il report vuoto.
  • Re: Stampare singolo report

    Temo che tu non abbia salvato la modifica nella maschera, cioè l'associare la macro al clic del pulsante. Oppure pretendi di eseguire la macro StampaPersonaCorrente senza avere la maschera aperta.
  • Re: Stampare singolo report

    Non riesco a capire, è un incubo! Sia la maschera che il report sono collegate ad una singola tabella. Il pulsante di comando si trova sulla maschera e su clic è collegato alla macro "StampaPersonaCorrente". Ho riprovato inserendo un nuovo pulsante di comando "stampa report", ho salvato la modifica e tutto funziona benissimo!!! Non appena chiudo e riapro il programma ritorna la finesta con la scritta: Immettere valore parametro MASCHERE!GENERALE!ID.....mistero!!
    Allora ho provveduto aggiungendo un campo sulla maschera casella di testo "ID" del record e quando ricompare la finestra digito il numero e mi effettua la stampa del report!
  • Re: Stampare singolo report

    TRINACRIA FELIX ha scritto:


    Non appena chiudo e riapro il programma ritorna la finesta con la scritta: Immettere valore parametro MASCHERE!GENERALE!
    Che vuol dire "Non appena chiudo e riapro------>ritorna la finestra"? Appena chiudi e riapri il database deve comparirti la normale finestra degli oggetti Tabelle, Query... Tu devi aprire prima la maschera, posizionarti su un record che desideri e poi cliccare sul pulsante. Se segui questa sequenza di azioni, deve funzionare tutto correttamente. Non vorrei che hai qualche impostazione o apertura automatica del tuo report che innesca automaticamente quella finestra di domanda.
  • Re: Stampare singolo report

    OsvaldoLaviosa ha scritto:


    TRINACRIA FELIX ha scritto:


    Non appena chiudo e riapro il programma ritorna la finesta con la scritta: Immettere valore parametro MASCHERE!GENERALE!
    Che vuol dire "Non appena chiudo e riapro------>ritorna la finestra"? Appena chiudi e riapri il database deve comparirti la normale finestra degli oggetti Tabelle, Query... Tu devi aprire prima la maschera, posizionarti su un record che desideri e poi cliccare sul pulsante. Se segui questa sequenza di azioni, deve funzionare tutto correttamente. Non vorrei che hai qualche impostazione o apertura automatica del tuo report che innesca automaticamente quella finestra di domanda.
    Grazie per la tua disponibilità e pazienza!
    Mi sono sicuramente spiegato male. Con chiudo e riapro intendo che abbandono il programma, quando l'avvio mi compaiono in primo piano, sia la finestra degli oggetti (con tendina chiusa) e sia la maschera. Posizionandomi sul record, quando clicco il pulsante stampa, mi si presenta, inesorabile, la finestra di "immissione valori".
    La cosa strana e che se inizio la procedura ex novo, cioè creo un nuovo pulsante stampa, con clic riferito alla macro, funziona tutto regolarmente!! Il problema della finestra si presenta esclusivamente quando abbandono il programma e lo riavvio. Di automatico ho solo l'apertura maschera a tutto schermo, almeno spero!!
  • Re: Stampare singolo report

    Finalmente il db gira che è una meraviglia anche se il lavoro di inserimento dati e ancora mooolto lungo!
    Avrei bisogno di un ulteriore aiuto visto che è' nata l'esigenza di dover inserire una nuova "casella di controllo" per selezionare e affinare ulteriormente i dati di ogni singolo record e far si che il db avvisi automaticamente al compimento del 32° e del 39° anno di età di ogni singolo record selezionato.
    Ho creato una query ed ho ottenuto l'elenco dei nominativi interessati e, ovviamente, non so come fare per impostare questo avviso automatico. Per informazione nella tabella principale è inserito il campo "data di nascita" e "classe" di nascita di ogni nominativo.
    Con la speranza di essere stato chiaro, vi ringrazio anticipatamente!
  • Re: Stampare singolo report

    Per poterti dare una risposta precisa, potresti elencare tutti i campi della maschera?
    Che cosa è il campo "classe" di nascita, visto che hai già il campo DataNascita?
  • Re: Stampare singolo report

    OsvaldoLaviosa ha scritto:


    Per poterti dare una risposta precisa, potresti elencare tutti i campi della maschera?
    Che cosa è il campo "classe" di nascita, visto che hai già il campo DataNascita?
    Capisco cosa intendi dire. Premetto che le procedure che applichiamo nel nostro ufficio prevedono delle scadenze principali in base alle classi di nascita e successivamente, e non per tutti i nominativi, scadenze diverse affinate in base alla data di nascita completa. Gli statini cartacei che stampiamo sono modelli del Ministero della Difesa e non possiamo cambiarli. Fino ad oggi erano compilati a mano e rimarranno in archivio per decenni.
    Su nuove disposizioni dobbiamo attivare delle nuove procedure al compimento del 32° e del 39° anno di età di ogni singolo record selezionato. Ecco la richiesta di poter avere un avviso automatico quando i nominativi selezionati arriveranno ai 32 e 39 anni.
    Questi sono i campi interessati presenti sulla mashera e che sono obbligatori:
    Classe;
    Grado;
    Categoria;
    Specializzazione;
    Abilitazione;
    Cognome;
    Nome;
    Luogo;
    Data di nascita;
    Matricola;
    Data di congedo;
    Domicilio;
    Foglio Matricolare inviato con foglio nr.;
    In data;
    Annotazioni;
    Trasferito in altre FF.AA.
    Disponibile al richiamo: SI;
    Disponibile al richiano: NO;
  • Re: Stampare singolo report

    Ci sono molti campi di cui non comprendo il significato tecnico-professionale. Qualcosa mi dice che alcuni di essi non devono stare tutti insieme.
    Se ho vagamente capito il campo Classe significa semplicemente l'Anno di nascita che appunto sottolinea la Classe. Se sì, per me quel campo è inutile e ridondante con DataNascita. Dal campo DataNascita è sempre possibile, con una espressione o query estrapolare l'Anno e lavorare su di esso.
    Il campo DataCongedo non ha senso di stare lì. Correggimi se sbaglio, se esso dipende dalla DataNascita e dopo x anni (uguali per tutti) una persona va in congedo, anche qui sorge un calcolo che Access può effettuare automaticamente con una query, quindi è un campo in più superfluo.
    Riguardo gli Avvisi, mi pare di capire che non devono essere messi in funzione soltanto a 32 e 39 anni, ma devono sottostare anche ad altre considerazioni che non ho ancora afferrato. Dovresti descrivere tutto più dettagliatamente.
  • Re: Stampare singolo report

    OsvaldoLaviosa ha scritto:


    Ci sono molti campi di cui non comprendo il significato tecnico-professionale. Qualcosa mi dice che alcuni di essi non devono stare tutti insieme.
    Se ho vagamente capito il campo Classe significa semplicemente l'Anno di nascita che appunto sottolinea la Classe. Se sì, per me quel campo è inutile e ridondante con DataNascita. Dal campo DataNascita è sempre possibile, con una espressione o query estrapolare l'Anno e lavorare su di esso.
    Il campo DataCongedo non ha senso di stare lì. Correggimi se sbaglio, se esso dipende dalla DataNascita e dopo x anni (uguali per tutti) una persona va in congedo, anche qui sorge un calcolo che Access può effettuare automaticamente con una query, quindi è un campo in più superfluo.
    Riguardo gli Avvisi, mi pare di capire che non devono essere messi in funzione soltanto a 32 e 39 anni, ma devono sottostare anche ad altre considerazioni che non ho ancora afferrato. Dovresti descrivere tutto più dettagliatamente.
    Tutti i campi fanno parte di una singola scheda per ogni singolo nominativo inserito e rimarranno in archivio taluni fino al compimento dei 60 anni altri fino a 65 anni, ma questo è facile perchè gli archivi cartacei li abbiamo divisi per classi di nascita La cosa si complica per una parte di essi quando compiranno il 32° e il 39° anno di età.
    La DataCongedo non è vincolata alla data di nascita ma alla cessazione del servizio che può avvenire in qualsiasi data e per svariati motivi.
    Per gli avvisi mi basta solo che funzionino soltanto al compimento dei 32 e 39 anni solo per una parte dei nominativi che ho selezionato creandomi una Query apposita.
  • Re: Stampare singolo report

    TRINACRIA FELIX ha scritto:


    Per gli avvisi mi basta solo che funzionino soltanto al compimento dei 32 e 39 anni solo per una parte dei nominativi che ho selezionato creandomi una Query apposita.
    Quindi dobbiamo risolvere soltanto questo enigma?
    Perdona l'ignoranza nel settore. Io immagino che una Persona quando compie 32 anni, gli viene messa "1 stelletta", quando compie 39 gli vengono messe "2 stellette". Io parlo di stellette, ma intendo dire che occorre mettere un segno di spunta su un particolare campo Sì/No. Quando queste stellette vengono attribuite, tu devi metterci un segnale da qualche parte del tipo "Tizio OK per 32", mentre Caio che ha 39 anni deve avere OK 1 stelletta e OK 2 stellette.
    Domanda: Premesso che tu hai già creato la query che filtra le opportune Persone, può capitare che una Persona al compimento di 32 anni non riceva OK32, mentre lo riceve a 39?

    A prescindere dalla mia ultima domanda, credo di aver individuato alcune espressioni chiave che dovrebbero risolvere i tuoi calcoli. Parto dal presupposto che andrebbero aggiunti in maschera (e anche in tabella) due campi Sì/No "OK32" e "OK39". Poi considera le seguenti sintassi:
    Date() significa la Data Odierna
    [DataNascita] significa ovviamente la Data di Nascita
    DateAdd("yyyy";+32;[DataNascita])
    calcola la data 32 anni in avanti rispetto alla DataNascita
    analogamente
    DateAdd("yyyy";+39;[DataNascita])
    calcola la data 39 anni in avanti rispetto alla DataNascita

    l'espressione:
    [Maschere]![NomeMaschera]![OK32]=Falso
    significa che tu non hai messo il segno di spunta sul campo OK32 perchè la Persona non ha ancora compito i 32 anni oppure perchè tu lo hai dimenticato di fare.

    Non so se sai usare le condizioni nelle macro oppure utilizzi direttamente il Visual Basic. Io me la cavo nel primo caso e immagino che occorre applicare una condizione con la seguente sintassi:
    Date()>=DateAdd("yyyy";+32;[DataNascita]) And [Maschere]![NomeMaschera]![OK32]=Falso

    Forse ho confuso le idee, ma spero di averti dato alcune imbeccate utili per proseguire "logicamente".
  • Re: Stampare singolo report

    Rispondo alla tua domanda. Effettivamente con la Query che ho creato si genera un'unico elenco che non fa distinzioni tra i nominativi di coloro che dovranno essere selezionati in base al compimento dei 32 o dei 39 anni. Apporterò le modifiche che mi hai suggerito creando due campi SI/NO OK32 e OK39.
    Per le macro l'unica che sono riuscito a creare è grazie al tuo precedentemente suggerimento per la stampa del singolo report!
    In seguito ti terrò aggiornato su come procede questa modifica (tra due giorni andrò in ferie) e vedremo cosa ne verrà fuori!
    Grazie per i suggerimenti e per la tua fattiva collaborazione!
  • Re: Stampare singolo report

    Buon giorno a tutti! Rieccomi a richiedere il vostro prezioso aiuto!
    1) Allora, per migliorare la funzionalità del database ho la necessità che mi compaia un allarme (o qualsiasi altro avviso) che mi indichi i nominativi del personale inserito quando una parte di essi arriva al compimento dei 32 anni e un'altra parte al compimento dei 39 anni.
    Ho creato due query che mi consentono con due caselle di controllo SI/NO di suddividere, all'atto dell'inserimento dei dati generali,i nominativi selezionati che devono essere trattati successivamente al compimento dei 32 anni e quelli ai 39 anni.
    2) Esiste la possibilità in un report di poter visualizzare, a fini statistici, il numero di record inseriti?
    Grazie!
Devi accedere o registrarti per scrivere nel forum
29 risposte