
Il est nettement plus facile de traiter de tels problèmes si la modification d'une valeur de rubrique est directement enregistrée (ou, en français moderne, "tracée"). Dans les versions antérieures de FileMaker, cela pouvait être réalisé par exemple en utilisant les dialogues de saisie, en affichant un message d'erreur après avoir cliqué sur le bouton [OK]. Script a été appelé pour enregistrer l'opération. Avec les versions récentes de FileMaker, tout cela est possible grâce à Déclencheur de script est devenu nettement plus simple. Cet article montre comment procéder, avec le fichier d'exemple correspondant.
Les avantages de l'enregistrement des événements

Au travail : de quoi a-t-on besoin ?
Le développement d'un journal des événements pour une solution FileMaker existante est réalisable avec peu de moyens. Pour ce faire, il faut d'abord créer une nouvelle table contenant toutes les rubriques pertinentes pour la gestion des événements. Dans le fichier d'exemple, la table est nommée "Journal des événements".
Chaque événement enregistré correspond à un enregistrement dans cette table, la clé primaire automatique est appelée _pk_Evènement_ID. Dans le champ clé _fk_Fremdschlüssel, on enregistre la clé de référence à laquelle l'événement se rapporte. Par exemple, si un champ est modifié dans une base de données clients, ce champ est rempli avec la clé primaire de la base de données clients. La clé qui se trouve dans ce champ est enregistrée dans le champ Clé étrangère écrit.
Pour les modifications de champ, cette table contient également les champs suivants Contenu du champ_avant et Contenu du champ_aprèsLes champs de données sont des champs de données qui contiennent le contenu du champ avant et après la modification.
Deux scripts suffisent.
Pour enregistrer un événement, deux scripts sont nécessaires en plus de la table : un script sert à la simple saisie dans la table Journal des événements et doit être appelé avec un paramètre de script, et un autre script est nécessaire pour l'enregistrement des modifications de champ, qui est appelé par un déclencheur de script au niveau du champ concerné.
Enregistrer un événement
Examinons d'abord le script d'entrée pur [ts.Event Log], qui accepte les paramètres de script suivants :
- Clé étrangère
- Fichier
- Origine (script/champ, etc.)
- État (OK, erreur)
- Tableau
- Texte
- Type d'opération
- Type de clé étrangère
- Contenu du champ avant
- Contenu du champ après
Le script lui-même est structuré de manière simple, il écrit d'abord les valeurs contenues dans le paramètre de script dans des variables, puis dans un nouvel enregistrement de la table Journal des événements.
Ce script peut être appelé par n'importe quel autre script qui doit effectuer des entrées dans le journal des événements. Dans l'exemple de solution, l'enregistrement des événements de champ a également été réalisé et ce script l'appelle également.
Script [ts.enregistrer_événement_champ]
Le script ts.enregistrer_événement_de_champ est défini pour chaque champ en tant que déclencheur de script [À l'entrée de l'objet] et [à la sortie de l'objet]. Il peut prendre comme paramètre de script optionnel un onglet d'un contrôle de registre, au cas où le champ se trouverait dans une zone d'un contrôle de registre. Ceci est nécessaire pour que le script soit correctement exécuté après la création de l'enregistrement de journal. Elément de contrôle du registre sur la mise en page cible.
Le script vérifie d'abord si la variable système $$zone est remplie ou vide. Si cette variable système est vide, l'utilisateur est entré dans un champ et le script remplit la variable système $$zone avec le nom du champ actif et $$contenu_du_champ_avant avec le contenu du champ avant la modification. Après cela, le script est déjà quitté, car c'est tout ce que le script doit faire lorsqu'il entre dans un champ.
Si la variable système $$zone est déjà rempli, il se peut que l'utilisateur ait modifié le contenu du champ et qu'il soit en train de le quitter. Le script vérifie alors si le contenu du champ a été modifié et, en cas de modification, crée un enregistrement dans le journal des événements en appelant le sous-script ts.journal des événements. Si le champ se trouve dans un contrôle d'onglet et que le nom de l'onglet a été fourni comme paramètre de script, le script passe alors dans l'onglet indiqué, car après la saisie, il passerait sinon au contrôle d'onglet indiqué par défaut. Enfin, le script supprime à nouveau les variables 1TP4Cavaliers, $$zone, $$contenu_du_champ_avant et $$contenu_du_champ_aprèsLa variable système $$champ est à nouveau vide.
Attribuer des déclencheurs de script aux champs
Dans la dernière étape, il faut encore munir les champs souhaités de déclencheurs de script, afin que l'enregistrement dans le journal des événements puisse avoir lieu lors d'une modification de champ. Deux déclencheurs de script doivent être configurés par champ, chacun appelant le même script :
- SiObjektBetreten ["ts.enregistrer_événement_de_champ" ; {paramètre : "onglet"}]]
- A la sortie de l'objet ["ts.enregistrer_événement_de_champ" ; {paramètre : "onglet"}]]
Le paramètre de script "Onglet" est facultatif et n'est indiqué que si, comme dans le fichier d'exemple, le champ se trouve dans un contrôle d'onglet. Le nom de l'onglet est indiqué dans le champ de saisie. Inspecteur sous l'onglet [Position] dans le champ Nom doit être indiqué.
Fichier d'exemple d'enregistrement des valeurs de champ
A la fin de cet article, vous pouvez télécharger un fichier d'exemple pour FileMaker 12, dans lequel le journal des événements avec enregistrement des valeurs de rubrique a été réalisé. Vous pouvez utiliser ce fichier d'exemple comme base pour votre propre base de données ou pour transférer les fonctions dans votre propre solution FileMaker.
Télécharger le fichier d'exemple pour FileMaker 12
Pour transférer des scripts du fichier d'exemple dans votre solution, procédez comme suit
Les scripts peuvent être facilement transférés d'une solution FileMaker à une autre via le presse-papiers. Il suffit d'ouvrir la boîte de dialogue Gérer les scriptsSélectionnez le script souhaité avec la souris et copiez le script dans le presse-papiers par le menu [Edition - Copier] ou la combinaison de touches [Ctrl/Cmd-C]. Ouvrez ensuite la même boîte de dialogue dans la solution cible et collez simplement le script précédemment copié avec la commande de menu [Edition - Coller].
Pour transférer des tableaux du fichier d'exemple dans votre solution, procédez comme suit
Les tableaux peuvent être insérés de plusieurs manières dans une solution existante. La manière la plus simple est d'importer le tableau via le bouton [Importer...] de la boîte de dialogue Gérer la base de données. Dans la boîte de dialogue qui suit, il est possible de sélectionner tous les tableaux qui doivent être importés de la solution source. Cette méthode est donc particulièrement adaptée lorsque plusieurs tableaux doivent être importés en même temps. Si un seul tableau doit être importé, il est possible de le faire via le presse-papiers, comme un script. Si une table doit être importée avec toutes ses données, cela peut se faire avec la commande [Fichier > Importer des enregistrements > Fichier]. Dans la boîte de dialogue d'importation, il faut alors choisir comme table cible Nouveau tableau doit être indiqué.
Pour transférer des listes de valeurs du fichier d'exemple vers votre solution, procédez comme suit
Les listes de valeurs peuvent être facilement importées d'une solution FileMaker à une autre via le presse-papiers. Il suffit d'ouvrir la boîte de dialogue sous [Fichier > Gérer > Listes de valeurs], de sélectionner la liste de valeurs souhaitée et de cliquer sur le bouton "Ajouter". Liste de valeurs avec la souris et copiez la liste de valeurs dans le presse-papiers par le menu [Edition - Copier] ou la combinaison de touches [Ctrl/Cmd-C]. Ouvrez ensuite la même boîte de dialogue dans la solution cible et collez la liste de valeurs précédemment copiée avec la commande de menu [Edition - Coller].
Pour transférer vos propres fonctions du fichier d'exemple dans votre solution, procédez comme suit
Dans la boîte de dialogue [Fichier > Gérer > Fonctions propres...], cliquez sur le bouton [Importer] et sélectionnez ensuite le fichier exemple. Dans la boîte de dialogue suivante, sélectionnez les fonctions personnalisées souhaitées et confirmez la boîte de dialogue. Veuillez noter que cette fonction n'est disponible que dans FileMaker Pro Advanced, et non dans FileMaker Pro.

Markus Schall développe depuis 1994 des bases de données individuelles, des interfaces et des applications commerciales sur la base de Claris FileMaker. Il est partenaire de Claris, lauréat du FMM-Award 2011 et développeur de la Logiciel ERP gFM-Business. Il est en outre auteur de livres et fondateur du M. Schall Verlags.







C'est super, ça nous a beaucoup aidés. Merci beaucoup pour tout cela !