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.
    )
  )

)

Wilt u de opsomming in een specifieke volgorde hebben? Dan zult u voor de relatie een sorteervolgorde moeten instellen (niet voor een portaal).

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

Wilt u meer weten over Scriptparameters en Logische Waarden (boolean)? Neem dan deel aan een FileMaker Expert Training.