Tante query, un solo report

di il
10 risposte

Tante query, un solo report

Buona sera,
sto creando un database access basato su una serie di dati statistici che vengono elaborati da delle query e visualizzati e stampati attraverso dei report. Dal momento che ad ogni mio cliente sono associate una quantità enorme di query, ma mi occorre comunque stampare solo un report collegato ad una sola query alla volta, la mia domanda è questa: devo obbligatoriamete creare un report per ogni query o è possibile avere un solo report e tramite un codice/macro/ecc collegare la query che mi serve momentaneamente a quell'unico report? Il mio scopo alla fin fine è visualizzare temporaneamene tale report con dei dati estrapolati da una query e stampare. Fine.
Se fosse una cosa possibile da realizzare, risparmierei davvero moltissimo tempo (anche perche se vorrò fare una modifica a tale report sarò obbligato a ripetere la modifica in tutti i report!)... come se a comando potessi decidere quale "anima" (query) debba entrare in quell'unico "corpo" (report) così che possa stamparlo.
Spero di essere stato abbastanza chiaro,
Ringrazio per la possibilità di porre tale domanda,

Un saluto

jibi

10 Risposte

  • Re: Tante query, un solo report

    La domanda si presta ad interpretazioni ambigue ....

    Se hai (vuoi) ottenere un solo report ma hai molte query io penso (magari sbagliando) che l' output delle query è lo stesso (inteso come campi non ovviamente come dati) : se questo è lo scenario ti basta agire sulla proprietà origine report.

    Se non è questo lo scenario, descrivi meglio il problema .....

    P.S. - Se hai molte query con dati non omogenei (campi diversi) mi sembra difficile poter immaginare un unico report.
  • Re: Tante query, un solo report

    Sì, hai ragione, devo spiegarmi meglio. Ho un certo numero di clienti. Per ogni cliente devo costruire varie tabelle e di conseguenza varie query che ognuna mi rende certi valori... talvolta il clinete x mi chiederà una certa cosa (e gliela stampo), talvolta un'altra (e gliela stampo)... ma tutti questi dati provengono da sue tabelle personali.ùIl problema è altro: dato che alla fin fine, possono cambiare i dati e i clienti, ma il layout del report finale che verrà stampato è sempre lo stesso.... è possibile creare un solo report e all'occorrenza farci comparire dati provenienti da una certa query, così da poterlo stampare?
    Non vorrei avere un solo report che pesca dati da più query, ma un solo report che pesca solo da una sola query, che all'occorenza sarà la query "a" o la query "b", a seconda di ciò che ho bisogno di stampare in quel momento.

    Spero di essere stato più chiaro

    Ringrazio max per la sua disponibilità
  • Re: Tante query, un solo report

    Non sei stato particolarmente più chiaro .... provo a dire io.

    Hai un report con un certo layout e quindi con un certo numero di campi.
    Questo report si basa su una query (che restituisce i campi che servono al report).

    Da qui in avanti io vedo i seguenti scenari :
    Busta a) - hai n° query che producono in output i campi presenti nel report (con gli stessi nomi che servono al report per essere più precisi);
    Busta b) - hai una tabella temporanea riempita di volta in volta dalle n° query, e poi hai una sola query (sulla tabella temporanea) usata come origine report;
    busta c) - altro;

    Quale delle 3 buste scegli ?
  • Re: Tante query, un solo report

    Putroppo scelgo C...
    Provo a rifare chiarezza e ringrazio per l'attenzione ricevuta.
    Metti caso che il mio cliente viene da me tutti gli anni e mi consegna ogni anno dei dati, quindi per ogni cliente ci sarà la tabella "2016", 2017, 2018 ecc.. per ogni tabella ho costruito una e una sola query che mi svolga certi calcoli prendedno i dati solo da una tabella (es. La query "2016" prende i dati dalla tabella 2016). Tali calcoli li voglio poi stampare, quindi ho costruito un report, che prende i dati (i calcoli) solo da una query, me li fa vedere e li stampo. Dovrei quindi fare un report per ogni query che ho costruito. Quello che chiedo è: è possibile evitare di creare tanti report quante sono le query, ma avere un solo report, che all occorrenza mi prenda e mi faccia visualizzare i dati della query 2016, oppure un'altra volta quelli della query 2017 ecc... ? La mia esigenza sarebbe quella di evitare di creare una caterva di report tutti uguali fra loro che si differenziano solo nella sorgente dei dati, perche uno magari va a pescare dalla query 2016 del cliente x, e un altro pesca dalla query 2017 del cliente x.... ma a parte i dati, i report sarebbero identici come layout.
    A tal proposito chiedevo se esistesse qualche codice (o espedienti) in grado di aiutarmi.

    NB: tutti i campi di tutte le tabelle sono uguali. I campi delle query sono uguali in tutte le query e in tutti i report che vorrei evitare di creare.

    Ringrazio nuovamente per l attenzione ricevuta e mi scuso per la mia incompetenza
  • Re: Tante query, un solo report

    jibi ha scritto:


    Putroppo scelgo C...
    Provo a rifare chiarezza e ringrazio per l'attenzione ricevuta.
    Metti caso che il mio cliente viene da me tutti gli anni e mi consegna ogni anno dei dati, quindi per ogni cliente ci sarà la tabella "2016", 2017, 2018 ecc.. per ogni tabella ho costruito una e una sola query che mi svolga certi calcoli prendedno i dati solo da una tabella (es. La query "2016" prende i dati dalla tabella 2016). Tali calcoli li voglio poi stampare, quindi ho costruito un report, che prende i dati (i calcoli) solo da una query, me li fa vedere e li stampo. Dovrei quindi fare un report per ogni query che ho costruito. Quello che chiedo è: è possibile evitare di creare tanti report quante sono le query, ma avere un solo report, che all occorrenza mi prenda e mi faccia visualizzare i dati della query 2016, oppure un'altra volta quelli della query 2017 ecc... ? La mia esigenza sarebbe quella di evitare di creare una caterva di report tutti uguali fra loro che si differenziano solo nella sorgente dei dati, perche uno magari va a pescare dalla query 2016 del cliente x, e un altro pesca dalla query 2017 del cliente x.... ma a parte i dati, i report sarebbero identici come layout.
    A tal proposito chiedevo se esistesse qualche codice (o espedienti) in grado di aiutarmi.

    NB: tutti i campi di tutte le tabelle sono uguali. I campi delle query sono uguali in tutte le query e in tutti i report che vorrei evitare di creare.

    Ringrazio nuovamente per l attenzione ricevuta e mi scuso per la mia incompetenza
    Purtroppo hai scelto la d .... come database NON normalizzato.
    Analizza quanto segue :
    - un tuo ipotetico cliente, ogni anno ti porta dei dati, sempre gli stessi dati (inteso come campi NON come valori) : che motivo hai per avere tabelle diverse (annuali) ? NESSUNO
    - i dati che ti portano i tuoi Clienti sono tra loro omogenei (ovvero usi gli stessi campi ma con valori diversi) : che motivo hai per avere tabelle diverse (Cliente/Anno) ? NESSUNO

    Quindi la soluzione del tuo problema NON è far in modo di avere un solo report con n-mila query da n-mila tabelle (uguali) ma avere una sola tabella dalla quale estrarre i dati usando un filtro (Cliente+Anno) e riempire il report .....

    Altre soluzioni, magari praticabili con una discreta dose di lavoro / conoscenza del prodotto (Access) non hanno senso (per me) e quindi evito di proporle. Permettimi di pensare (magari sbagliando) che, se quanto da me descritto rappresenta lo scenario del tuo db, le tue conoscenze (attuali) non sono tali da affrontare un impegno con codice vba.
    Ripeto, a scanso di equivoci, il tuo problema va risolto dalla testa (le tabelle) e non dalla coda (i report)

    Ovviamente, se non è questo lo scenario, aggiungi ulteriori info (e magari motiva eventuali scelte progettuali) ....
  • Re: Tante query, un solo report

    Capisco ed accolgo il tuo consiglio, ma purtroppo non posso ridurre il numero di tabelle nè quello delle query. Primo ho spiegato in modo semplicistico come ho impostato tabelle e query, e in effetti da come l avevo spiegata era logico pensare di ridurre il numero delle tabelle. Il fatto è che ogni cliente mi porta annualmente centinaia di misurazioni effettuate con strumenti diversi e in condizioni diverse, con molti altri dati che non sto a elencare: tutto ciò sarebbe incompatibile con l esistenza di un minor numero di tabelle e query. Ho gia provato a ridurne di numero, ma se avessi la possibilità di fornire più indicazioni circa il tipo di operato che sto svolgendo (mi è stato impedito dal momento che tale database lo faccio in segreto), credo concorderesti con me nell accettare l esistenza di quella quantità di oggetti.
    Capisco che è necessaria una conoscienza più che discreta di VB, infarti credo proprio che mi rassegnerò all idea di dover creare tanti report.
    Ti ringrazio ancira una volta per l attenzione dedicatami
  • Re: Tante query, un solo report

    jibi ha scritto:


    Capisco ed accolgo il tuo consiglio, ma purtroppo non posso ridurre il numero di tabelle nè quello delle query. Primo ho spiegato in modo semplicistico come ho impostato tabelle e query, e in effetti da come l avevo spiegata era logico pensare di ridurre il numero delle tabelle. Il fatto è che ogni cliente mi porta annualmente centinaia di misurazioni effettuate con strumenti diversi e in condizioni diverse, con molti altri dati che non sto a elencare: tutto ciò sarebbe incompatibile con l esistenza di un minor numero di tabelle e query. Ho gia provato a ridurne di numero, ma se avessi la possibilità di fornire più indicazioni circa il tipo di operato che sto svolgendo (mi è stato impedito dal momento che tale database lo faccio in segreto), credo concorderesti con me nell accettare l esistenza di quella quantità di oggetti.
    Capisco che è necessaria una conoscienza più che discreta di VB, infarti credo proprio che mi rassegnerò all idea di dover creare tanti report.
    Ti ringrazio ancira una volta per l attenzione dedicatami
    Mi spiace che, per motivi di riservatezza, tu non possa fornire maggiori indicazioni .....di fatto ti precludi la possibilità che qualcuno possa darti ulteriori consigli.

    Aggiungo che, nel mio settore lavorativo, ho a che fare con molte misure fatte da molti strumenti (nostri e non) nei posti più disparati e che casualmente l' applicativo che permette di gestire le scadenze, le manutenzione e le certificazioni/tarature raccoglie tutti questi dati senza la necessità di avere un modello dei dati denormalizzato come il tuo (che oserei dire un modello alla Excel).
    Alla fine,a prescindere dal Cliente, dal periodo temporale , e dallo strumento l' applicativo genera solo 3 report : il report di verifica di taratura, l' etichetta da attaccare sullo strumento, l' elenco degli strumenti verificati .....
  • Re: Tante query, un solo report

    La soluzione potrebbe essere quella di abbinare al report una query fittizia e modificare il codice sql in essa contenuto tramite vba prima di aprire il report.
    esempio creo una query e la chiamo QRY_REPORT
    prima di aprire il report cambio il codice sql di QRY_REPORT
    poi apro il report

    esempio:

    dim vSql as string
    vSql = "Select * From " & nomedellaquery da utilizzare
    CurrentDb.QueryDefs("QRY_REPORT").SQL = vSql
    DoCmd.OpenReport "NomeReport", acViewPreview
  • Re: Tante query, un solo report

    andreacesena ha scritto:


    La soluzione potrebbe essere quella di abbinare al report una query fittizia e modificare il codice sql in essa contenuto tramite vba prima di aprire il report.
    esempio creo una query e la chiamo QRY_REPORT
    prima di aprire il report cambio il codice sql di QRY_REPORT
    poi apro il report

    esempio:
    
    dim vSql as string
    vSql = "Select * From " & nomedellaquery da utilizzare
    CurrentDb.QueryDefs("QRY_REPORT").SQL = vSql 
    DoCmd.OpenReport "NomeReport", acViewPreview
    E' un' altra soluzione applicabile (oltre a cambiare direttamente l'origine del report oppure appoggiarsi ad una tabella temporanea) ....
  • Re: Tante query, un solo report

    Grazie mille ad entrambi. Prenderò entrambi i vostri consigli! Grazie mille davvero

    Jibi
Devi accedere o registrarti per scrivere nel forum
10 risposte