Mes 5 principales fonctions personnalisées FileMaker

Qu’est-ce qu’une fonction personnalisée ?

Les fonctions personnalisées dans FileMaker sont des fonctions définies par le développeur qui peuvent être réutilisées partout dans le fichier de base de données dans lequel elles sont créées. En tant que développeurs, nous pouvons nous retrouver à évaluer un calcul plusieurs fois, ce qui est un bon signe pour utiliser une fonction personnalisée. Le site Web de Brian Dunning constitue une excellente ressource pour des fonctions personnalisées pré-fabriquées.

Top 5 des fonctions personnalisées

La définition d’un Top 5 des fonctions personnalisées ne sera pas la même pour tout le monde. Mes cinq meilleures fonctions personnalisées sont celles que j’utilise dans plusieurs bases de données pour gagner du temps, ou simplement celles que j’utilise souvent.

  • SysPlatform
  • RemoveValue
  • Age
  • Patternize
  • IsServer

SysPlatform

Définition de la fonction personnalisée
Let ( [
system = Get ( SystemPlatform ) ;
platform = Case ( 
		system = 1 ; "Mac" ; 
		system = -2 ; "Win" ; 
		system = 3 ; "iOS" ; 
		system = 4 ; "Web" ; 
		//defaultResult 
		"N/A"
		)
] ; 

platform

)

Lorsqu’il s’agit de solutions multiplateformes, il est impératif de savoir sur quelle plateforme se trouve l’utilisateur final. Je ne sais pas ce qu’il en est pour vous, mais j’ai tendance à oublier quels chiffres correspondent à quelle plateforme système, ce qui explique pourquoi j’utilise fréquemment cette fonction personnalisée. Au lieu d’utiliser constamment Get(SystemPlatform) et de mémoriser quel numéro appartient à quelle plate-forme, vous pouvez simplement créer une fonction personnalisée qui renvoie le nom de la plate-forme. Une fois cette fonction créée, votre processus de script est plus clair et plus rapide à mettre en œuvre.

RemoveValue ( listOfValues ; value )

Définition de la fonction personnalisée
/*
CUSTOM FUNCTION: RemoveValue(listOfValues; value)
by Debi Fuchs of Aptworks Consulting, debi@aptworks.com
Speedily (and with no recursion or cleanup of empty values) remove all instances of a value from a list. (For cleanup try custom function CullNulls)
e.g. RemoveValue("¶9¶2¶4¶8¶8¶¶7¶¶8¶9¶¶"; "8") -> "¶9¶2¶4¶¶7¶¶9¶¶"
LAST MODIFIED: 28-AUG-2018 by Debi Fuchs of Aptworks Consulting
*/

Let(
  s = "##*aaa*##"; //very unlikely string
  Case(
    //Check if unlikely string rears its head
    Position( listOfValues; s; 0; 1 );
    //If so, simulate an out-of-range error.
    Evaluate( "Factorial( -1 )" ); 
    //Check if value itself contains a paragraph return
    Position( value; ¶; 0; 1 );
    //If so, simulate an out-of-range error.
    Evaluate( "Factorial( -1 )" ); 
    // Otherwise, proceed to get rid of nulls
    Substitute(
      s & listOfValues & s;
      [ "¶"; s & ¶ & s ];
      [ s & value & s & ¶; "" ];
      [ ¶ & s & value & s; "" ];
      [ s & value & s; "" ];
      [ s; "" ]
    )
  )
)

FilterValues renvoie un résultat texte contenant uniquement les valeurs qui ont été passées en tant que filterValues, alors que cette fonction personnalisée est tout le contraire. J’ai souvent eu besoin de supprimer une valeur spécifique d’une liste de valeurs, et c’est là que la fonction personnalisée RemoveValue s’avère utile.

Explication des paramètres :

listofValues – liste de valeurs
value – valeur à supprimer

Exemple :
RemoveValue ( « Vert »&¶& »Rouge »&¶& »Rouge »&¶& »Mauve » ; « Rouge » )

Résultat :
Vert
Mauve

Age ( Birthdate )

Définition de la fonction personnalisée

Year (Get(CurrentDate)) –
Year (BirthDate) –
(
Get (CurrentDate) < Date (
Month (BirthDate);
Day (BirthDate);
Year (Get(CurrentDate))
)
)

Je suis sûr que beaucoup d’entre nous ont déjà eu besoin de connaître l’âge d’une personne dans un enregistrement.

Birthdate – Date de naissance qui sera utilisé pour vérifier l’âge

Patternize ( direction ; pattern ; replaceChar ; value ; pad? )

Avez-vous déjà eu besoin d’un format spécifique pour un numéro de téléphone, ou peut-être de masquer les cartes de crédit et de n’afficher que les 4 derniers chiffres ? Cette fonction personnalisée vous permet de faire les deux. Vous insérez le modèle et le format que vous souhaitez est affiché.

patternize

Explication des paramètres :

direction – LTR (de gauche à droite) ou RTL (de droite à gauche)
pattern – le modèle de format que vous souhaitez
replaceChar – Caractère dans ce modèle que je veux remplacer par des données
value – les données qui sont transmises
pad? – 0 – Je ne veux pas inclure le reste du modèle une fois que je n’ai plus de données.

Exemple :

Patternize ( « LTR » ; « ###-###-#### » ; « # » ; « 7183233333 » ; 0 )
Patternize ( « LTR » ; « ###-###-#### x ### » ; « # » ; « 7183233333343 » ; 0 )
Patternize ( « RTL » ; « xxxx-xxxx-xxxx-#### » ; « # » ; « 5288105898105340 » ; 0 )

718-323-3333
718-323-3333 x 343
xxxx-xxxx-xxxx-5340

IsServer

Définition de la fonction personnalisée
PatternCount( Get( ApplicationVersion ); "Server" ) > 

Cette fonction détermine, de manière booléenne, si un script est exécuté ou non sur le serveur FileMaker.

La majorité des développeurs FileMaker ont un script OnOpen dans leur solution. Lorsque l’on utilise Perform Script On Server (PSOS), il n’est généralement pas nécessaire d’exécuter le script OnOpen complet. Pour contourner cela, au lieu de créer une instruction if et d’écrire tout le code, nous pouvons appeler cette fonction personnalisée.

Si vous souhaitez jouer avec ces fonctions polyvalentes, consultez notre fichier de démonstration (en anglais uniquement) :