Duplicaten zoeken in access

Status
Niet open voor verdere reacties.

annetiti

Gebruiker
Lid geworden
6 aug 2007
Berichten
195
HAllo

Graag had ik duplicaten verwijderd in een Access tabel. (zie bijlage).

Zou dit graag oplossen via VBA daar ik met de query "Duplicaten zoeken" problemen ondervind. Krijg niet altijd evenveel dubbele records bij het opstellen van de query!

De gegevens zijn overgekomen uit meerdere excel tabellen. Het id veld is nu een primary key maar er staan heel wat dubbele rijen in de tabel maw er zijn meerdere rijen met dezelfde inhoud behalve het id-nummer.


Hoe kan ik deze dubbele rijen verwijderen uit de tabel. Er moet een controle gebeuren op alle velden behalve het idnr? Kan er iemand mij een steuntje geven?

Dank
Anne
 

Bijlagen

Maak een nieuwe query.
Ga naar SQL weergave.
Zet daarin onderstaande code.
Kan zijn dat je de komma's door puntkomma's moet vervangen.

PS ik raad je aan om, voordat je verder gaat, eerst je tabel te normaliseren = zoveel mogelijk op te splitsen naar apater tabellen per gegevensgroep
En overbodige gegevens te verwijderen. Zo heb je een kolom UREN DECIMAAL terwijl je gegevens in deze kolom af leidt uit je kolom UREN.
Regel is dat je gegevens die je af kunt leiden niet vast legt. Je kolom UREN DECIMAAL kan dus weg.

Code

Code:
DELETE *
FROM test
WHERE EXISTS
(
SELECT '1'
FROM  test AS test1
WHERE test1.Id > test.Id
AND NZ(test.EXTRA,0) = NZ(test1.EXTRA,0)
AND NZ(test.DATUM,0) = NZ(test.DATUM,0) 
AND NZ(test.NAAM,0) =NZ(test1.NAAM,0)
AND NZ(test.UREN,0)=NZ(test1.UREN,0)
AND NZ(test.[UREN DECIMAAL],0)=NZ(test1.[UREN DECIMAAL],0)
AND NZ(test.AFD,0)=NZ(test1.AFD,0)
AND NZ(test.PROJECT_ACTIVITEIT,0)=NZ(test1.PROJECT_ACTIVITEIT,0)
AND NZ(test.KLANT,0)=NZ(test1.KLANT,0)
AND NZ(test.AC,0)=NZ(test.AC,0)
AND NZ(test.EDITIE_GBNR,0)=NZ(test1.EDITIE_GBNR,0)
AND NZ(test.[BENAMING KUNSTWERK],0)=NZ(test1.[BENAMING KUNSTWERK],0)
AND NZ(test.[FOUT AC],0)=NZ(test1.[FOUT AC],0)
AND NZ(test.[KG SIL],0)= NZ(test1.[KG SIL],0)
AND NZ(test.[KG WAS],0)= NZ(test1.[KG WAS],0)
AND NZ(test.[KG GK],0)=NZ(test1.[KG GK],0)
AND NZ(test.PLUGS,0)= NZ(test1.PLUGS,0)
AND NZ(test.[KG SHELL],0)=NZ(test1.[KG SHELL],0)
AND NZ(test.[KG BRONS],0)=NZ(test1.[KG BRONS],0)
AND NZ(test.[DIVERS MATERIAAL],0)= NZ(test1.[DIVERS MATERIAAL],0)
AND NZ(test.[DATUM VKFACT],0)= NZ(test1.[DATUM VKFACT],0)
);

Tardis
 
Dag Tardis

Alvast bedankt voor de snelle reactie maar ik zit nog met een probleem.

- de records met id 9927 en 9928 er is een verschil in uren en toch worden beide records verwijderd.
- records met id 9949 en 34558 zijn dezelfde maar er mag er slechts ééntje verwijderd worden--> er moet ééntje in de tabel blijven.

Hopelijk kan je mij nog wat verder helpen!

Bedankt
Anne
 
DAg Tardis

IK heb de procedure nog eens uitgevoerd, maar voor de een of andere reden worden er teveel records verwijderd.

In bijlage heb ik een print screen genomen van deze records.

Misschien ligt het maar aan een klein detail in de query maar ik heb deze nog niet gevonden, misschien heb je wel een tip voor mij!

groeten en bedankt

probleem.jpgAnne
 
Je zult dan eerst moeten aangeven hoe jij een duplicaat definieert.
Bedenk daarbij wel dat je definitie eenduidig moet zijn.

Tardis
 
Dag Tardis
Kan je wat duidelijker definiëren wat je bedoelt?
dank
Anne
 
Dag Tardis
2 of meerdere rijen zijn dubbel als meerdere rijen met veldinhoud dezelfde zijn behalve het id-veld:
velden:EXTRA,daTUM,nAAM,PROJECT_ACTIVITEIT,KLANT UREN,UREN DECIMAAL,AFD, AC,EDITIE_GBNR,BENAMING KUNSTWERK,FOUT, AC,KG SIL,KG WAS,KG GK,PLUGS,KG SHELL,KG BRONS, DIVERS MATERIAAL,DATUM VKFACT
dezelfde inhoud heeft. maw er is enkel een verschil in het idnr.

vb
id
20673 30/12/2010 naam1 P X 15 0,25 CIS test
20675 30/12/2010 naam1 P X 15 0,25 CIS test
20676 30/12/2010 naam1 P X 15 0,25 CIS test
30598 30/12/2010 naam1 P X 15 0,25 CIS test
30602 30/12/2010 naam1 P X 15 0,25 CIS test
30603 30/12/2010 naam1 P X 15 0,25 CIS

Dit zijn dubbele rijen er zou slecht 1 mogen blijven in de tabel, de rest moet verwijderd worden.
groeten Anne
 
Mijn query klopt
Je gaf eerder aan dat er ten onrechte records verwijderd worden met mijn query, dat klopt niet.
Controleer nog eens goed.

Tardis
 
Hallo
Ik bekijk het nog eens grondig.
Laat zeker iets weten.
Dank
Ane
 
Hartelijk dank voor jullie hulp.

Met de bovenvermelde code zijn de records uit de tabel verdwenen.

Hartelijk dank Anne
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan