Confrontare un campo di una tabella/query per tutti i record

di il
5 risposte

Confrontare un campo di una tabella/query per tutti i record

Ciao a tutti.

Ho la necessità di confrontare il campo "Duplicato" (calcolato) di una tabella/query per tutti i record della tabella/query, con lo scopo di individuare se esistono due (o più: ma prevedo che al massimo ce ne siano 2) campi uguali; se esistono, la procedura deve scrivere un "1" nel campo "Doppia", impostato a 0 di default. Ho fatto alcune prove, ma senza risultati apprezzabili; tutte le prove si sono basate sul ragionamento in base al quale dovrei cercare con due indici di muovermi lungo la colonna "Duplicato": l'indice i da 1 a NumeroRecord e l'indice j da i+1 a NumeroRecord per confrontare di volta in volta il campo i-esimo con il campo j-esimo.

Non ho ottenuto esiti positivi e mi chiedo se il ragionamento di base sia corretto nell'ambito di Access.

Avete qualche suggerimento da darmi?

Grazie.

5 Risposte

  • Re: Confrontare un campo di una tabella/query per tutti i record

    Puoi sicuramente farlo tramite codice ma se usi SQL fai prima.
    Questa è la query di conteggio da cui puoi provare a partire :
    
    Select count(Duplicato) from Table group by Duplicato
    
    Se anteponi l'update al risultato della select ...
  • Re: Confrontare un campo di una tabella/query per tutti i record

    Esiste la "query di ricerca duplicati" che puoi implementare con la procedura guidata.
  • Re: Confrontare un campo di una tabella/query per tutti i record

    Grazie Max. Quindi qualcosa del genere:

    UPDATE TabEdizioni SET Doppia=1 WHERE (SELECT count(Duplicato) FROM TabEdizioni GROUP BY Duplicato)>1 (devo controllare sintassi e parentesi).

    Questa istruzione può essere inserita nel codice legato a qualche evento, giusto?
    Esiste la "query di ricerca duplicati" che puoi implementare con la procedura guidata.
    Grazie Osvaldo, proverò anche questa; non ricordo se questo tipo di query confronta tutto il record o se si può limitare la ricerca ad un solo campo.
  • Re: Confrontare un campo di una tabella/query per tutti i record

    Donizetti ha scritto:


    UPDATE TabEdizioni SET Doppia=1 WHERE (SELECT count(Duplicato) FROM TabEdizioni GROUP BY Duplicato)>1 (devo controllare la sintassi e parentesi).

    Questa istruzione può essere inserita nel codice legato a qualche evento, giusto?
    Salvo eventuali errori di sintassi direi di si.
    Ovviamente procedi per passi :
    - verifica che la select faccia quello che ti aspetti
    - verifica che la query completa di update faccia quello che ti aspetti
    - dopo, ma solo dopo, passi a gestire il tutto tramite codice

    Da parte del codice devi :
    - identificare su quale evento vuoi inserire l'esecuzione della query (io penso che potrebbe essere sul Click di un pulsante ma questo lo devi decidere tu);
    - devi decidere se vuoi utilizzare DAO oppure ADO. Io utilizzo moltissimo ADO per mia abitudine storica, credo che per te sia più ragionevole utilizzare DAO;
    Da qui in avanti dovresti riuscire a farcela ... cerca l'oggetto querydef (riferito a DAO) ... dovrebbe essere semplice.
  • Re: Confrontare un campo di una tabella/query per tutti i record

    Donizetti ha scritto:


    non ricordo se questo tipo di query confronta tutto il record o se si può limitare la ricerca ad un solo campo.
    Si possono controllare duplicati su un solo campo, 2 campi, 3 campi...tutti i campi.
Devi accedere o registrarti per scrivere nel forum
5 risposte