Contare quante occorrenze si ripetono in un campo

di il
25 risposte

Contare quante occorrenze si ripetono in un campo

Ciao a tutti, ho creato una maschera basata su una tabella 'Tesserati' dove vengono registrati i tesserati di un'associazione continuando per tutti gli anni a venire. Nella maschera esiste un campo 'Now' cosicchè ogni volta che registro un nuovo tesserato automaticamente mi registra anche data e ora e poi un campo 'Anno' che estrae l'anno dal campo precedente, ho la necessità di contare quanti tesserati ci sono con il campo Anno uguale (quanti sono i tesserati per l'anno evidenziato) ed evidenziarlo in un campo che chiamerò 'TotaleTessere'. Ho creato una query automatica di valori duplicati e se la eseguo mi appaiono due campi 'AnnoTesseratiCampo' 2014 2015 e 'NumDuplicati' rispettivamente 56 2. Nel campo 'TotaleTessere' nell'origine controllo ho scritto la seguente espressione =DCount("*";"mia query") e la risposta nel campo 'TotaleTessere' è 2 sia quando sono con la maschera in un record che evidenzia 'Anno' 2015 che 2014. E' chiaro che manca l'impostazione riferita a quale anno deve essere preso di riferimento per evidenziare i duplicati ovvero il riferimento che deve essere letto direttamente dal campo 'Anno' della maschera. Come devo fare?

25 Risposte

  • Re: Contare quante occorrenze si ripetono in un campo

    alex25.01 ha scritto:


    un campo 'Anno' che estrae dal campo precedente l'anno
    Forse hai usato un campo calcolato che fa questo. Direi però che ciò è superfluo, anzi, per i puristi di Access, una contraddizione. L'estrazione di un Anno da una Data si fa con una query sfruttando l'espressione Year([NomeCampoData]). Quello che hai fatto è una inutile ridondanza.

    ...vorrei risponderti correttamente, ma se ci dici un po' di nomi campi (quelli che servono), faciliti la descrizione. Potresti elencare tutti i campi della tabella Tesserati?
  • Re: Contare quante occorrenze si ripetono in un campo

    Hai ragione per l'Anno ma considera che il campo mi occorre principalmente per farlo apparire nella maschera così: 'IDTesserato' / 'Anno' cosicchè posso mantenere un conteggio continuo del numero tessere. La maschera 'Tesserati' oltre a quelli citati ha i seguenti campi: 'Cognome' 'Nome' 'Sesso' 'DataRegistrazione' 'TotaleTessere' 'PaeseNascita' 'DataNascita' 'email' 'CodiceFiscale' 'Indirizzo' 'Città' 'CAP' 'Provincia' 'Stato' 'TelDomicilio' 'Cellulare' 'Note'
    .....e tasto 'Trova'
  • Re: Contare quante occorrenze si ripetono in un campo

    alex25.01 ha scritto:


    l'Anno mi occorre principalmente per farlo apparire nella maschera così
    In maschera il discorso è diverso. Devi sapere che in tabella i campi devono esprimere valori i più rozzi ed essenziali possibile, quelli cioè che solo l'utente può indicare grazie alla digitazione. Un campo calcolato non deve risiedere in tabella.
    Le maschere invece hanno un sacco di controlli con mille proprietà ed è possibile sfruttare espressioni per fare quello che hai chiesto. Quindi in maschera (visualizzazione struttura) devi aggiungere una casella di testo "libera" (cioè non associata ad alcun campo della tabella) dove dentro ci scrivi:
    =Year([DataRegistrazione])

    Stesso discorso vale per il campo TotaleTessere. Non è un campo strettamente legato a un singolo tesserato quindi non ha alcun senso metterlo in tabella. In maschera aggiungi un'altra casella di testo non associata e dentro ci scrivi:
    =DCount("*";"Tesserati")
  • Re: Contare quante occorrenze si ripetono in un campo

    Capisco quello che dici e ti ringrazio del chiarimento. Non conoscendo bene ho inserito "Anno" in tabella per contare poi quante occorrenze (numero di tessere) di quell'anno ci saranno eseguendo la query... non capisco se come mi dici vado ad inserire nel campo TotaleTessere =DCount("*";"Tesserati") il risultato è #Errore e comunque immaginavo che non sarebbe stato di tutte le occorrenze dell'anno specificato nella maschera in questo momento perchè non c'è riferimento all'anno! Così come avevo specificato all'inizio (per esempio ho 55 record 2014 e 2 record 2015)
  • Re: Contare quante occorrenze si ripetono in un campo

    Sì è vero, non ho risposto alla domanda, ma non l'ho capita al 100%. Potresti elencare un po' di valori di record nella maschera e dire esattamente cosa vuoi vedere?
  • Re: Contare quante occorrenze si ripetono in un campo

    Non so se sono riuscito a spiegare bene la query che ho fatto (Trova_duplicati_per_Tesserati) dove dicevo che mi appaiono due campi con due record e cioè 'AnnoTesseratiCampo' 2014 2015 e 'NumDuplicati' rispettivamente 55 2 ovvero per l'anno 2014 ho 55 record e per l'anno 2015 ho 2 record. Quindi io dovrei fare apparire nel campo 'TotaleTessere' della maschera quanti sono i record che contengono 2014 nel campo 'AnnoTesserati' (visto che ora sono in un record che mi fa apparire nel campo 'AnnoTesserati' il 2014) ovvero 55, mentre se vado in un record che contiene 2015 nel campo 'AnnoTesserati' nel campo 'TotaleTessere' dovrebbe apparire 2. (ovviamente i due record 2015 li ho creati portando l'orologio ad un anno dopo, forse sarebbe stato più coerente portarlo ad un anno prima, ma il risultato non cambia)
  • Re: Contare quante occorrenze si ripetono in un campo

    In pratica dovrei fare apparire il valore del campo 'NumDuplicati' della query corrispondente al record dove 'AnnoTesseratiCampo' è = 'AnnoTesserati' della maschera in questo momento... insomma deve prelevare il valore 'AnnoTesserati' del record che è selezionato al momento, e quindi se andassi al record del 2015 allora dovrebbe prelevare questo valore dal campo 'AnnoTesserati' e darmi il totale dei record 2015.
  • Re: Contare quante occorrenze si ripetono in un campo

    Riscrivo tutto da capo usando le seguenti terminologie. La maschera si chiama Tesserati e poggia sull'omonima tabella Tesserati. Il campo Data si chiama [DataRegistrazione] sia in tabella, sia in maschera.
    1. Vai in visualizzazione struttura maschera Tesserati
    2. Crea 2 caselle di testo non associate alle quali devi imporre le seguenti proprietà:
    Nome controllo: Anno
    Nome controllo: TotaleAnno
    3. Alla casella di testo [Anno] devi scrivere la seguente espressione dentro la proprietà Origine controllo:
    =Year([DataRegistrazione])
    4. Crea una query in visualizzazione struttura dove importi la tabella Tesserati e trascini dentro il campo DataRegistrazione
    5. Nella colonna successiva della griglia di struttura query, scrivi sul primo rigo in alto:
    Anno: =Year([DataRegistrazione])
    6. Salva la query con nome Anni
    7. Ritorna nella visualizzazione struttura maschera Tesserati e clicca col mouse destro dentro il controllo TotaleAnno e scegli Proprietà:
    Origine controllo: =DCount("[Anno]";"Anni";"[Anno]=[Maschere]![Tesserati]![Anno]")
    8. Salva tutto

    Ho fatto un test e funziona.
  • Re: Contare quante occorrenze si ripetono in un campo

    Bene! hai ragione, funziona. Unica cosa che vedo che impiega un pò di tempo per fare il conto e fare apparire il numero.... mi preoccupa il momento in cui ci saranno tanti record... per esempio una media di 1000 l'anno dopo 7 anni sono 7000 record ed ora ce ne sono solo 63 per prova! Ma noto anche un altro problema: apro la maschera e sono al nuovo record da inserire (ce ne sono già 66 e 52del2014) e torno indietro di un record mi segna 52del2014 ritorno all'ultimo record registrato e mi segna 52 se torno di due record indietro allora mi segna 53 poi vado di un record avanti e mi segna 52 poi ancora uno avanti (sarebbe l'ultimo scritto) ed ora segna 53, torno al penultimo e segna 52, se vado qualche record indietro e poi torno avanti allora anche il penultimo mi segna 53 ed è aggiornato (insomma non funziona bene!)
  • Re: Contare quante occorrenze si ripetono in un campo

    alex25.01 ha scritto:


    noto anche un altro problema: apro la maschera e sono al nuovo record da inserire (ce ne sono già 66 e 52del2014) e torno indietro di un record mi segna 52del2014 ritorno all'ultimo record registrato e mi segna 52 se torno di due record indietro allora mi segna 53 poi vado di un record avanti e mi segna 52 poi ancora uno avanti (sarebbe l'ultimo scritto) ed ora segna 53, torno al penultimo e segna 52, se vado qualche record indietro e poi torno avanti allora anche il penultimo mi segna 53 ed è aggiornato (insomma non funziona bene!)
    A me questo problema non lo ha fatto.

    alex25.01 ha scritto:


    Bene! hai ragione, funziona. Unica cosa che vedo che impiega un pò di tempo per fare il conto e fare apparire il numero.... mi preoccupa il momento in cui ci saranno tanti record... per esempio una media di 1000 l'anno dopo 7 anni sono 7000 record ed ora ce ne sono solo 63 per prova!
    Se devo proprio dire la mia, trovo inutile mettere quei due campi in maschera. Io sono per far lavorare gli oggetti per lo scopo principale per il quale sono stati progettati.
    Le tabelle sono i contenitori primordiali dei dati, quelli più indispensabili.
    Le maschere servono a rendere il look e l'input dati più comodo.
    Le query servono per porre domande al database.
  • Re: Contare quante occorrenze si ripetono in un campo

    Mi sento obbligato a farti vedere la maschera ed il report così posso essere più chiaro http://wikisend.com/download/197602/Maschera3.jp
    http://wikisend.com/download/648162/Libr Associati-esempio2.pdf
    per quanto riguarda l'anno (come dicevo) è importante visto che sono obbligato a creare dei numeri tessere che ogni anno non potranno iniziare da 1 e quindi dovranno avere un formato evidente dell'anno del tipo "Tessera N.1/2014" .... chiaramente il totale tessere per l'anno è una pura curiosità (ma che mi è stata comunque richiesta dal collega e ritenuta comunque interessante (considera che già mi ha chiesto, e questo è importante, di fare una maschera per interrogare in totale anni e totali, ed è come se l'avessi già fatta visto che ho quella query che mi calcola i duplicati e quindi mi dà su due campi anni e totali tutte le occorrenze distinte... anzi a questo proposito potrei creare una maschera che si attiva direttamente da questa e magari usare solo questa e togliere il campo totale tesserati, sarebbe comunque un impegno in più per la consultazione ma almeno non avrei il ritardo che sto accusando! ma anche qui dovrei capire come fare). Luogo e data di nascita hanno l'asterisco perchè non sono compilabili ma lo debbono essere automaticamente dal codice fiscale (vedrò poi come fare). Mentre invece CAP e Provincia sono compilabili ma con l'automatismo di compilazione automatica (prelevando dalla tabella 'tComuni' (anche questo vedrò come fare). Per queste ultime cose non potresti darmi anche il solo link di dove potrei trovare la soluzione?
  • Re: Contare quante occorrenze si ripetono in un campo

    alex25.01 ha scritto:


    "Tessera N.1/2014"
    Ti conviene tenerli su 2 campi separati. 2014 lo ricavi dalla formula Year che ti ho suggerito. Il numero purtroppo, non essendoci un meccanismo facile/valido/efficace, dovrai compilarlo a mano.

    alex25.01 ha scritto:


    il totale tessere per l'anno è una pura curiosità (ma che mi è stata comunque richiesta dal collega e ritenuta comunque interessante
    Usa una query.

    alex25.01 ha scritto:


    considera che già mi ha chiesto, e questo è importante, di fare una maschera per interrogare in totale anni e totali, ed è come se l'avessi già fatta visto che ho quella query che mi calcola i duplicati e quindi mi dà su due campi anni e totali tutte le occorrenze distinte
    Query.

    alex25.01 ha scritto:


    anzi a questo proposito potrei creare una maschera che si attiva direttamente da questa e magari usare solo questa e togliere il campo totale tesserati, sarebbe comunque un impegno in più per la consultazione ma almeno non avrei il ritardo che sto accusando! ma anche qui dovrei capire come fare)
    Per me questa è soltanto una delle innumerevoli domande che puoi porre al tuo database. Direi che non serve tenerla in maschera. In Access, quando scopri tutte queste potenzialità, l'appetito viene mangiando e magari ti può tornare più utile mettere in un cantuccio tutte le risposte di ogni singolo Tesserato per visualizzarle in un'unica query che richiamerai quando vuoi.

    alex25.01 ha scritto:


    Luogo e data di nascita hanno l'asterisco perchè non sono compilabili ma lo debbono essere automaticamente dal codice fiscale (vedrò poi come fare).
    Non ti consiglio di ragionare così. Per quanto un Codice Fiscale sia calcolabile nel 95% dei casi, si tratta pur sempre di un valore attribuito dal Ministero e come tale va preso in considerazione. Quindi devi sempre digitare DataNascita, ComuneNascita, CodiceFiscale.

    alex25.01 ha scritto:


    CAP e Provincia sono compilabili ma con l'automatismo di compilazione automatica (prelevando dalla tabella 'tComuni' (anche questo vedrò come fare)
    Se digiti in giro (non solo su questo forum) le parole chiave "caselle combinate a cascata" troverai un documento dell'utente @Alex (Alessandro Baraldi) il quale ha creato un database di esempio dove prelevare tutti i Comuni d'Italia associati ai rispettivi CAP, Provincia e Regione. La tabella Comuni risulta molto comoda per la digitazione immediata del Comune con casella combinata.
  • Re: Contare quante occorrenze si ripetono in un campo

    Per quanto riguarda il numero tessera l'ho collegato all'ID e quindi è univoco e progressivo secondo quello che ti ho detto poc'anzi visto il fatto che è importante che il db tesserati debba contenere tutti i dati di tutti gli anni, per quanto riguarda l'anno ho già fatto come mi avevi detto in altro thread e quindi tenendoli distinti.
    Per quanto riguarda la query che mi dici per contare le tessere è proprio la spiegazione che sto cercando per risolvere il conteggio sia in tempo reale per l'anno che appare in maschera e sia per creare un report (ho sbagliato prima a dire maschera) che mi elenchi per ogni anno che appare nella tabella quanti tesserati ci sono.
    Per quanto riguarda il luogo e data di nascita dedotti dal cod.fisc. non sono certo che sia come mi dici (hai fonti certe di ciò che dici? considera che lo scorso anno abbiamo avuto due persone omocode ovvero con lo stesso cod.fisc. e tutte e due nate nello stesso luogo e data, quindi mi perplime l'ipotesi che l'agenzia delle entrate possa dare un codice luogo e data diverso da quello reale perchè nel caso di omocode sarebbe la prima cosa che farebbe!) e proprio per il tuo dubbio ho messo degli asterischi che non mi diano l'attendibilità totale (quindi vorrei fare eseguire il calcolo per dedurre luogo e data di nasc. dal cod.fisc.----> per informazione già possiedo la maschera che fa l'operazione inversa, ovvero che calcola il cod.fisc. dai dati.
  • Re: Contare quante occorrenze si ripetono in un campo

    alex25.01 ha scritto:


    Per quanto riguarda la query che mi dici per contare le tessere è proprio la spiegazione che sto cercando per risolvere il conteggio sia in tempo reale per l'anno che appare in maschera e sia per creare un report (ho sbagliato prima a dire maschera) che mi elenchi per ogni anno che appare nella tabella quanti tesserati ci sono.
    Chiarisci campo dopo campo cosa vuoi vedere.

    alex25.01 ha scritto:


    Per quanto riguarda il luogo e data di nascita dedotti dal cod.fisc. non sono certo che sia come mi dici (hai fonti certe di ciò che dici? considera che lo scorso anno abbiamo avuto due persone omocode ovvero con lo stesso cod.fisc. e tutte e due nate nello stesso luogo e data, quindi mi perplime l'ipotesi che l'agenzia delle entrate possa dare un codice luogo e data diverso da quello reale perchè nel caso di omocode sarebbe la prima cosa che farebbe!) e proprio per il tuo dubbio ho messo degli asterischi che non mi diano l'attendibilità totale (quindi vorrei fare eseguire il calcolo per dedurre luogo e data di nasc. dal cod.fisc.----> per informazione già possiedo la maschera che fa l'operazione inversa, ovvero che calcola il cod.fisc. dai dati.
    Io so che il Ministero, in caso di omocode, provvede di proprio arbitrio a cambiare uno dei due in quanto non è possibile avere 2 codici fiscali uguali. Se ti ho fatto queste precisazioni è perchè ricordo di alcuni thread precedenti negli anni scorsi dove se ne è già ampiamente parlato. Altri utenti più esperti di me hanno posto l'accento su questa questione.
Devi accedere o registrarti per scrivere nel forum
25 risposte