Over
Archief
Tips en trucs over FileMaker met code, afbeeldingen of te downloaden bestanden. Als u zelf in FileMaker programmeert dan kunnen deze u wellicht helpen. Volg ons om nieuwe tips & trucs te ontvangen.
De bestanden openen automatisch met volledige toegang zodat u alle tabellen, velden, scripts, enzovoort kunt bestuderen, aanpassen en overnemen.
Jaar 2015
Scriptstappen verplaatsen met toetsen
15 oktober 2015 | Niveau: FileMaker Gevorderden Training
Even een kleine tip die ik zelf al heel lang gebruik; een handige toetscombinatie voor als u scripts bewerkt.
In ScriptMaker of, vanaf FileMaker 14, de Scriptwerkruimte kunt u een of meer scriptstappen selecteren en met toetsen verplaatsen.
Selecteren doet u door de eerste scriptstap met de muis te klikken en met shift of control ingedrukt een volgende scriptstap te klikken om resp. een groep of meerdere losse scriptstappen te selecteren.
Als u vervolgens de control-toets ingedrukt houdt en de pijl-omhoog of pijl-omlaag toets indrukt, dan worden de geselecteerde scriptstappen één regel omhoog of omlaag verplaatst.
Handig om even snel scriptstappen van plek te laten wisselen. Werkt sinds FileMaker 11.
Opsomming van gerelateerde velden met een uitzondering
21 augustus 2015 | Niveau: FileMaker Expert Training
Stel, u wilt een naam o.i.d. van meerdere gerelateerde records als een opsomming in een tekst opnemen, bijvoorbeeld om in een e-mail te gebruiken. Zoals de contactpersonen van een organisatie, de data van trainingen of accessoires van een artikel enz.
Die moeten van elkaar gescheiden zijn met een komma maar tussen de laatste twee is een uitzondering en moet het woord 'en' of 'of' staan. Eigenlijk zoals in de laatste zin van de vorige paragraaf: mogelijkheid 1, mogelijkheid 2 of mogelijkheid 3.
Hoe kan dat handig gedaan worden? Afgelopen week heb ik het weer eens toegepast dus een mooie aanleiding om hier te delen.
De truc zit hem in het achterstevoren gebruiken van de functie Positon ( tekst ; zoekreeks ; begin ; item ) om de laatste scheiding te vinden.
Meestal gebruikt men in deze functie de parameters begin = 1 en item = 1 maar hier willen we vanaf het laatste teken kijken. Dan moet de begin-parameter de lengte van de tekst of groter zijn (bv. 21) en het item negatief (bv. -1) zodat van rechts naar links in de tekst gezocht wordt.
De berekening zou er dan zo uit kunnen zien:
Let (
[
// Let-functie om snel en eenvoudig éénmaal de lijst met veldinhoud op te vragen
// en de vaste teksten éénmaal op te geven zodat bij een wijziging niet de hele berekening
// moet worden nagelopen.
vScheiding = ", " ; // definieer de nieuwe tekst tussen de waarden
vScheidingLaatste = " of " ; // definieer de nieuwe laatste tekst tussen de waarden
vList = List ( Tabelvermelding::Veld ) ; // bepaal de lijst met veldinhoud
vList = Substitute ( vList ; "¶" ; vScheiding ) ; // vervang scheidingsteken ¶ door komma en spatie
vPosLaatste = Position ( vList ; vScheiding ; Length ( vList ) ; -1 )
// bepaal de positie van het eerste teken van de laatste scheiding in de lijst, zie uitleg hierboven
] ;
If ( vPosLaatste = 0 ; // indien de scheiding niet voorkomt in de lijst...
vList ; // ...dan zit er maar één waarde in en is dat de uitkomst
Replace ( // vervang...
vList ; // ...in de lijst van waarden...
vPosLaatste ; // ...vanaf de positie van de laatste scheiding punt-spatie...
Length ( vScheiding ) ; // ...het aantal tekens van de scheiding punt-spatie...
vScheidingLaatste // ...met het woord 'of' en spaties.
)
)
)
Waarom GetAsNumber gebruiken?
5 januari 2015 | Niveau: FileMaker Gevorderden Training
FileMaker geeft geen enkele foutmelding als in berekeningen 3 * "abc1" of "Kosten: " & 123,4 operaties met teksten en getallen worden uitgevoerd, waarbij natuurlijk ook velden gebruikt kunnen worden. Dat kan soms voor onverwachte problemen zorgen.
En toch gebruik ik vaak functies zoals GetAsNumber() en GetAsText() om FileMaker expliciet duidelijk te maken dat het een tekst naar een getal om moet zetten of andersom. Vooral toen FileMaker 7 zich anders gedroeg en mijn database onterecht dacht dat de FileMaker versie te oud was om de database mee te gebruiken. Door de functies te gebruiken hoop ik veiliger en defensiever te programmeren om op de lange termijn geen problemen te ondervinden met nieuwe FileMaker versies.
Maar bij scriptparameters is het niet vrijblijvend en moet u GetAsNumber(), GetAsDate() e.d. gebruiken. Scriptparameters worden door FileMaker altijd als tekst doorgegeven aan het aangeroepen script. Als het aangeroepen script een getal verwacht in Get ( ScriptParameter ) dan komt u voor een verrassing te staan bij bijvoorbeeld vergelijkingen. Zie bijvoorbeeld dit script dat aangeroepen wordt met het getal 14:
Variabele instellen [ $mijnwaarde ; GetAsNumber ( Get ( ScriptParameter ) ) ]
If ( $mijnwaarde < 5 )
# zonder GetAsNumber() worden scriptstappen hier uitgevoerd omdat "14" < 5 = 1 (Waar)
Else
# met GetAsNumber() worden scriptstappen hier uitgevoerd omdat 14 < 5 = 0 (Niet waar)
End If