FileMaker - Tip 13

 

Klik op om terug te keren naar het hoofdmenu.

Tip 13 - Isoleren van een naam in een veld dat zowel naam als voornaam bevat

Stel een veld Naam waarin bijvoorbeeld staat: Albert Van Damme en dat het de bedoeling is voornaam en naam in aparte velden onder te brengen.

Hiertoe gebruiken we de Left functie en de Right functie:

Left(Naam;6) geeft als resultaat Albert (vermits Albert 6 lettertekens bevat).

Right(Naam;9) geeft als resultaat Van Damme (vermits Van Damme, spatie inbegrepen, 9 lettertekens bevat).

Heel eenvoudig dus. Of toch niet: het probleem is dat we niet steeds weten hoeveel lettertekens de voornaam en de naam bevatten... We kennen dus alle gegevens van de formule, behalve die 6 en die 9.

Maar ook dat is gemakkelijk op te lossen: die 6 vinden we door de eerste spatie te zoeken, en dan 1 ervan af te trekken: de eerste spatie staat immers op de zevende plaats!

Hoe vinden we die spatie? Heel eenvoudig: met de Position functie. De parameters van deze functie vinden we terug in het Help menu van FileMaker zodat volgende formule eenvoudig te interpreteren is:

Position(Naam;" ";1;1)

betekent eigenlijk:

zoek in het veld Naam de plaats waar " " (de spatie dus) voor de eerste keer voorkomt, beginnend vanaf positie 1.

In ons geval geeft dit dus 7 als resultaat. Om de 6 te vinden hoeven we dus gewoon min één te doen.

We hernemen dus de bovenstaande Left-formule en vervangen daarin het getal 6 door de Position-formule min één:

Left(Naam;Position(Naam;" ";1;1) - 1)

Voor de familienaam gaan we analoog te werk via de Right-functie, maar hier moeten we de 9 vinden. Dat is uiteraard de totale lengte (16 tekens) min die 7 van daarstraks: hiertoe gebruiken we de Length-functie. Die geeft immers het totaal aantal tekens.

Right(Naam;9)

vervangen we dus door

Right(Naam;Length(Naam) - Position(Naam;" ";1;1))

Zie ook Tip 291: daar gebruiken we de nieuwere functie MiddleWords.

 
avd@avd-ci.be - contactformulier