DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Gestion des bases de données / HFSQL / Fonctions HFSQL Client/Serveur / Procédure WLangage
  • Procédure WLangage exécutée dans le thread principal
  • Procédure WLangage exécutée dans un thread secondaire
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Procédure WLangage appelée par la fonction HSurveille
Procédure WLangage (également appelée "callback") appelée par la fonction HSurveille lors d'un changement sur le fichier de données spécifié.
Exemple
// Lance la surveillance du fichier de données Commande
// La procédure TraiteCommande est appelée pour tout ajout d'enregistrement dans le fichier de données
HSurveille(Commande, TraiteCommande, hNumEnrTous, hsAjout)

PROCÉDURE TraiteCommande(NomFic, NumEnreg, Action)
SI ETBinaire(nAction, hsAjout) = hsAjout ALORS
	Trace("Un ajout a été effectué dans le fichier de données : " + NomFic)
FIN
Syntaxe
HSurveille_Callback(<Fichier de données modifié> , <Numéro de l'enregistrement> , <Action>)
<Fichier de données modifié> : Chaîne de caractères
Nom du fichier de données HFSQL modifié.
<Numéro de l'enregistrement> : Entier
Numéro de l'enregistrement modifié (équivalent du numéro renvoyé par la fonction HNumEnr).
<Action> : Constante de type Entier
Action qui a déclenché la procédure. Les valeurs possibles sont :
hsAjoutProcédure lancée suite à l'ajout d'un enregistrement dans le fichier de données.
hsModificationProcédure lancée suite à la modification d'un enregistrement dans le fichier de données.
hsRayeProcédure lancée suite au rayage d'un enregistrement dans le fichier de données.
hsSuppressionProcédure lancée suite à la suppression d'un enregistrement dans le fichier de données.

Attention : Si un traitement effectue l'ajout d'un enregistrement suivi immédiatement d'une modification de cet enregistrement, un seul appel est fait à la fonction HSurveille avec une combinaison des constantes hsAjout et hsModification.
Pour identifier ces actions dans la procédure WLangage, il est nécessaire d'utiliser la fonction ETBinaire. Par exemple :
SI ETBinaire(nAction, hsAjout) = hsAjout ALORS ...
Remarques

Procédure WLangage exécutée dans le thread principal

Cette procédure WLangage est appelée par défaut dans le thread principal de l'application, avec le contexte HFSQL correspondant à la procédure :
  • Si la procédure est une procédure locale d'une fenêtre utilisant un contexte indépendant, le contexte utilisé sera celui de la fenêtre.
  • Si la procédure appartient à un composant utilisant un contexte indépendant, le contexte utilisé sera celui du composant.
Attention :
La procédure associée à la fonction HSurveille peut être appelée à n'importe quel moment dans l'application.
Si la procédure effectue des parcours HFSQL ou des déplacements dans des fichiers de données, cela impactera l'application (comme les timers).
Il peut donc être nécessaire d'utiliser les fonctions HSauvePosition et HRetourPosition pour sauvegarder les contextes des fichiers manipulés.
Il ne faut pas utiliser la fonction Multitâche dans le code de la procédure.

Procédure WLangage exécutée dans un thread secondaire

Si la procédure WLangage est appelée dans un thread secondaire :
  • une copie "légère" du contexte HFSQL est effectuée au moment du premier appel à la fonction Procédure WLangage appelée par la fonction HSurveille. Seuls les répertoires où se trouvent les fichiers de données en HFSQL Classic et/ou les connexions en HFSQL Client/Serveur sont mémorisés.
    Remarque : Si la fonction HChangeRep est appelée entre deux appels à la fonction Procédure WLangage appelée par la fonction HSurveille, la fonction HChangeRep n'est pas prise en compte. Exemple :
    HSurveille(UnFichier, hThreadSecondaire)
    // La fonction HChangeRep n'est pas prise en compte
    HChangeRep(UnAutreFichier)
    HSurveille(UnAutreFichier, hThreadSecondaire)
  • il est interdit de manipuler l'UI (fenêtres, champs, etc.) dans le thread secondaire. Lorsqu'un thread secondaire doit interagir avec l'utilisateur ou mettre à jour l'UI, il doit utiliser un traitement lancé depuis le thread principal. Ce traitement peut correspondre à :
    • une procédure globale du projet ou une procédure locale (d'une fenêtre, etc.) appelée par la fonction ExécuteThreadPrincipal,
    • l'événement "Demande de mise à jour de l'affichage" d'une fenêtre exécuté grâce à la fonction DemandeMiseAJourUI.
Classification Métier / UI : Code neutre
Composante : wd290hf.dll
Version minimum requise
  • Version 22
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 26/03/2024

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