DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Gestion des bases de données / HFSQL / Fonctions HFSQL
  • Pourquoi utiliser la constante hRequêteSansCorrection
  • Passage de paramètres à la requê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
Exécute une requête de type SELECT de manière asynchrone. Cette requête peut correspondre à :
  • une requête créée sous l'éditeur de requêtes.
  • une variable de type Requête SQL.
Conditions d'utilisation :
  • Ce mode est prévu pour des requêtes ayant un temps d'exécution de plusieurs secondes. Pour une requête immédiate ou quasi immédiate, ce mécanisme ralentit "trop" la requête.
  • La requête doit être de type "SELECT" : elle doit renvoyer des enregistrements.
  • L'exécution d'une requête en mode asynchrone peut être effectuée uniquement à partir du contexte principal. Dans les autres cas, il est nécessaire d'utiliser des threads.
  • Cette fonction ne permet pas de passer les paramètres à une requête paramétrée. Les paramètres doivent être passés avant l'exécution de la requête.
HExécuteRequêteAsynchrone(REQ_MaRequete, hRequêteDéfaut,
MaProcedurePourChaqueEnregistrement, MaProcedureFinale)
 
PROCÉDURE INTERNE MaProcedurePourChaqueEnregistrement(enreg est un Enregistrement de REQ_MaRequete)
Trace("Procédure de traitement de chaque enregistrement " + enreg.NomRubrique)
FIN
 
PROCÉDURE INTERNE MaProcedureFinale(MonRes est un entier)
Trace("Procédure de traitement du résultat final")
SELON MonRes
CAS heraOK :
Trace("La requête et le traitement des enregistrements se sont bien exécutés.")
CAS heraAnnulée :
Trace("Un traitement a renvoyé Faux. La requête et les procédures ont été annulées.")
AUTRE CAS :
Trace("Une procédure ou l'exécution de la requête a rencontré une erreur.")
FIN
FIN
Syntaxe

Exécuter une requête (sans connexion) Masquer les détails

<Résultat> = HExécuteRequêteAsynchrone(<Nom de la requête> [, <Mode>] , <Procédure WLangage pour chaque enregistrement> [, <Procédure WLangage de fin>])
<Résultat> : booléen
  • Vrai si l'initialisation de la requête a été effectuée (le code SQL de la requête est valide),
  • Faux dans le cas contraire. La fonction HErreur permet d'obtenir plus d'informations sur le problème rencontré.
<Nom de la requête> : Chaîne de caractères
Nom de la requête à exécuter :
  • Nom et chemin complet de la requête (fichier ".WDR") à initialiser.
    AndroidWidget AndroidJava Non disponible.
  • Nom logique de la requête à initialiser.
    Si une requête de même nom est déjà déclarée, elle est remplacée par la nouvelle requête.
  • Nom d'une variable de type Requête SQL.
<Mode> : Constante optionnelle de type Entier
Option pour l'initialisation de la requête :
hRequêteDéfaut
(valeur par défaut)
Initialisation de la requête.
hRequêteSansCorrection
AndroidWidget AndroidJavaOLE DBConnecteurs Natifs (Accès Natifs) Le moteur HFSQL n'effectue aucune vérification de la requête. Cette option doit être utilisée si la requête comporte des ordres spécifiques à un type de connexion (Oracle, SQL Server, ...).
Attention : si cette constante est utilisée :
  • il est nécessaire de préciser le nom de la connexion (paramètre <Connexion>).
  • il n'est pas possible d'annuler une condition en l'affectant à NULL.
hRequêteSansCorrectionHF
HFSQL Classic Le moteur HFSQL n'effectue aucune vérification du format de fichier de données (complété par des espaces ou non).
A utiliser si la requête manipule à la fois des fichiers de données HFSQL au format complété par des espaces et des fichiers de données HFSQL au format non complété par des espaces.

AndroidWidget AndroidJava Android et Java (accès par JDBC) : Ce paramètre peut correspondre uniquement aux constantes hRequêteDéfaut ou hRequêteSansCorrection. Si une autre constante est utilisée, elle sera ignorée.
<Procédure WLangage pour chaque enregistrement> : Nom de procédure
Procédure WLangage (également nommée "callback") exécutée pour chaque enregistrement trouvé correspondant à la requête. Cette procédure est de la forme :
PROCEDURE <Nom de la procédure>(UnEnreg est un Enregistrement)
où <UnEnreg> est une variable de type Enregistrement correspondant à l'enregistrement en cours (pour la requête exécutée).
Par défaut, le procédure renvoie Vrai et passe à l'enregistrement suivant.
Si cette procédure renvoie Faux, la requête est annulée et la procédure <Procédure WLangage de fin> est exécutée.
<Procédure WLangage de fin> : Nom de procédure optionnel
Procédure WLangage (également nommée "callback") exécutée à la fin de l'exécution de la requête. Cette procédure est de la forme :
PROCEDURE <Nom de la procédure>(nRésultat est un entier)
où <nRésultat> est une constante de type Entier qui peut correspondre aux valeurs suivantes :
heraAnnuléeLa procédure exécutée pour chaque enregistrement a renvoyé Faux. La requête et les différentes procédures ont été annulées.
heraErreurLa requête et/ou la procédure appelée pour chaque enregistrement ont rencontré une erreur. Il est possible de connaître l'erreur avec la fonction HErreurInfo.
heraOKLa requête et la procédure exécutée pour chaque enregistrement se sont correctement déroulées.
Remarque : La requête est détruite lorsque tous les enregistrements ont été parcourus. La <Procédure WLangage de fin> permet uniquement de savoir comment s'est terminé le parcours.

Exécuter une requête via une connexion Masquer les détails

<Résultat> = HExécuteRequêteAsynchrone(<Nom de la requête> [, <Connexion> [, <Mode>]] , <Procédure WLangage pour chaque enregistrement> [, <Procédure WLangage de fin>])
<Résultat> : booléen
  • Vrai si l'initialisation de la requête a été effectuée (le code SQL de la requête est valide),
  • Faux dans le cas contraire. La fonction HErreur permet d'obtenir plus d'informations sur le problème rencontré.
<Nom de la requête> : Chaîne de caractères
Nom de la requête à exécuter :
  • Nom et chemin complet de la requête (fichier ".WDR") à initialiser.
    AndroidWidget AndroidJava Non disponible.
  • Nom logique de la requête à initialiser.
    Si une requête de même nom est déjà déclarée, elle est remplacée par la nouvelle requête.
  • Nom d'une variable de type Requête SQL.
<Connexion> : Chaîne de caractères optionnelle
Nom d'une connexion, définie sous l'éditeur d'analyses ou dynamiquement avec la fonction HDécritConnexion. La requête sera exécutée via cette connexion.
OLE DBConnecteurs Natifs (Accès Natifs) Si ce paramètre n'est pas précisé et si la requête concerne des fichiers de données accédés par OLE DB ou par un Connecteur Natif, la requête est exécutée via la connexion utilisée par le premier fichier de données rencontré dans la requête. Si la connexion utilisée par un fichier de données est modifiée avant l'utilisation de la fonction HExécuteRequêteAsynchrone, la nouvelle connexion sera utilisée.
<Mode> : Constante optionnelle de type Entier
Option pour l'initialisation de la requête :
hRequêteDéfaut
(valeur par défaut)
Initialisation de la requête.
hRequêteSansCorrection
AndroidWidget AndroidJavaOLE DBConnecteurs Natifs (Accès Natifs) Le moteur HFSQL n'effectue aucune vérification de la requête. Cette option doit être utilisée si la requête comporte des ordres spécifiques à un type de connexion (Oracle, SQL Server, ...).
Attention : si cette constante est utilisée :
  • il est nécessaire de préciser le nom de la connexion (paramètre <Connexion>).
  • il n'est pas possible d'annuler une condition en l'affectant à NULL.
hRequêteSansCorrectionHF
HFSQL Classic Le moteur HFSQL n'effectue aucune vérification du format de fichier de données (complété par des espaces ou non).
A utiliser si la requête manipule à la fois des fichiers de données HFSQL au format complété par des espaces et des fichiers de données HFSQL au format non complété par des espaces.

AndroidWidget AndroidJava Android et Java (accès par JDBC) : Ce paramètre peut correspondre uniquement aux constantes hRequêteDéfaut ou hRequêteSansCorrection. Si une autre constante est utilisée, elle sera ignorée.
<Procédure WLangage pour chaque enregistrement> : Nom de procédure
Procédure WLangage (également nommée "callback") exécutée pour chaque enregistrement trouvé correspondant à la requête. Cette procédure est de la forme :
PROCEDURE <Nom de la procédure>(UnEnreg est un Enregistrement)
où <UnEnreg> est une variable de type Enregistrement correspondant à l'enregistrement en cours (pour la requête exécutée).
Par défaut, le procédure renvoie Vrai et passe à l'enregistrement suivant.
Si cette procédure renvoie Faux, la requête est annulée et la procédure <Procédure WLangage de fin> est exécutée.
<Procédure WLangage de fin> : Nom de procédure optionnel
Procédure WLangage (également nommée "callback") exécutée à la fin de l'exécution de la requête. Cette procédure est de la forme :
PROCEDURE <Nom de la procédure>(nRésultat est un entier)
où <nRésultat> est une constante de type Entier qui peut correspondre aux valeurs suivantes :
heraAnnuléeLa procédure exécutée pour chaque enregistrement a renvoyé Faux. La requête et les différentes procédures ont été annulées.
heraErreurLa requête et/ou la procédure appelée pour chaque enregistrement ont rencontré une erreur. Il est possible de connaître l'erreur avec la fonction HErreurInfo.
heraOKLa requête et la procédure exécutée pour chaque enregistrement se sont correctement déroulées.
Remarque : La requête est détruite lorsque tous les enregistrements ont été parcourus. La <Procédure WLangage de fin> permet uniquement de savoir comment s'est terminé le parcours.
Remarques
WINDEVEtats et RequêtesCode Utilisateur (MCU)OLE DBConnecteurs Natifs (Accès Natifs)

Pourquoi utiliser la constante hRequêteSansCorrection

Par défaut, WINDEV et WEBDEV interprètent les requêtes SQL sur OLE DB et sur ODBC via le provider OLE DB. Pour que la requête ne soit pas interprétée, utilisez la constante hRequêteSansCorrection.
La constante hRequêteSansCorrection peut par exemple être utilisée si vous saisissez directement le code SQL de votre requête sous l'éditeur de requêtes.
hRequêteSansCorrection n'est pas spécifiéhRequêteSansCorrection est spécifié
Détermination automatique de la connexion associée aux fichiers de données présents dans la requête.La connexion à utiliser doit être précisée dans la fonction HExécuteRequêteSQL.
Remplacement de tous les signes propriétaires PC SOFT (exemple : ']=' commence par) par leur équivalent en SQL standard.Aucun remplacement n'est effectué. Il est nécessaire d'utiliser les signes SQL standard.
Formatage des dates et des heures selon le format utilisé par la base de données.
Par exemple, sous WINDEV et WEBDEV, les dates sont au format 'AAAAMMJJ' alors que sous Access, les dates sont au format #AAAAJJMM# ou #AAAAMMJJ# selon la langue du système.
Aucun formatage n'est effectué. Il est nécessaire d'utiliser le format reconnu par la base de données.
Formatage des flottants (le séparateur de décimal peut être '.' ou ',')Aucun formatage des flottants n'est réalisé.
Selon la base de données utilisée, remplacement des noms d'alias par les noms complets des rubriques dans les clauses Where, Order by et Group by
Par exemple, le moteur JET (Access, DBase, ...) n'accepte pas de noms d'alias dans la clause Where d'une requête
Aucun remplacement n'est effectué. Il est nécessaire d'utiliser directement dans le code de la requête les noms complets des rubriques dans les clauses Where, Order by et Group by.

Passage de paramètres à la requête

Pour passer des paramètres à une requête paramétrée avant de l'exécuter, il est également nécessaire d'utiliser la syntaxe suivante :
<Nom de la requête>.<Nom du paramètre 1> = xxx
<Nom de la requête>.<Nom du paramètre 2> = xxx
<Nom de la requête>.<Nom du paramètre 3> = xxx
HExécuteRequêteAsynchrone(<Nom de la requête>, <Procédure>)
SI ErreurDétectée = Vrai ALORS ...

Remarque : A chaque exécution de la requête paramétrée, la structure des paramètres de la requête est ré-initialisée.
Classification Métier / UI : Code métier
Composante : wd290hf.dll
Version minimum requise
  • Version 26
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 20/04/2023

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