Lire le contenu d'une fiche d'une base FileMaker Pro. Imaginons qu'on veuille récupérer des données contenues dans une base FileMaker. La première possibilité consiste à exporter le contenu des fiches voulues dans un fichier de type CSV (comma separated value) ou tab-delimited. Ensuite, on lira le contenu de ce fichier. Une autre possibilité consiste à lire le contenu d'une ou plusieurs fiches directement dans une base FileMaker ouverte. Attention, le script ci-dessous requiert l'utilisation de FileMaker et de la base de données d'exemple. Téléchargez la base de données ici.
Le Script : setcarteto{prenom:"",nom:"",anniversaire:""}
tell application "FileMaker Pro" setprenomofcarteto cellValue of cell "prenom"of current record offront database setnomofcarteto cellValue of cell "nom"of current record offront database setanniversaireofcarteto cellValue of cell "anniversaire" of current record offront database end tell
return carte
Explications : Ce script permet de lire le contenu des champs de la base de données, ouverte dans FileMaker, qui se trouve au premier plan : on choisit de lire dans "Front database". De plus, on ne lit que le contenu de la fiche active "current record".
Astuce :
Si on a plusieurs bases ouvertes, il sera préférable de connaitre les noms des bases afin de cibler la bonne base. On utilisera alors "cellValue of cell "anniversaire" of current record of database "exemple.fp7"".
Lire le contenu de toutes les fiches d'une base FileMaker Pro. Imaginons qu'on veuille récupérer toutes les données contenues dans toutes les fiches d'une base FileMaker. On pourra utiliser le script de l'exemple précédent en lui adjoignant une boucle.
Le Script : setma_listeto{} setcarteto{prenom:"",nom:"",anniversaire:""}
tell application "FileMaker Pro" to set nombre_de_ficher to count records in front database
repeatwithifrom1tonombre_de_ficher tell application "FileMaker Pro" setprenomofcarteto cellValue of cell "prenom"of record i offront database setnomofcarteto cellValue of cell "nom"of record i offront database setanniversaireofcarteto cellValue of cell "anniversaire" of record i offront database end tell
set ma_liste to ma_liste&(carte as list)
end repeat
return ma_liste
Explications : • On utilise "count records" pour connaitre le nombre de fiche(s) dans la base puis on exécute une boucle qui lit le contenu des fiches une à une.
• Le contenu des fiches est mis dans une variable de type "record" puis cette variable est transtypée en "list" et ajoutée dans la variable "ma_liste" qui est de type "list". On a recours à cette manipulation assez inélégante uniquement dans le but de rendre cet exemple visuel lors de l'affichage du contenu de "ma_liste".
Le Script : setcarteto{prenom:"Arnaud",nom:"M.",anniversaire:"15/10/1273"}
tell application "FileMaker Pro" setnouvelle_fiche to create new record
go to nouvelle_fiche set cellValue of cell "prenom"of current record offront database toprenomofcarte set cellValue of cell "nom"of current record offront database tonomofcarte set cellValue of cell "anniversaire"of current record offront database toanniversaireofcarte end tell Explications : On crée une nouvelle fiche de la façon habituelle, puis on va jusqu'à cette fiche et on la remplit en utilisant les données de la variable "carte". Pour modifier le contenu d'une fiche, on se serait déplacé dans la base jusqu'à la fiche à modifier, puis on aura mis-à-jour le(s) champ(s) voulu(s).
Astuce : Il est possible d'utiliser ce script au sein même de la base FileMaker. C'est ce qui a été fait dans le script "Ajouter une fiche pré-remplie" de la base de données servant d'exemple.