Les variables servent à deux choses :
- écrire une formule qui va fonctionner avec plusieurs valeurs (variables). Exemple : alors qu'on peut calculer la surface en mètres carrés d'un rectangle de longueur 3m et de largeur 2m avec la formule : 3*2 (3 et 2 sont des constantes), on peut calculer la surface de n'importe quel rectangue avec la formule x*y (où x et y représentent la largeur et la longueur). Ce x et y sont des variables.
- les variables permettent de stocker des valeurs temporairement sans les stocker dans la base de données, ce qui présente beaucoup d'avantages : pas besoin de créer de champs (on verra qu'il y a une exception), valeurs propres à l'utilisateur, pas d'aller-retours entre le client et le serveur.
Une variable est définie par son nom, son type (de données : texte, nombre, date, conteneur…), et son étendue (en anglais : scope). Cette dernière caractéristique est la plus importante à comprendre. L'étendue détermine où et jusqu'à quand une variable est "vivante".
Dans FileMaker, nous avons les variables suivantes :
- rubriques globales. Ce sont de vraies variables globales, mais elles sont l'exception dont on parlait tout à l'heure : il faut les créer en tant que champ (rubrique) dans la base de données. Leur valeur est définie pour toute la session et pour l'ensemble des fichiers ouverts par l'utilisateur.
On définit une rubrique globale comme n'importe quelle autre rubrique (saisie utilisateur, Définir rubrique, Insérer…)
- variables dites globales mais qui sont en fait des variables de session, notées $$nomDeLaVariable. Elle persistent pour toute la durée de la session mais pour un fichier spécifique.
Ces variables, de même que les locales (voir ci-dessous), peuvent être déclarées avec l'action de script Définir variable ou par calcul via les fonctions Definir et TantQue.
- variables locales, notées $nomDeLaVariable. Elles persistent pour le script en cours et meurent à la fin de l'exécution du script. Elles ne sont pas transmises à un sous-script.
- variables de calcul. Elles sont nommées sans notation particulière et sont valables uniquement au sein du calcul où elles sont définies. On peut les déclarer avec les fonctions Definir (Let) et TantQue (While). Elles sont transmises à une fonction Definir ou TantQue incluse ("un let dans un let").
Note : contrairement aux variables $, les variables de calcul ne sont pas accessibles par le moteur d'évaluation (indirection) : la fonction Evaluation (Evaluate) n'y a pas accès.
Quant au type, il est déterminé par le type de la rubrique pour les rubriques globales, et par le calcul pour les autres.
Si la rubrique toto, de type nombre, contient 32, alors, Définir variable [ $var ; table::toto ] donnera une variable de type nombre
Définir variable [ $age ; 59 ] donnera une variable de type nombre
Définir variable [ $age ; "59" ] donnera une variable de type texte
et ainsi de suite…
C'est pourquoi il est important de nommer ses variables de manière à ce que leur type soit clair. Je vois très souvent des variables nommées $fichier alors qu'elle contiennent un chemin de fichier, soit une chaîne de texte.
Pour moi, $chemin contient un chemin (type texte)
et $fichier contient de fichier binaire (type conteneur).
Voici un vieil article de votre serviteur sur les différences entre rubriques globales et variables globales.
https://www.1-more-thing.com/filemaker-variables-et-rubriques-globales/