DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Attention : Il s'agit de la version 26 de cette page de documentation. Cette fonctionnalité peut avoir été modifiée ou supprimée en version supérieure.
Aide / WLangage / Gestion des bases de données / Gestion des triggers / Fonctions WLangage
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget iOSApple WatchCatalystUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
HDécritTrigger_55 (Fonction)
En anglais : HDescribeTrigger_55
Avertissement
La fonction HDécritTrigger_55 est équivalente à la fonction HDécritTrigger disponible dans les versions précédentes.
Cette fonction est conservée uniquement pour compatibilité (cette fonction sera encore supportée dans la prochaine version).
La fonction HDécritTrigger a évolué et permet une gestion avancée des triggers. Pour bénéficier de toutes les nouveautés, utilisez la nouvelle syntaxe de la fonction HDécritTrigger.
Voici la documentation disponible avec WINDEV 5.5.
 
But
Ajouter ou modifier un trigger sur Hyper File. Un trigger est une procédure en WLangage appelée automatiquement par Hyper File à chaque exécution d'une fonction Hyper File.
Syntaxe
  • Syntaxe 1: Ajouter un trigger
    <CodeErreur>=HDécritTrigger_55(<ListeNomLogiqueFichierHF>, <ListeNomFonctionHF>, <NomProcédureWLangage>, <Type>)
    • <CodeErreur> est un entier permettant de contrôler l'action de la fonction HDécritTrigger
    • <ListeNomLogiqueFichierHF> est une chaîne de caractères contenant le nom logique d'un ou de plusieurs fichiers Hyper File. Pour indiquer plusieurs noms de fichiers il faut séparer les noms des fichiers par une virgule (","). Pour indiquer tous les fichiers de l'analyse, il faut indiquer "*".
    • <ListeNomFonctionHF> est une chaîne de caractères contenant le nom d'une ou de plusieurs fonction(s) Hyper File (HAjoute, HModifie, HSupprime). Pour indiquer plusieurs noms de fonctions il faut séparer les noms des fonctions par une virgule (",").
  • Syntaxe 2: Activer/Désactiver un trigger
    <CodeErreur>=HDécritTrigger_55(<ListeNomLogiqueFichierHF>, <ListeNomFonctionHF>, <Type>, <bActiver>)
    • <CodeErreur> est un entier permettant de contrôler l'action de la fonction HDécritTrigger
    • <ListeNomLogiqueFichierHF> est une chaîne de caractères contenant le nom logique d'un ou de plusieurs fichiers Hyper File. Pour indiquer plusieurs noms de fichiers il faut séparer les noms des fichiers par une virgule (","). Pour indiquer tous les fichiers de l'analyse, il faut indiquer "*".
    • <ListeNomFonctionHF> est une chaîne de caractères contenant le nom d'une ou de plusieurs fonction(s) Hyper File (HAjoute, HModifie, HSupprime). Pour indiquer plusieurs noms de fonctions il faut séparer les noms des fonctions par une virgule (",").
  • Syntaxe 3: Détruire un trigger
    <CodeErreur>=HDécritTrigger_55(<ListeNomLogiqueFichierHF>, [<ListeNomFonctionHF> [,<Type>]])
    • <CodeErreur> est un entier permettant de contrôler l'action de la fonction HDécritTrigger
    • <ListeNomLogiqueFichierHF> est une chaîne de caractères contenant le nom logique d'un ou de plusieurs fichiers Hyper File. Pour indiquer plusieurs noms de fichiers il faut séparer les noms des fichiers par une virgule (","). Pour indiquer tous les fichiers de l'analyse, il faut indiquer "*".
    • <ListeNomFonctionHF> est une chaîne de caractères contenant le nom d'une ou de plusieurs fonction(s) Hyper File (HAjoute, HModifie, HSupprime). Pour indiquer plusieurs noms de fonctions il faut séparer les noms des fonctions par une virgule (",").
    • <NomProcédureWLangage> est une chaîne de caractères contenant le nom d'une procédure WLangage
    • <Type> est une des constantes du WLangage suivante :
      • hTriggerAvant pour que la procédure WLangage soit exécutée avant la fonction Hyper File
      • hTriggerApres pour que la procédure WLangage soit exécutée après la fonction Hyper File
    • <bActiver> est une booléen à Vrai pour activer le trigger, à Faux pour le désactiver.
Détail
  • Il est possible de définir des triggers sur les fonctions Hyper File de modifications suivantes : HModifie, HAjoute, HSupprime, HEcrit, HRaye
  • Les triggers sont créés dynamiquement avec la fonction HDécritTrigger_55. Un trigger est toujours associé à un fichier logique. Les paramètres d'un trigger sont:
    • le nom logique du fichier auquel s'applique le trigger
    • le nom de la fonction WLangage à appeler (il doit s'agir d'une procédure globale sans paramètres)
    • le nom de la fonction Hyper File à laquelle s'applique le trigger
    • le type de trigger (AVANT ou APRES)
  • L'existence de la procédure globale n'est pas vérifiée lors du HDécritTrigger_55. Si au déclenchement du trigger cette fonction n'existe pas, une erreur WLangage est générée.
  • Les codes d'erreur possibles pour <CodeErreur> sont:
    • 0 : pas d'erreur
    • 1 : fichier logique inconnu
    • 2 : pas d'analyse en cours
    • 3 : trigger inconnu
    • 4 : fonction Hyper File inconnue
    • 5 : fonction Hyper File non conforme pour utilisation des triggers
    • 6 : type inconnu
    • 7 : nom de procédure WLangage vide (si le nom de la procédure est une chaîne vide)
  • Il n'est pas possible de définir plusieurs procédures pour un même fichier logique, même fonction Hyper File, même type. Si un trigger existe déjà, il est remplacé.
  • Si <ListeNomLogiqueFichierHF>="*", la commande s'applique à tous les fichiers de l'analyse en cours (les fichiers créés avec HDécritFichier et HAliasExterne ne sont pas pris en compte)
  • Une procédure de type trigger ne reçoit aucun paramètre. Toutefois, un certain nombre de variables d'état Hyper File sont positionnées avant chaque appel:
    • h.nomfichier est une chaîne qui contient le nom logique du fichier dont le trigger est activé
    • h.action est un caractère initialisé à "A" pour un trigger Avant, "P" pour un trigger après.
    • h.FonctionTrigger est une chaîne qui contient le nom de la fonction Hyper File qui a déclenché le trigger
  • Pendant l'exécution d'un trigger avant, il est possible d'annuler l'exécution de la fonction Hyper File en cours en affectant "A" à la variable d'état Hyper File h.afaire : h.afaire = "A"
  • Si une fonction Hyper File a un trigger AVANT et un trigger APRES, alors si le trigger AVANT annule la fonction (en positionnant h.afaire à "A") le trigger APRES n'est pas déclenché.
Notes
  • Dans une procédure de type Trigger il est possible d'appeler des fonctions Hyper File sur n'importe quel autre fichier, y compris celui qui est en cours (sauf pour faire la même opération).
  • Attention : Toute action sur l'enregistrement en cours dans un traitement déclenché par un trigger sur les fonctions HSupprime, HModifie ou HRaye est déconseillée.
  • Si pendant l'exécution de la procédure appelée par trigger, une fonction Hyper File elle aussi "triggée" est appelée, le trigger correspondant sera déclenché. Il est nécessaire de prendre des précautions dans de tels cas pour éviter des boucles infinies.
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 18/08/2020

Signaler une erreur ou faire une suggestion | Aide en ligne locale