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

Découvrir les triggers

Testez gratuitement nos 1330 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Vous allez passer en revue les principes des triggers serveurs dans WinDev, avec le serveur HFSQL client/serveur.
06:32

Transcription

Alors maintenant que nous avons vu les procédures stockées nous allons aborder les triggers. Les triggers utilisent justement les procédures stockées et pour cela je vous propose d'ouvrir le projet qui utilise la base Animaux. Il se trouve sur le serveur donc. C'est le projet que nous avons crée dans une vidéo précédente. Et qui s'appelait, on va le voir tout de suite, Mon_Projet_BDD. Donc ici j'ai ma base de données Animaux, voilà. Donc le principe va être d'exécuter une procédure stockée sur le serveur à la suite d'un événement particulier survenu sur le fichier. En général c'est des événements assez simples du style Ajout d'un enregistrement, Suppression d'un enregistrement, Modification d'un enregistrement etc. Les triggers vont se définir ici. Voyez, donc je vais pouvoir, alors il faut ouvrir l'analyse d'abord évidemment. Je vais pouvoir définir un trigger en fonction d'une procédure stockée que je dois auparavant créer. Donc je vais commencer par cette procédure-là, je vais créer une connexion de procédure stockée, donc il l'a appelée Collection_Mon_Projet_Bdd je l'enregistre. Ok, il y en avait déjà une, j'avais dû faire un test précédemment, et je vais maintenant donc. Créer là-dedans une nouvelle procédure globale. Cette procédure, je vais l'appeler Enregistrer. Historique Modifications. Voilà l'idée. Je voudrais pouvoir enregistrer quelque part toutes les modifications que je ferai dans le fichier Animaux. Alors il y a plusieurs façons de voir les choses, je pourrais les enregistrer dans un fichier à part, mais je pourrais aussi les enregistrer dans le fichier lui-même. Alors je vais enlever le petit "e" ici qui est en trop, voilà. Dans le fichier lui-même donc, c'est ce que je vais faire ici pour simplifier la démonstration. Ça veut dire que dans le fichier Animaux je vais devoir ajouter un champ historique et bien sûr je ne pourrai enregistrer que les modifications et les ajouts, pas les suppressions, puisque si je supprime un animal, par définition je pourrai pas l'enregistrer dans l'historique puisque l'enregistrement ne sera plus là. Donc je vais ouvrir mon fichier Animaux et je vais ajouter un petit champ Historique. On va créer la rubrique, voilà. Et on va lui donner une longueur. Le problème c'est que si on fait ça dans une vraie application, où les enchaînements sont susceptibles d'être modifiés très souvent ou même très longtemps en tout cas, on sait pas quelle longueur ça aura, donc le mieux c'est peut-être de partir sur un champ Mémo. On pourra enregistrer un nombre à priori infini d'informations dans l'historique, même si c'est pas vraiment infini mais voilà, là on sait qu'on aura de la place en tout cas. Donc je vais enregistrer tout ça, je vais générer mon analyse... Je vais mettre à jour, évidemment sur le serveur. Il envoie la collection de procédures sur le serveur qui contient rien pour l'instant mais c'est pas grave, on peut déjà l'envoyer, on la mettra à jour plus tard. Ok donc la base de données est mise à jour, je vais venir ici sur ma table, je vais faire un petit Contrôle + w pour enlever les panneaux. Et je vais ajouter le champ Historique dans une colonne de façon à ce qu'on puisse voir le résultat quand même. Donc ici on va ajouter une colonne, voilà, on va l'appeler Historique. Et ça va être de type Texte multi-ligne plutôt et la liaison se fera sur le champ Historique. Donc pour l'instant évidemment il n'y a pas grand chose à afficher. Mais plus tard on aura normalement des choses visibles. Je vais fermer cette fenêtre. Donc maintenant je reviens sur ma collection de procédures. Je vais enlever les commentaires ici pour que ça ressorte mieux sur l'écran. Je vous conseille, dans la pratique de ne pas hésiter à mettre des commentaires. Donc ici je vais devoir ajouter du code pour remplir ce champ que je viens de créer dans le fichier de données, le petit champ Historique, à chaque fois qu'on fera une modification d'un enregistrement ou un ajout d'enregistrement. Et ce code donc sera exécuté par le fameux trigger que je mettrai en place une fois que la procédure sera existante. Alors dans un premier temps pour que vous compreniez bien ce que nous allons faire je vais me contenter d'écrire dans le champ, sans chercher à savoir si on est en ajout, en modification, etc. Ça sera déclenché dans les deux cas. Le champ en question s'appelle donc Historique et ce champ fait partie du fichier. Le problème c'est qu'ici, dans ma procédure, je ne sais pas vraiment dans quel fichier je suis. Parce qu'à priori elle pourrait être appelée de n'importe quel fichier. On pourrait même faire une procédure générique qui fonctionnerait dans plusieurs fichiers justement. Alors donc ici on va utiliser une variable. Un nom prédéfini qui s'appelle MonFichier un peu comme parfois vous avez pu utiliser MaFenêtre ou moi-même, etc. Donc MonFichier désigne le fichier par lequel on a déclenché la procédure dans laquelle on se trouve. Et dans ce fichier je vais écrire dans le champ Historique mais évidemment comme il ne sait pas dans quel fichier je suis en vérité c'est à moi de taper le nom du champ, de la rubrique en l'occurrence, 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. Donc dans cette rubrique Historique je vais écrire simplement un petit bout de texte : Modification ou ajout pour l'instant, on verra on fera un peu mieux plus loin, voilà. Et je vais ajouter un retour chariot parce qu'à chaque fois qu'il déclenchera cette procédure il va écrire dans champ et ça serait bien qu'il l'ajoute à la suite évidemment. Ah d'ailleurs, oui. Qu'il l'ajoute à la suite ça veut dire qu'il faut que je fasse ici un += pour l'ajouter à la suite et ne pas remplacer le champ existant. Donc += est équivalent à dire mon fichier historique égale mon fichier historique plus modifications/ajouts. Et surtout ne pas oublier bien entendu d'enregistrer l'enregistrement, la modification, donc j'écris un HModifie de MonFichier. Je vais donc enregistrer cette procédure. Je peux revenir donc à mon analyse. Petit Contrôle + w pour récupérer le petit panneau à droite, et je vais donc créer un trigger, comme nous allons le voir dans la prochaine vidéo.

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
Date de parution :23 févr. 2016

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 !