Aprire un report generato dall'unione di altri report

di
Anonimizzato12132
il
12 risposte

Aprire un report generato dall'unione di altri report

Salve a tutti,
Come prima cosa mi scuso a priori, perché è la prima volta che utilizzo un forum di qualsiasi genere e ho il timore che farò degli sbagli!
Sono neofita anche di access.
Ho creato un report, unendo i dati di 3 report diversi, derivanti da altrettante 3 query, tutte contenenti come parametro da inserire il mese.
Mi sono accorta che i dati del report complessivo si vedono solo se i 3 report fonte sono aperti. Ho creato un tasto che tramite macro mi apre tutti e 4 insieme, ma mi viene chiesto per 3 volte di inserire il parametro. Ho visto che la soluzione può essere utilizzare la funzione WHERE, ma non riesco a capire come.
Ho sbagliato progettazione? Nel caso avessi fatto bene, mi potete dare un consiglio su come riuscire ad aprire il report complessivo senza problemi?

Grazie Silvia
[/color]

12 Risposte

  • Re: Aprire un report generato dall'unione di altri report

    Il fatto che ti si aprono finestre di richiesta parametro, mi sembra ovvio visto che i report poggiano su query con parametri.
    L'unione di 3 report in uno solo, detto così a crudo, può dire tutto e niente. Dovresti raccontare un po' di strutture tabelle ed eventuali relazioni per capire cosa vuoi veramente realizzare.
  • Re: Aprire un report generato dall'unione di altri report

    Intanto Grazie!
    Ora provo a spiegarmi meglio:
    Io ho un'unica tabella e ho fatto 3 query diverse che poggiano su questa tabella e che hanno una sola cosa in comune la richiesta di quale mese considerare. Dalle query ho tirato fuori 3 report diversi, che oltre hai dati contengono dei calcoli riferiti ai dati. i risultati dei calcoli di tutti e 3 i report li ho poi utilizzati per fare un report finale in cui li ho utilizzati per fare altri calcoli. Così l'utente se vuole solo una parte dei dati apre un report se invece vuole il resoconto finale apre l'ultimo report.
    Mi sono spiegata meglio?!
    Se hai bisogno vado proprio nel dettaglio.
    Io credo che si possa fare anche tutto con una query sola, ma per me le mie capacità attuali mi sembrava più difficile.

    Grazie ancora dell'aiuto.
  • Re: Aprire un report generato dall'unione di altri report

    Sì, abbiamo bisogno di tutti i dettagli. Il discorso risolutivo può prendere una piega in un senso, oppure in un altro.
  • Re: Aprire un report generato dall'unione di altri report

    Va bene allora andrò nel dettaglio.
    Ho una tabella iniziale contenente:ID; Data; Nome; Socio;Servizio1; Servizio2; Servizio3; Metodo di pagamento 1; Metodo di p. 2; Metodo di p.3; Metodo di p.4; Gara; Codice Gara; Iscrizione.
    I servizi costano tutti uguali, ma variano se sei socio o meno;
    I metodi di pagamento sono a discrezione di chi usufruisce del servizio;
    Il prezzo del servizio se si tratta di una gara è più alto;
    In più che un costo di iscrizione che varia a secondo della gara individuata da un Codice.

    Io devo fornire un resoconto mensile di tutto, sia delle entrate sia delle tipologie di servizio sia del materiale consumato.

    Con il report della prima query riesco ad ottenere i servizi resi mensilmente e il materiale consumato il parametro da cercare è il mese. Ho fatto un report che mi rende tutti i mesi dell'anno ma non riesco ad ordinare i mesi per data, ma me li ordina sono per lettera.

    Con il report della seconda query riesco a fare un totale delle entrate dei servizi di prova. Sempre con il parametro mese da cercare; qui il problema oltre al mancato ordinamento dei mesi non mi funziona neanche l'istruzione iif che ho creato:

    =Somma(IIf([Data]<#01/07/2012#;(IIf([SocioCampo]=Vero;([Somma di Medaglia]+[Somma di Contanti])*6;([Somma di Medaglia]+[Somma di Contanti])*6,5));([Somma di Medaglia]+[Somma di Contanti])*7))

    Mi chiede la data.

    Con il terzo report ottengo i dati e i totali riguardo ai servizi se sono usufruiti in una gara divisi per gara e per mese. Stesso problema l'IIf che non funziona:

    =Somma(IIf([Data]<#01/07/2012#;([Somma di Gara]*6,5));([Somma di Gara])*7)

    Il quarto report contiene dati presi dai primi tre con ulteriori calcoli, con quello non ho problemi se non quando lo vado ad aprire, perchè gli altri tre devo essere aperti per aprirli devo inserire tre volte lo stesso parametro.

    Mentre lo scrivevo mi è venuto in mente un'idea banale per risolvere l'ultimo problema ora vedo se funziona.

    Spero che la mia spiegazione vada bene.

    Grazie
  • Re: Aprire un report generato dall'unione di altri report

    Non funziona!!!
  • Re: Aprire un report generato dall'unione di altri report

    Hai un problema di impostazione campi alla base che ti impedisce di sfruttare al meglio il tuo database.
    Ci hai raccontato di una sola tabella. Tale tabella ha dei campi ridondanti che non ha senso averli così. Access offre la possibilità di strutturare tutto su più tabelle relazionate. Si tratta di un lavoro relativamente fastidioso all'inizio se non si hanno buone basi, ma stai certa che il tutto ti tornerà utile poi, permettendo a te e ad Access stesso di lavorare in maniera più veloce e coerente.
    Cerchiamo passo passo di venire incontro ai tuoi problemi, occorre una descrizione dei singoli campi non ancora del tutto sufficiente. Abbiamo bisogno di sapere che tipo di dati sono, ma soprattutto a che cosa servono. Ti sembrerà strano, ma spesso si fa prima a descrivere il problema e poi a impostare una struttura di tabelle relazionate.
    Di cosa si occupa il tuo database? È un club di sportivi? Questi sportivi si iscrivono e gareggiano?
  • Re: Aprire un report generato dall'unione di altri report

    Ciao.

    Per quanto riguarda il fatto che l'ultimo report funziona solo se gli altri sono aperti, sicuramente deriva dal fatto che per generarlo, hai fatto riferimento ai nomi dei controlli dei tre precedenti report da te creati, infatti, suppongo, che tentando di aprire l'ultimo report senza i precedenti aperti, ti chiede tutti i campi.

    Comunque, come dice osvaldo, bisogna riprogettare interamente il database.

    Partiamo ancora più a monte di quello chiesto da osvaldo.
    Fai finta di avere il cartaceo e di doverlo riempire e facci vedere come lo riempiresti.
    Da qui inizieremo a ragionare su quello che ti serve, come strutturalo, le tabelle e relazioni necessarie e sopratutto, ci servirà per creare i report.
  • Re: Aprire un report generato dall'unione di altri report

    Il database che sto provando a fare serve per gestire un tiro a volo.
    Tabella principale:
    Campo 1:ID
    Campo 2:Data
    Campo 3:Cognome
    Campo 4:Nome
    Campo 5:Fossa (Specialità, Valori 1 se scelta e 0 se non scelta)
    Campo 6:Skeet( Specialità, Valori 1 se scelta e 0 se non scelta)
    Campo 7:Percorso (Specialità, Valori 1 se scelta e 0 se non scelta)
    Campo 8:Gettone (Pagamento, Valori 1 se scelta e 0 se non scelta)
    Campo 9:Contanti (Pagamento, Valori 1 se scelta e 0 se non scelta)
    Campo 10: Tessera1 (Pagamento, Valori 1 se scelta e 0 se non scelta)
    Campo 11: Tessera2 (Pagamento, Valori 1 se scelta e 0 se non scelta)
    Campo 12:Gara (Valori 1 se scelta e 0 se non scelta)
    Campo 13:Cod.Gara (Cod. numerico correlato univocamente con un altra tabella contenente tutti i dati della Gara).
    Tabella Gare:
    Contiene tutti i dati delle Gare e grazie al collegamento con la prima tabella posso avere anche la lista delle serie sparate per ogni gara senza fare query.
    Tabella Soci:
    Contiene i dati dei soci
    Tabella Servizi:
    Contiene i prezzi dei servizi
    Questi due ultime tabelle non riesco a collegarle con la tabella principale.
    Indubbiamente non ho capito bene come si fanno i collegamenti.

    Nel report avrei bisogno di (io li ho fatti separati ma va bene anche insieme):
    -Il totale delle persone che hanno sparato (divise per mese e per socio).
    -Il totale delle specialità scelte (divise per mese, specialità e per socio).
    -Il totale dei entrate (divisi per mese, per pagamenti, per gara)
    -il totale dei piattelli sparati.

    Fin qui ci sono arrivata da sola, sia per report mensili che quelli annuali (con richiesta di parametro all'apertura). Ma nei report annuali i mesi sono ordinati per ordine alfabetico e poi non riesco a gestire il totale delle entrate:
    fino a luglio 2012 i soci pagavano 6€, i non soci 6,5€ e le gare erano a 6,5€ per tutti; da luglio 2012 le gare sono passate a 7€ per tutti; e da febbraio 2013 è tutto a 7€.

    Nel mio data base ci sono anche maschere, maschere di accesso ad altre maschere, query varie, report vari, su cui non ho problemi quindi non vi tedio oltre.

    Grazie Silvia
  • Re: Aprire un report generato dall'unione di altri report

    Ciao.

    Sinceramente preferivo vedere un esempio di foglio cartaceo e vedere come veiva compilato.

    comunque. Da quello che vedo io lo strutturerei in modo diverso.
    Ora io ti faccio un esempio che non è ottimale per un database relazionale, perchè si basa su una unica tabella, e quindi crea dei dati ridondanti, ma per il momento, per capire quello che voglio spiegare, va più che bene.
    Allora io raggrupperei alcuni campi
    Campo 1:ID
    Campo 2:Data
    Campo 3:Cognome
    Campo 4:Nome
    Campo 5:Specialità
    Campo6:pagamento
    Campo7:Tessera
    Campo8: Gara
    campo9: Collegamento allo tabella dei dati relativi alla gara in questione.

    Questo è solo uno schema logico. Per avere un database ottimale e cioè senza dati ridondanti devi collegare le tabelle dei dati anagrafici e dei servizi, ma per fare questo, praticamente nella tabella sopra esposta devi avere:
    campo1: Id univoco della tabella.
    Campo2:id della tessera, da cui ricavi tutti i dati necessari, nome cognome etc etc
    campo3:id univoco della specilità.
    Campo4:id univoco della gara
    Inoltre, da come lo hai già strutturato, un campo data deve essere inserito anche nella tabella gara, visto che praticamente tu hai creato una cosa simile ad una scheda cartacea, dove:
    l'intestazione è sempre la stessa (dati del socio)
    e sotto, immetti i dati delle gare con i relativi dati.
    Ora, tutte le gare risultano disputate nella data che hai messo nella tabella principale dell'associato, che di solito coincide con la data di iscrizione, quindi ti risulterà praticamente impossibile riuscire a creare una query che ti raggruppi correttamente i dati della gara disputata, perchè effettivamente non hai il campo al quale fare riferimento ed ecco spiegato l'arcano perchè quando interroghi il database con una query basata su un raggruppamento della data, ti viene chiesto di immettere il valore della data.

    Nella tabella anagrafe, penso che potresti usare come campo di collegamento la tessera del socio, visto che dovrebbe essere univoca, cioè anche fra 100 anni, il codice di una tessera non sarà ripetuto e per il resto crei un collegamento con una chiave id univoco.
  • Re: Aprire un report generato dall'unione di altri report

    Caro MyPipe,
    Scusa ma quando parlavi di cartaceo, non pensavo intendessi dire proprio su carta, ma come avevo impostato io il database.

    Ho analizzato bene la risposta che mi hai dato e mi sono resa conto che non mi sono spiegata affatto bene nel mio post precedente.

    Ok per riunire i dati ridondanti e fare tabelle con i codici univoci.

    Per quanto riguarda quelle che io chiamo tessere, si tratta di tessere sconto non ti tessere socio, quindi le raggruppo insieme agli altri pagamenti.

    Comunque la tabella socio c'è, ma non si può utilizzare il campo univoco del numero della tessera, perché in un anno i soci se arrivano a 15 è tanto, il resto non sono soci e saranno a centinaia di cui al massimo dispongo del Nome e Cognome.

    Per quanto riguarda i dati della gara, non ho problemi l'ho impostata giusta (anzi non ho quei problemi che mi dici tu, impostata giusta è un parolone).

    Nei miei report io ho i dati di tutti i parteciparti insieme, mi interessa solo sapere, i totale delle specialità scelte e se sono state scelte in generale,dai soci o dai non soci, non dalla persona specifica. Se è stato preferito un tipo di pagamento rispetto ad un altro, sempre suddiviso tra soci e non soci, e le entrate di denaro (tra prove e gare) e le uscite di piattelli totali.
    I report io li ho già fatti e le unica cosa che non mi torna è fare i calcoli quando i prezzi cambiano con la funzione IFF:
    (fino a luglio 2012 i soci pagavano 6€, i non soci 6,5€ e le gare erano a 6,5€ per tutti; da luglio 2012 le gare sono passate a 7€ per tutti; e da febbraio 2013 è tutto a 7€)
    =Somma(IIf([Data]<#01/07/2012#;(IIf([SocioCampo]=Vero;([Somma di Medaglia]+[Somma di Contanti])*6;([Somma di Medaglia]+[Somma di Contanti])*6,5));([Somma di Medaglia]+[Somma di Contanti])*7))

    E far si che il report finale, il 4° con l'unione di tutti gli altri, possa aprirsi senza farmi aprire gli altri o per lo meno che si apra chiedendomi l'inserimento del parametro una volta sola.
    Questo perché ancora non conosco bene i comandi delle funzioni, le macro o il linguaggio SQL.

    Grazie Silvia
  • Re: Aprire un report generato dall'unione di altri report

    Ho cambiato il mio database.
    Ora ho bisogno di sapere come fare a ordinare la mia query e di conseguenza il mio report, ordinato per mese, in ordine cronologico e non in ordine alfabetico.

    Grazie
  • Re: Aprire un report generato dall'unione di altri report

    Nella query cambia la colonna dove hai impostato l'ordinamento, togli Ordinamento Crescente dal campo testo e mettilo nella colonna Data.
    Se il report che avevi non risponde alla stessa domanda della query cambiata, costruiscine uno nuovo sulla nuova query.
Devi accedere o registrarti per scrivere nel forum
12 risposte