Controle op bestaande personen is, zeker in een grote tabel, een belangrijke zaak en tamelijk lastig. Je bent namelijk behoorlijk afhankelijk van de 'zuiverheid' van werken van de gebruikers. Zelf heb ik het nog niet meegemaakt dat het proces foutloos loopt. Een van de redenen is dat de check überhaupt niet wordt uitgevoerd, en de persoon dus gelijk dubbel wordt aangemaakt. Een tweede is dat de check wordt gedaan op een naam die anders is gespeld. En dan gaat het meestal ook fout. Derde valkuil is dat de
naam al bestaat, maar dat het wel degelijk een andere persoon is. Berucht voorbeeld: studenten die zich tegelijkertijd op dezelfde universiteit inschrijven en waarbij de naam dubbel is, de voorletters dubbel zijn, de geboortedatum hetzelfde is en het adres ook. Blijkt het in dit geval om een tweeling te gaan waarbij de ouders qua naam niet helemaal lang genoeg hebben nagedacht...
Maar goed, het uitvoeren van een controle is dus een goede zaak om te doen. De makkelijkste manier vind ik om een formulier te maken waarin je eerst de naam opzoekt m.b.v. een keuzelijst, waarin je zoveel mogelijk referentiegegevens laat zien, zoals Naam, Voorletters, Voornamen, Geboortedaum, Adres en Woonplaats. Zo'n keuzelijst maak je dan doorzoekbaar op naam. En wil je meer zoekingangen, dan kopieer je de keuzelijst en zet je andere velden vooraan. Hoe dan ook: met zo'n keuzelijst zie je snel genoeg of de persoon bestaat of niet. En dan komt het leuke: als de persoon bestaat kun je het Meewerkers formulier openen met de gekozen medewerker, en als de persoon die je intypt niet gevonden wordt (en dus niet bestaat) dan maak je een kprocedrue op de gebeurtenis <Bij niet in lijst> die het formulier opent in Toevoegmodus, waarbij je de getypte naam gelijk in het naamvak laat zetten (want dat is immers ingetypt en niet gevonden).
Wil je toch met een tekstvak werken, dan wordt het een stuk lastiger, omdat je dan 'fuzzy' moet gaan zoeken. Je moet dan namelijk bepalen hoe groot de waarschijnlijkheid is dat de ingetypte naam niet bestaat. Is 'John VanderAerden' dezelfde persoon als 'John Vander Aerden'? Da's op voorhand niet te zeggen. Zeker is wel dat als je één van de twee teksten ingeeft als zoekstring, je geen record terugkrijgt, en dus geneigd zou zijn om te denken dat het om een nieuwe naam gaat. Met een fuzzy zoekactie vind je de twee namen wél als mogelijk identiek. Zo'n fuzzy zoeklogic is lastig te programmeren, maar dat hoef je gelukkig niet zelf te doen; een voorbeeldje staat
hier.
Overigens raad ik je aan om zo snel mogelijk met macro's te stoppen, en met dezelfde snelheid in VBA te gaan programmeren. Want de echt leuke dingen kan je toch niet in een macro, dus alle leertijd die je in macro's steekt is wat mij betreft redelijk verloren tijd, en kun je beter steken in het leren van VBA.