DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Gestion des bases de données / HFSQL / Fonctions HFSQL
  • Conditions d'utilisation de la fonction HLibèreRequête
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
Libère les ressources d'une requête (suite à l'utilisation des fonctions HExécuteRequête ou HExécuteRequêteSQL).
Remarque : Cette fonction est basée sur la fonction HAnnuleDéclaration.
Quand utiliser la fonction HLibèreRequête ?
Cette fonction peut être utilisée lorsqu'aucun traitement n'a plus à utiliser de résultat en provenance d'une requête. Il est conseillé d'utiliser cette fonction sur les requêtes qui renvoient un grand nombre de lignes (à partir de plusieurs dizaines de milliers) afin de libérer de l'espace mémoire.
Exemple
// Initialise la requête
SI HExécuteRequête(MaRequête) = Faux ALORS
Erreur("Erreur d'initialisation de la requête" + RC + HErreurInfo())
RETOUR
FIN
 
// Lecture du premier enregistrement de la requête
HLitPremier(MaRequête)
TANTQUE PAS HEnDehors()
// Traitement sur l'enregistrement de la requête
...
// Lecture de l'enregistrement suivant
HLitSuivant()
FIN
HLibèreRequête(MaRequête)
Syntaxe
<Résultat> = HLibèreRequête([<Requête>])
<Résultat> : Booléen
  • Vrai si l'opération a été réalisée,
  • Faux en cas de problème. La fonction HErreur permet d'identifier l'erreur.
<Requête> : Chaîne de caractères optionnelle
Nom de la requête ou d'une source de données associée à une requête (cas d'une libération de ressources suite à l'utilisation des fonctions HExécuteRequête ou HExécuteRequêteSQL).
Si ce paramètre n'est pas spécifié, correspond au dernier fichier de données manipulé.
Remarques

Conditions d'utilisation de la fonction HLibèreRequête

Cette fonction ne doit être utilisée QUE lorsque vous n'avez plus besoin de la requête concernée !
Dans l'exemple suivant, la fonction HLibèreRequête est utilisée trop tôt : la table sera complètement faussée. En effet, le remplissage du champ Table par la fonction ConstruitTableFichier se produit dans un processus parallèle en arrière-plan. Donc, la fonction HLibèreRequête va intervenir bien avant la fin du remplissage du champ Table, ce qui rend ce champ inutilisable.
HExécuteRequêteSQL("test", "select * from client")
ConstruitTableFichier(TABLE_Table1, "test")
HLibèreRequête("test")

Remarque : Le problème peut aussi se produire avec une variable de type "source de données". Une variable "source de données" déclarée localement dans un traitement (clic de bouton, procédure, méthode ...) n'existe QUE durant l'exécution de ce code. Pour cette raison un "warning" est affiché si vous utilisez ce type de source de données : "la source de données sera détruite à la fin de ce code".
Composante : wd300hf.dll
Version minimum requise
  • Version 16
Documentation également disponible pour…
Commentaires
Exemple à compléter...
Bonjour,

Vous donnez un exemple :

"Dans l'exemple suivant, la fonction HLibèreRequête est utilisée trop tôt : la table sera complètement faussée."

Il serait bien en plus de dire ce qu'il ne faut pas faire, de dire ce qu'il faudrait faire.

Damien 10
30 aoû. 2022

Dernière modification : 04/07/2023

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