Jump to content
  • 0

[Demo] Émuler Un Trigger À La Sql


Stevenadeau
 Share

Question

Bonjour à tous,

voilà déjà quelques mois que nous avons assisté à la conférence FileMaker de Montréal. Durant cette fin de semaine, on m'a demandé d'élaborer sur ma technique utilisée afin de créer des triggers directement sur un ou plusieurs champs.

L'exemple que je démontre aujourd'hui a servi (et sert toujours, d'ailleurs!) à établir un historique de certaines informations qui sont changées régulièrement dans le processus chez Décalcorama.

Voici donc à quoi ressemble le graph des liens pour cette technique

Screen shot 2012-07-09 at 1.35.16 PM.png

Cette technique nécessite le plugin "SQLRunner", puisque FileMaker ne nous a pas donné encore accès aux fonctions de modifications des données par SQL (je retire des privilèges à mes enfants lorsqu'ils ne sont pas assez gentils, ou encore lorsque je crois qu'il ne seront pas capable de gérer ces privilèges.) Vous pouvez trouver ce plugin ici.

Le but recherché est très simple: je veux qu'à chaque fois qu'un utilisateur modifie une infos sur une série de champs bien précis un historique se crée dans une autre table. Bien sûr, je pourrais arriver au même résultat en mettant des script triggers un peu partout. Je n'aime pas ça, puisque j'ai beaucoup de layouts a gérer (200+). De plus, je ne dois jamais oublier de mettre mon script trigger lorsque j'ajoute un de ces champs dans un nouveau layout que je monte pour un usager.

Or, avec cette technique je m'assure de rendre ma solution modulaire.

Je crée une table "HistoriqueCL" et j'y inclus les champs que je veux conserver en auto-enter (un lookup peut faire aussi)

Screen shot 2012-07-09 at 1.44.11 PM.png

Ensuite, je n'ai qu'à créer un champ global auto-enter dans la table "CL". Voici sa définition:

Evaluate( "epSQLExecute( \"INSERT INTO HistoriqueCL(ID_CL) Values(\" & Commande_Lignes::No Unique & \")\" )" ;
[

// Lister ici tous les champs qui doivent trigger la création d'historique

// Transport
Transport_Calcul ;
Transport_Service_Calcul ;
Transport_Paiement_Calcul ;
Transport_Type_Calcul ;
DestComplet_Final ;
ExpComplet_Final ;


// Qte
QteSaisie ;
QteExped ;
QteFact ;

// Prix
Prix_Cost_Unitaire ;
Prix_Cost_Unitaire_Backup ;
Prix_Detail_Unitaire ;
Prix_Qt ;
Prix_Transfert_Unitaire ;
Prix_Vendant_Unitaire ;
Prix_Vendant_Unitaire_Backup ;

// Code
CodeProduit_Saisie ;

// Dates
Date d'expédition calcul ;

] )[/Code]

La fonction "Evaluate" peut être muni d'un nombre illimité de paramètres suivant le calcul. Selon l'aide de FileMaker, ces paramètres servent de trigger au calcul du Evaluate.

Ce n'est pas plus compliqué que ça !

Comment j'ai pensé à tout ça ? Le directeur de production m'appelait pour me dire: "Le client s'est plaint qu'on n'a pas envoyé à la bonne adresse. Qui a changé l'adresse du destinataire?". Je devais ensuite soit fouiller dans les backups pour espérer trouver quelque chose, soit appeler tout le monde qui était susceptible d'avoir changé les infos sur cette commande. Comme la commande avait été expédiée il y a quelques jours, plus personne ne s'en rappelait.

Je peux désormais appeler directement la personne en question et lui demander "Pourquoi as-tu changé les infos de transport le 5 Juin 2012 à 13:45:08 ?"

Bonne journée !

[OS] Ça aurait fait un beau topo pour Toulouse ! [/OS]

post-7590-0-35963800-1341855364_thumb.pn

post-7590-0-56218900-1341855877_thumb.pn

post-7590-0-35963800-1341855364_thumb.png

post-7590-0-56218900-1341855877_thumb.png

post-7590-0-35963800-1341855364_thumb.png

post-7590-0-56218900-1341855877_thumb.png

post-7590-0-35963800-1341855364_thumb.png

post-7590-0-56218900-1341855877_thumb.png

post-7590-0-35963800-1341855364_thumb.png

post-7590-0-56218900-1341855877_thumb.png

post-7590-0-35963800-1341855364_thumb.png

post-7590-0-56218900-1341855877_thumb.png

post-7590-0-35963800-1341855364_thumb.png

post-7590-0-56218900-1341855877_thumb.png

post-7590-0-35963800-1341855364_thumb.png

post-7590-0-56218900-1341855877_thumb.png

post-7590-0-35963800-1341855364_thumb.png

post-7590-0-56218900-1341855877_thumb.png

post-7590-0-35963800-1341855364_thumb.png

post-7590-0-56218900-1341855877_thumb.png

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...