Conta quante volte [tab1].[valore x] compare nella [Tab2].[campo y]

di il
6 risposte

Conta quante volte [tab1].[valore x] compare nella [Tab2].[campo y]

Ciao a tutti,

premetto le serie difficoltà che incontro nell'uso di Access, dopo quasi vent'anni dall'ultima esperienza un po' più approfondita.

Avevo a suo tempo creato un file Excel composto da numerosi fogli, che per esigenze varie ho importato in un db di Access.
Mi ritrovo con un file composto da una dozzina di tabelle sulle quali devo svolgere alcune operazioni.
Ovviamente le funzioni di calcolo e di controllo svolte su Excel si sono perse nell'importazione e ciò mi crea problemi al momento dell'aggiornamento con inserimenti di nuovi dati, poichè sono venuti meno tutti i riferimenti ed i controlli che venivano automaticamente svolti dal foglio di calcolo.

Ad ora mi trovo davanti ad uno scoglio che non so oltrepassare.

Date:
- Tabella "Cav" con campo "Nome", chiave primaria "IdCav"
- Tabella "Pal" con campo "IdCav" e campo "Cav" (in cui ci sono valori sicuramente presenti nei campi "Nome" e "IdCav" della tab "Cav"), chiave primaria "IdPal" (non presente in tab "CAV")

ho bisogno di "contare" quante volte ogni valore di uno dei due campi della tab "Cav" (duplicati non ammessi), compaiono nella tab "Pal"

è possibile farlo con un campo calcolato? Non sono riuscito a "far piacere" ad Access nessun mio tentativo.



Grazie

6 Risposte

  • Re: Conta quante volte [tab1].[valore x] compare nella [Tab2].[campo y]

    Per me tenti di fare delle operazioni che "poco" hanno a che vedere con un database "ben strutturato" in partenza. Se i tuoi dati sono disordinati/disomogenei in Excel, devi ordinare prima le tue idee, poi imposti appropriate tabelle in Access.
    Per il resto non ho capito proprio nulla.
  • Re: Conta quante volte [tab1].[valore x] compare nella [Tab2].[campo y]

    Eh, ma me lo immaginavo.
    Il fatto è che se su ecxel potevo fare un "conta se" per trovare quante volte un valore x della tabella 1, compare nella tabella 2, da access non mi riesce. Credevo che con un campo calcolato potessi risolvere, ma ho letto un po' dappertutto che non è un iter consigliato.

    Vedo se da VB riesco a strigarla in qualche modo.


    Grazie lo stesso
  • Re: Conta quante volte [tab1].[valore x] compare nella [Tab2].[campo y]

    Ma va VB... prima di arrivare a VB serve avere le idee chiare di come si deve operare con un nuovo strumento.
    Il conta.se di excel si fa anche con Access ma ci sono modi diversi per arrivarci in base a come operi... perché Access es Excel non sono nemmeno parenti.

    La soluzione per un poco competente è di leggere in merito a DCOUNT(...) che fa esattamente la stessa cosa, ma è veramente una risposta comoda da dare a chi non ha basi e non vuole capire di cosa si parla...

    Quindi vedi tu....hai la soluzione semplice, ma 9 su 10 non è quella giusta... e se ritieni sia giusta è solo perché restituisce il risultato voluto, non perché sia il metodo giusto...
  • Re: Conta quante volte [tab1].[valore x] compare nella [Tab2].[campo y]

    Io ti ringrazio tanto, ma non risolvo il mio problema (magari perchè sono un pollo io!).
    Ho la necessità che il dato calcolato si trovi in una colonna della tabella in cui è presente il valore da cercare.

    Con il DCOUNT (almeno a quel che ho visto) è richiesto che l'utente inserisca il dato da cercare e contare, mentre io avrei bisogno che, all'inserimento di un nuovo record in tabella) il conteggio apparisse automaticamente.

    Ora mi domando:
    C'è un modo per cui in una colonna ad hoc della TAB1 posso avere automaticamente quante volte il campo IdValore, chiave primaria nella stessa riga, è presente nella TAB2?

    E' qui che mi frana il castello.

    TAB1
    IdValore Nome CampoCalc
    1 Pippo 4
    2 Pluto 2
    3 Paperino 1
    4 Paperone 1

    TAB2
    IdValore Nome
    2 Pluto
    2 Pluto
    4 Paperone
    3 Paperino
    1 Pippo
    1 Pippo
    1 Pippo
    1 Pippo


    Un risultato così, automaticamente, senza lanciare una query, l'avrò mai?
  • Re: Conta quante volte [tab1].[valore x] compare nella [Tab2].[campo y]

    Il castello frana da molti punti perchè

    pifferino ha scritto:


    Ho la necessità che il dato calcolato si trovi in una colonna della tabella
    Nelle tabelle non si mettono i campi calcolati. Questo onere lo si delega alle query.

    pifferino ha scritto:


    C'è un modo per cui in una colonna ad hoc della TAB1 posso avere automaticamente quante volte il campo IdValore, chiave primaria nella stessa riga, è presente nella TAB2?
    Qual è la tabella che deve CONTENERE i valori che l'UTENTE DIGITA?

    Poi, secondo me, manca una veduta di "insieme" tipica dei database e Access...
  • Re: Conta quante volte [tab1].[valore x] compare nella [Tab2].[campo y]

    pifferino ha scritto:


    Io ti ringrazio tanto, ma non risolvo il mio problema (magari perchè sono un pollo io!).
    Ho la necessità che il dato calcolato si trovi in una colonna della tabella in cui è presente il valore da cercare.
    Non è così... credi di aver bisogno di questo perché non conosci un database relazionale e ti approcci a questo nuovo strumento senza aver minimamente idea di cosa si parla.

    pifferino ha scritto:


    il DCOUNT (almeno a quel che ho visto) è richiesto che l'utente inserisca il dato da cercare e contare, mentre io avrei bisogno che, all'inserimento di un nuovo record in tabella) il conteggio apparisse automaticamente.
    Ma no proprio... direi che non hai letto affatto la guida... sono certo tu abbia guardato qualche esempio... senza aver letto la guida... quindi travisando.
    Se imparassi ad usare un DB relazionale questo tuo concetto cambierebbe... proprio perché insensato.

    pifferino ha scritto:


    Un risultato così, automaticamente, senza lanciare una query, l'avrò mai?
    Spiacente... Non è possibile aiutarti se non provi a studiare un minimo.
Devi accedere o registrarti per scrivere nel forum
6 risposte