FileMaker - Tip 174

 

Klik op om terug te keren naar het selectiemenu.

Tip 174 - De wondere wereld van de Substitute-functie

De Substitute-functie wordt lang niet door alle FileMaker-adepten gebruikt en dat is jammer, want het is een erg krachtige functie en we kunnen er enorm veel mee doen. In feite is het een soort Find and Replace, maar dan binnen een bepaald veld.

We kunnen de Substitute-functie gebruiken in een script, maar ook gewoon in Browse Mode, en wel via het Replace-commando uit het Records-menu (vanaf FileMaker 6 heeft het menu Replace de naam Replace Contents gekregen). Via de toetsen CTRL = (of Command =) komen we er ook.

Een paar voorbeelden. Stel dat we een veld hebben dat Tekst heet, en waarin al heel wat tekst is ingetikt. We willen in die tekst bepaalde woorden vervangen door andere (zoals "houten" door stenen", enzovoort).

We activeren het Replace-commando en kiezen de laatste optie (Replace by Calculation). We moeten dan een formule intikken. Stel dat we in het veld Tekst het zinnetje "We leveren graag houten en glazen opdienschalen" hebben en dat we het woord "houten" door het woord "stenen" willen vervangen.

Dat geeft dan deze formule:

Substitute(Tekst;"houten";"stenen")

Dit betekent dus: vervang in het veld Tekst elk voorkomen van het woord "houten" door "stenen".

Het resultaat van de Substitute-opdracht is:: "We leveren graag stenen en glazen opdienschalen".

We kunnen ook verschillende vervangingen in één enkele formule steken. We spreken dan van een geneste functie*. Elke Substitute wordt toegepast op de resultaten van de vorige.

Dit zou deze formule kunnen geven**:

Substitute(Substitute(Substitute(Tekst;"houten";"stenen");"glazen";"kristallen");"graag";"met plezier")

Dit betekent hetzelfde als hierboven, met nog twee bijkomende vervangingen: "glazen" wordt vervangen door "kristallen" en "graag" door "met plezier". De vervangingen gebeuren van binnen naar buiten (dus eerst "houten" door "stenen", dan "glazen" door "kristallen" en dan pas "graag" door "met plezier").

Er staat dus: "We leveren met plezier stenen en kristallen opdienschalen".

Een andere belangrijke toepassing is het verwijderen van ongewenste tekens (zoals harde returns: ¶): dat doen we gewoon door ze in een Substitute-formule te zetten en ze te laten vervangen door niets (en niets schrijven we als ""). Zo werkt dat:

Substitute(Tekst;"¶";"")


Zie ook
Tip 196 voor een praktische toepassing: het verwijderen van diakritische tekens.

Zie Tip 201 voor het verschil tussen de Substitute- en de Replace-functie.


* "Nesten" kan tot 168 niveaus diep (FileMaker 2-6), tenminste in het geval van If- en Case-functies (zie TechInfo article 101536). Voor de Substitute-functie geldt naar alle waarschijnlijkheid dezelfde beperking.

** Nesten is vandaag niet langer nodig: zie Tip 271.

 
avd@avd-ci.be - contactformulier