[access] records vergelijken die niet 100% matchen

Pagina: 1
Acties:
  • 179 views sinds 30-01-2008
  • Reageer

  • SmegHead
  • Registratie: Augustus 2001
  • Laatst online: 03-05-2023

SmegHead

aka Ace Rimmer

Topicstarter
Na aardig wat gegoogle en het doorspitten van GoT heb ik nog niet gevonden wat ik zoek.

Ik wil uit 2 tabellen bedrijfsnamen met elkaar matchen (simpel), nu is alleen het probleem dat in de ene tabel het bedrijf Janssen BV en in de andere janssen B.V. (met puntjes tussen de B en V dus).

Ook komt het voor dat namen in een andere volgorde staan; "Electrotechnische groothandel Janssen" en "Janssen Electrotechnische groothandel" .

Vraag: Is er een query te maken die dit soort records vergelijkt?
Wildcards (b.v. Jans*) zijn geen optie omdat ik niet handmatig zoek maar 2 hele lijsten wil vergelijken en bij "near matches" een klantnummer uit de eerste lijst wil gooien.

Voor de duidelijkheid:

code:
1
2
3
4
5
6
7
8
9
uit SAP (oud)
SAPnr;  Bedrijfsnaam;   City;
00001   Janssen B.V.    Eindhoven
00002   ETB Pietje  Amsterdam

uit OQ (nieuw)
SAPnr;  Bedrijfsnaam;   City;
    Janssen BV  Eindhoven
    Pietje ETB  Amsterdam

En nu moet ik dus een lijst hebben waarin ik zie dat bedrijf X in SAP wel een SAPnr heeft, maar in het nieuwe OQ systeem nog niet. (en dat zijn er aardig wat)

Een dikke :> en _/-\o_ voor degene die mij kan helpen.

[ Voor 23% gewijzigd door SmegHead op 20-03-2003 10:56 ]

Smoke me a kipper, I'll be back for breakfast!


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Lijkt me niet. Althans, een eenvoudige query kandit niet aan, lijkt me. Je hebt immers ook nog spelfouten ed.

En als je vergelijkt op postcode + huisnummer oid?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Korakal
  • Registratie: Oktober 2001
  • Laatst online: 23-08 10:53

Korakal

Up up up!

Is de enige manier waarop de records worden geïdentificeerd de naam, of hebben ze ook een uniek nummer? En zijn de namen uniek, of komen er dubbelen in voor?
In dat geval zou je met de find unmatched aan de slag kunnen... nog wel een hoop handwerk dan :(

  • Squall-sX
  • Registratie: April 2002
  • Laatst online: 19-08 11:11
Je zou 1 tabel record per record kunnen doorlopen, de naam per record opsplitsen in verschillende strings en dan zoeken naar records in de andere tabel waar al de strings van dat ene record in voorkomen.

In dit geval deel die Electrotechnische groothandel Janssen op in drie strings, en heb je een sql statement van "Select * from tblbedrijven where (tblbedrijven.naam like '*" & string1 & "*' and tblbedrijven.naam like '*" & string2 & "*' and tblbedrijven.naam like '*" & string3 & "*'"

Deze query levert dan Janssen Electrotechnische groothandel. Je kan dit misschien best in VBA doen.

Verwijderd

Er zijn methoden voor het 'normaliseren' van een naam. Helaas zul je daar zelf een functie voor moeten schrijven.

De 1e stap is het normaliseren van allerhande toevoegsels, zoals BV, B.V. en de plaats waar deze toevoegsels staan. Je maakt dan uit alle bekende combinaties een standaard toevoegsel die je bijvoorbeeld altijd aan het einde van de naam in je werbuffer zet.

Daarna ontdoe je naam van allerhande leestekens. De volgende stap is het opdelen van de naam in woorden, vaak simpel te doen door de spaties als scheidingstekens te gebruiken.

Op die manier deel je de naam op in genormaliseerde woorden, en kun je die met de andere genormaliseerde namen vergelijken. Een leuke uitdaging, omdat namen op heel veel manieren in een systeem kunnen voorkomen, en je dus de nodige logica moet hanteren.

Een veelgebruikte truc bij grotere systemen is de genormaliseerde naam zelfs in de database op te slaan, en te zoeken op deze velden, in plaats van de werkelijk naam.

Succes ;)

  • SmegHead
  • Registratie: Augustus 2001
  • Laatst online: 03-05-2023

SmegHead

aka Ace Rimmer

Topicstarter
De 2 lijsten komen uit 2 verschillende programma's.
Alle klantgegevens moeten uit het ene programma naar het nieuwe overgezet worden (handmatig), een groot deel is daar al van gebeurt maar er moet nog veel gecontroleerd worden.

Veel mensen hebben bij het overzetten een net iets andere bedrijfsnaam gepakt wat het controleren dus erg lastig maakt.
Ik kan niet gaan matchen op iets anders aangezien de uitvoer van b.v. de adresgegevens uit het ene programma totaal anders is dan de uitvoer van het andere programma. :(

Is er niet een query te maken die alle letters in een cel apart matched en als b.v. 80% hetzelfde is en een koppeling gelegd wordt??

En het gaat over duizende records dus het handmatig langslopen lijkt mij niet zo'n leuke taak.

edit:
Ik zal de bovengenoemde opties even gaan doornemen, kijken of dat te doen is. Alvast bedankt

[ Voor 8% gewijzigd door SmegHead op 20-03-2003 10:42 ]

Smoke me a kipper, I'll be back for breakfast!


  • Boss
  • Registratie: September 1999
  • Laatst online: 07:00

Boss

+1 Overgewaardeerd

Ik weet niet of je de beschikking hebt over SQL Server, maar dan kan je geloof ik ook een soort 'fuzzy search' doen en zoeken op namen die hetzelfde klinken. Misschien kan je daar een beetje mee spelen?

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.

Pagina: 1