Script de recherche par activation d'enregistrements liés
Souvent on pense qu'une recherche dans FileMaker Pro passe obligatoirement par le mode Recherche. Il y a probablement des raisons historiques à ne pas utiliser suffisamment cette technique. L'une d'entre elles est liée au fait que seules les nouvelles versions de FileMaker Pro permettent de créer un lien à partir de globales ou de calculs non indexés, ce qui n'était pas possible précédemment. Par exemple, en utilisant cette méthode, nous pourrions simplement imaginer un lien à partir de 3 globales (qui, rappelons-le, possèdent la même valeur pour tous les enregistrements) vers 3 rubriques. Il suffit de remplir les globales avec ses critères de recherche et d'activer les enregistrements liés pour "trouver" le jeu d'enregistrements correspondant aux critères des globales... Simple, non ? Illustrons un cas concret : une mise à jour en utilisant la commande "Activer enregistrements liés" :
DescriptionDans notre fichier, depuis le modèle INS_Liste, on aimerait qu’en cliquant sur le nom, on active la fiche de la personne dans la table PER_Personnes (via le lien ins_PER__), sur le modèle PER_Fiche pour complèter une rubrique ControleInscription de la table PER avec le texte « Inscription OK », puis retour à notre liste du modèle INS. La première chose à faire est bien sûr de créer dans la table PER_Personnes (en se plaçant sur le modèle PER_Tech) une rubrique texte ControleInscription. Plaçons-la sur le modèle PER_Fiche, et, pour pouvoir visionner immédiatement le résultat de notre script, sur le modèle INS_LIste (à partir de l'OT ins_PER__). Du reste, pour ne pas allonger notre modèle, on peut même remplacer notre actuelle ::Commune par notre nouvelle rubrique. Comme elle provient de la même OT, il suffit de double cliquer dedans et de changer la rubrique (en modifiant le titre également). Activer Enregistrement liéCeci étant fait, depuis le menu FileMaker Pro, "Script", "ScriptMaker", on crée un nouveau script ActiverNom dont la première ligne de commande (après notre en-tête) est Activer enregistrement lié. On clique ensuite sur l'option "Définir" : Dans cette fenêtre, plusieurs options :
Comme on le voit, les possibilités sont nombreuses et il est important de bien les maîtriser. Dans notre cas, on ne veut que l'enregistrement lié, donc on coche Afficher uniquement enreg. liés et Faire correspondre uniquement les enregistrements actuels, car on ne veut que la fiche de la personne correspondant à une inscription. Remarque importanteAu sein d'un script, en dehors du cas ou il n'y a aucune action après l'activation des enregistrements liés, il est impératif de contrôler si, effectivement, des enregistrements liés ont bien été trouvés ! En effet, si aucun enregistrement lié n'est trouvé, FileMaker Pro ne bouge pas de modèle et reste donc dans son contexte d'origine. Conséquence : la suite des actions se passe dans un mauvais contexte. Le cauchemar absolu : si le but du script était d'activer des enregistrements pour les supprimer... aucun enregistrement n'est trouvé, et TOUS les enregistrements du jeu trouvé dans la table d'origine sont purement et simplement supprimés... Des seaux de larmes ont déjà été remplis, alors autant prévenir ! Mais nous connaissons maintenant la commande miracle pour pallier cela : Si [Obtenir(DernièreErreur) ≠ 0] Le scriptVoici le script complet : On voit donc que, juste après la commande Activer enregistrement lié, on place la capture d'erreur avec 3 lignes de commande :
Si tout est en ordre, c'est à dire si effectivement un enregistrement lié est trouvé, alors le Si n'est pas vérifié. On saut donc directement à la ligne Fin de si et, seulement à cette condition, on peut effectuer la suite des opérations comme prévu : "Définir rubrique [PER__::ControleInscription; "Inscription OK"]. Ensuite, on n'oublie surtout pas de revenir sur notre modèle de départ. BoutonPour déclencher le script, nous allons placer un bouton à côté des rubriques du modèle INS_Liste, avec le script comme commande : Un simple clic sur le bouton à côté d'un nom de personne inscrite actualisera la rubrique PER__::ControleInscription en y plaçant la mention "Inscription OK" et ce, de manière presque invisible pour l'utilisateur. Et voici le fichier à jour.
|