Eliminare record doppi in Access

mercoledì 24 ottobre 2007 - 17.16

jacques Profilo | Newbie

sara' gia' stato chiesto mille volte,
ho cercato un po' ma non l'ho trovato

quando aggiorno una mia tabella,
ogni tanto di nuovo una riga che c'e' già,
e io devo eliminarla

come faccio in Access a farlo,
controllando l'intera tabella
e cancellando i doppioni?


e se ho un ID univoco,
l'importazione del doppio mi crea una riga uguale con solo ID diverso,
riesco a toglierla senza sfalsare il contatore?

lbenaglia Profilo | Guru

>quando aggiorno una mia tabella,
>ogni tanto di nuovo una riga che c'e' già,
>e io devo eliminarla
>
>come faccio in Access a farlo,
>controllando l'intera tabella
>e cancellando i doppioni?
Tutto sta nel capire cosa è per te "una riga uguale"
Se esiste già una riga che tu consideri uguale, per quale motivo devi eliminarla per reinserirla subito dopo?

>e se ho un ID univoco,
>l'importazione del doppio mi crea una riga uguale con solo ID
>diverso,
>riesco a toglierla senza sfalsare il contatore?
No, ogni INSERT genererà un nuovo valore della colonna autonumber.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

paolosavona Profilo | Newbie

Ciao,
e grazie per i primi spunti.

>Tutto sta nel capire cosa è per te "una riga uguale"
>Se esiste già una riga che tu consideri uguale, per quale motivo
>devi eliminarla per reinserirla subito dopo?

Il mio problema e' il seguente:

Ho un grosso file di eventi,
che proviene da uno scarico quotidiano da un sito web,
ogni evento e' una riga, e si compone di data, partecipanti, interazioni...

Ogni giorno scarico un nuovo pezzetto,
pero' non ho modo di far si' che esso non contenga righe che già ho nel mio file,
mentre a me serve che ogni record gia' esistente (tutti i campi uguali)
NON venga di nuovo accodato.
Questo è cio' che intendo per "riga uguale".

Quindi:

- file storico ;

- file update, stessa struttura ma alcune righe comuni con lo storico e alcune righe nuove.

Target: accodare, con numerazione corretta, solo le righe nuove, scartando le preesistenti.

Grazie, buona giornata.

Paolo














>
>>e se ho un ID univoco,
>>l'importazione del doppio mi crea una riga uguale con solo ID
>>diverso,
>>riesco a toglierla senza sfalsare il contatore?
>No, ogni INSERT genererà un nuovo valore della colonna autonumber.
>
>Ciao!
>--
>Lorenzo Benaglia
>Microsoft MVP - SQL Server
>http://blogs.dotnethell.it/lorenzo/
>http://italy.mvps.org

lbenaglia Profilo | Guru

>Quindi:
>
>- file storico ;
>
>- file update, stessa struttura ma alcune righe comuni con lo
>storico e alcune righe nuove.
>
>Target: accodare, con numerazione corretta, solo le righe nuove,
>scartando le preesistenti.

Ciao Paolo,

Il discorso non mi è ancora chiaro del tutto, nel tuo schemino manca il database Access.
Il file storico ogni quanto lo importi nel db?
Il file di update invece mi sembra di aver capito che lo importi tutti i giorni, corretto?

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

paolosavona Profilo | Newbie

Ciao,
e grazie per la domanda
(come si dice in TV...).

Il file storico l'ho creato una prima volta importando tutto l'elenco dati del sito,
e ora e' la mia base di dati,
alla quale devo appendere ogni giorno un certo numero di righe nuove.

Queste righe "nuove", pero',
non ho modo di sapere se gia' ci sono o no
(perche' ci sono eventi a pari data, alcuni conclusi alcuni sospesi
difficili da separare, quindi riesco solo a importare un blocco di righe,
diciamo i 3 giorni indietro o giu' di li' ...).

Fatta l'importazione del giorno,
avrei bisogno di eliminare le righe doppie,
dopo di che aggiornare il file storico con le righe davvero nuove,
con numerazione coerente.

Spero di essere stato piu' chiaro,
e ri-grazie fin d'ora.

Paolo

lbenaglia Profilo | Guru

>Il file storico l'ho creato una prima volta importando tutto
>l'elenco dati del sito,
>e ora e' la mia base di dati,
>alla quale devo appendere ogni giorno un certo numero di righe
>nuove.
Ah OK, ora ho capito
Il suggerimento che ti posso dare consiste nell'importare il file di update giornaliero in una tabella di appoggio, infischiandotene del fatto che alcune righe possono essere già presenti nella tabella di storico.
A questo punto eseguendo una OUTER JOIN potrai importare *solo* le righe nuove.
Al termine dell'importazione andrai a svuotare la tabella di appoggio, pronto per importare i dati del giorno successivo.
Ti allego un file mdb con la tabella di storico (Students), la tabella con i dati giornalieri (StudentsUpdate) e la query di importazione (qryAddStudents).

>e ri-grazie fin d'ora.
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5