WinDev 21 : La gestion des bases de données HFSQL

Aborder le codage avec les triggers

Testez gratuitement nos 1268 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Découvrez quelques lignes de code nécessaires pour programmer un trigger. Ce trigger va réagir aux évènements de modification de fichiers sur le serveur HFSQL client/serveur.
07:02

Transcription

Donc nous allons maintenant créer le trigger. Le trigger c'est ici donc je clique droit et je fais Nouveau Trigger Cette fois il est content, il veut bien le faire, tout à l'heure il voulait pas parce qu'il n'y avait pas de procédure. Donc il me demande quelle est la procédure à exécuter lors du déclenchement du trigger ? De toute façon j'en ai qu'une, c'est celle-là : Enregistrer_Historique_Modification. Est-ce que je veux la déclencher avant l'exécution de la fonction ou après ? Alors en l'occurrence ça sera plutôt intéressant de le faire après, on enregistre l'historique que si la modification a effectivement eu lieu. Et quelles sont les fonctions HFSQL qui vont déclencher le trigger ? Alors toutes, non. On va dire Écriture, Modification, Ajout. C'est surtout modification et ajout en fait ici. Et surtout ici il faut que je précise sur quel fichier ça va se passer évidemment. D'où l'intérêt d'avoir utilisé le mot générique MonFichier puisque je vais pouvoir utiliser cette procédure sur n'importe quel fichier de mon analyse. Ou plus exactement dans la base de données. Voilà, je valide tout ça, je génère. Et il va mettre à jour notamment le trigger sur le serveur, c'est ce qui est important, voilà. Alors maintenant il s'agit de déclencher ce trigger. Alors pour le déclencher le plus simple ici on pourrait ajouter des boutons éventuellement dans notre fenêtre, mais je vais faire plus simple que ça, on va tout simplement rendre la table modifiable, ce qui devrait normalement être suffisant. Je vais aller donc sur IHM je vais rendre la table En saisie. Je suis bien sur la table ici, voyez En saisie. Et je vais aller sur Détail et je vais faire Saisie en cascade, ça permet d'ajouter des enregistrements. Maintenant je vais pouvoir exécuter ma table enfin ma fenêtre, mon projet. Et faire des modifications, alors pas dans la colonne Historique, ça serait idiot. Je vais modifier quelques petits détails, les abeilles on va dire que ça vit deux ans, en réalité c'est moins d'un an, mais. Voilà, regardez c'est instantané. On va en créer un justement, l'animal XYZ. Voilà, et il me l'a mis ici. Alors c'est amusant parce qu'il a mis une photo il a pris le dernier animal sélectionné ou quelque chose comme ça. Donc voyez que ça fonctionne parfaitement, c'est même pratiquement instantané, donc le champ Historique a été modifié par le trigger. Alors maintenant pour aller un petit peu plus loin ce serait bien de savoir si on a affaire à un ajout, une modification, et puis d'avoir éventuellement la date, et pourquoi pas le nom de la personne. Donc ici on va modifier légèrement notre procédure stockée. Voilà. On va ajouter notamment un petit test, pour savoir si on est en ajout ou en modification. Petit Contrôle + w ici. Alors vous avez une variable sous forme de structure qui s'appelle H et dont un des éléments s'appelle Fonction Trigger et qui renvoie donc HAjoute ou HModifie selon que l'on est dans un cas ou dans l'autre. Alors pour le tester, on va utiliser un SELON, ça pourrait être un SI à la rigueur mais comme il y a deux cas, le SELON est plus adapté. SELON h.FonctionTrigger et là on va avoir deux cas : on va avoir le cas HAJOUTE et on va avoir le cas HMODIFIE. Voilà, et l'autre cas par contre ça ne sert à rien. Alors pas précaution je mets toujours ici un Majuscule parce que, bon on peut regarder la doc, mais je suis jamais sûr de savoir si la valeur envoyée est en majuscules ou pas. En écrivant ça, on est sûrs que ça fonctionne. Et puis il n'y aura pas de doute, ça sera toujours une source de bug en moins. Et donc ici on va écrire des choses différentes. On va écrire, on va prendre cette ligne. Dans le cas du HAJOUTE, et bien dans le champ Historique on va pas mettre une modification du coup, on va mettre Ajout, voilà, et dans le cas de la modification, là on se contente de Modification. Si on veut ajouter un petit peu plus d'informations, on va pouvoir écrire quelque chose du style Le, alors Ajout le ici on va ajouter la date, donc je vais faire un date. DateVersChaîne de DateDuJour Voilà. Etc. "a" Heures J'ai oublié le petit +, j'ai oublié deux fois le petit + en plus, voilà. Heure. Vers. Chaîne. de Heure Sys Et là il faut normalement lui donner le format, donc dans ce style-là, et puis à la limite, on pourrait ajouter la personne qui a fait la modification. Et pour ça on dispose d'une autre fonction, une structure encore une fois qui s'appelle InfoExecution Voilà, login qui normalement renvoie le nom de la personne connectée sur le serveur Hyper File SQL. Par contre là évidemment si votre application se connecte sur le même nom pour tout le monde, vous pourrez pas distinguer qui a vraiment fait la manip. Donc ça, c'est à voir peut-être qu'il pourrait être nécessaire - il manque un petit + ici aussi - peut-être qu'il pourrait être nécessaire de faire en sorte que les gens se connectent chacun sur un compte différent si vous voulez vraiment avoir ce genre d'information. Je vais copier ça, je vais le mettre ici, voilà, pour avoir la même chose sur les deux. Ça devrait être suffisant. Ok, on va enlever quelques lignes vides. Bon j'aurais pu faire plus simple en créant cette phrase dans une variable, que j'aurais mis ensuite, ajoutée derrière, mais bon. Là vous avez l'idée de ce que je voulais faire. Donc on va enregistre tout ça, on va enregistrer surtout la procédure, on va aller mettre à jour l'analyse en la régénérant, l'analyse elle-même, c'est pas trop elle qui doit être mise à jour, c'est surtout le serveur, voilà avec la collection de procédures qui a été modifiée. Maintenant on va revenir sur la fenêtre, on va voir si ça marche bien, on va exécuter le projet. Donc là si je fais une petite modification je vais remettre "un an" pour les abeilles. Et on va regarder les colonnes pour voir ce qu'il a mis comme nom de login. Je sais pas trop s'il l'a pris, oui il a mis Admin j'ai oublié l'espace entre les deux mais vous avez compris l'idée ! Donc comme je vous disais c'est le nom de login, connexion à la base de données qui a été utilisé. Voilà, si je fais une modification sur les baleines, on va les rendre un peu plus vieilles, on va dire qu'elles vivent 220 ans, ça fonctionne très bien, et pour l'ajout, on va faire comme tout à l'heure on va en ajouter un, je vais l'appeler ZZZ. Voilà, il a pris la même photo par défaut, et là il a bien mis Ajout. Donc voilà comment fonctionnent les triggers, nous avons mis en place un trigger qui se déclenche à la création d'un enregistrement ou à la modification d'un enregistrement. Et avec ça, vous pouvez faire tout ce que vous voulez.

WinDev 21 : La gestion des bases de données HFSQL

Découvrez les manipulations, les outils et les possibilités intéressantes des bases de données HFSQL dans WinDev. Installez, utilisez, et gérez le serveur HFSQL client/serveur.

2h03 (23 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
WinDev WinDev 21
Spécial abonnés
Votre/vos formateur(s) :
Date de parution :23 févr. 2016
Durée :2h03 (23 vidéos)

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !