PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE


  • Lecture des données lors de l'initialisation
  • Ajout d'enregistrements et utilisation de la constante hModifieFichier
  • Pourquoi utiliser la constante hRequêteSansCorrection
  • Passage de paramètres à la requête
  • HExécuteRequête et accès par JDBC
  • Libération des ressources de la requête
  • Optimisation des requêtes sur des fichiers de données HFSQL
  • Exécution d'une requête et champ Table basé sur cette requête
  • Exécution d'une requête et état basé sur cette requête
  • Requêtes SQL (fonction HExécuteRequêteSQL ou exécution de requêtes SQL créées par l'éditeur de requêtes)
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
Déclare une requête au moteur HFSQL et exécute cette requête. Cette requête peut correspondre à :
  • une requête créée sous l'éditeur de requêtes.
  • Versions 23 et supérieures
    une variable de type Requête SQL.
    Nouveauté 23
    une variable de type Requête SQL.
    une variable de type Requête SQL.
Le résultat de la requête pourra ensuite être parcouru. Si une requête de même nom existe déjà, cette requête est remplacée. Le résultat est recalculé.
Attention : Pour se positionner sur le premier enregistrement du résultat de la requête, utilisez par exemple la fonction HLitPremier.
Pour libérer les ressources d'une requête créée sous l'éditeur de requêtes, utilisez :
Remarque : Une requête ne pourra pas être initialisée si :
  • le nom de la requête est déjà utilisé dans l'analyse en cours (nom de fichier de données ou nom défini par une des fonctions suivantes : HDéclare, HDéclareExterne, HDécritFichier).
  • une erreur de syntaxe est trouvée dans la requête.
PHP
  • L'utilisation des requêtes dans l'accès PHP/MySQL nécessite un serveur MySQL en version 4.1 ou supérieure.
  • Versions 23 et supérieures
    Les variables de type Requête SQL ne sont pas disponibles.
    Nouveauté 23
    Les variables de type Requête SQL ne sont pas disponibles.
    Les variables de type Requête SQL ne sont pas disponibles.
Versions 15 et supérieures
Android Cette fonction est désormais disponible pour les applications Android.
Nouveauté 15
Android Cette fonction est désormais disponible pour les applications Android.
Android Cette fonction est désormais disponible pour les applications Android.
AndroidWidget AndroidJava Il n'est pas possible d'exécuter des requêtes dont le code SQL contient des fonctions WLangage.
Versions 17 et supérieures
iPhone/iPad Cette fonction est désormais disponible pour les applications iPhone/iPad.
Nouveauté 17
iPhone/iPad Cette fonction est désormais disponible pour les applications iPhone/iPad.
iPhone/iPad Cette fonction est désormais disponible pour les applications iPhone/iPad.
Versions 18 et supérieures
Widget Android Cette fonction est désormais disponible en mode Widget Android.
Universal Windows 10 App Cette fonction est désormais disponible en mode Windows Store apps.
Nouveauté 18
Widget Android Cette fonction est désormais disponible en mode Widget Android.
Universal Windows 10 App Cette fonction est désormais disponible en mode Windows Store apps.
Widget Android Cette fonction est désormais disponible en mode Widget Android.
Universal Windows 10 App Cette fonction est désormais disponible en mode Windows Store apps.
Versions 21 et supérieures
Universal Windows 10 App Cette fonction est désormais disponible en mode Universal Windows 10 App.
Nouveauté 21
Universal Windows 10 App Cette fonction est désormais disponible en mode Universal Windows 10 App.
Universal Windows 10 App Cette fonction est désormais disponible en mode Universal Windows 10 App.
Remarque : A partir de la version 19, HFSQL est le nouveau nom de HyperFileSQL.
// Initialisation de la requête "REQ_Client_84"
HExécuteRequête(REQ_Client_84)
// Requête sur fichier Oracle : Clients utilise la connexion "MaConnexion"
// REQ_Marequête = "Select * from clients where IDClient = ?"
HExécuteRequête(REQ_MaRequête, hRequêteDéfaut, 5)
// Exécute et affiche les données d'une requête non contenue dans le projet
// "REQ_Liste_Produits.WDR" est une requête créée avec "Etats & Requêtes"
// Il faut déclarer une source de données du même nom logique que la requête.
sFichierRequete est une chaîne
sFichierRequete = fRepEtatsEtRequêtes() + ["\"] + "REQ_Liste_Produits.WDR"
REQ_Liste_Produits est une Source de Données

// Exécution de la requête pour une famille de produits :
// CODE_FAMILLE est un paramètre de la requête.
HExécuteRequête(sFichierRequete, hRequêteDéfaut, CODE_FAMILLE)

// Parcours de la requête
POUR TOUT REQ_Liste_Produits
TableAjouteLigne(TABLE_PRODUIT, sFichierRequete.NOM_PRODUIT, ...
sFichierRequete.DESIGNATION, sFichierRequete.PrixHT)
FIN
Syntaxe

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

<Résultat> = HExécuteRequête(<Nom de la requête> [, <Mode> [, <Paramètre 1> [, ... [, <Paramètre N>]]]])
<Résultat> : booléen
  • Vrai si l'initialisation de la requête a été effectuée,
  • 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 (avec ou sans guillemets)
Nom de la requête à exécuter :
  • Nom et chemin complet de la requête (fichier ".WDR") à initialiser.
    AndroidWidget AndroidJavaPHP 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.
  • Versions 23 et supérieures
    Nom d'une variable de type Requête SQL.
    PHP Ce type de variable n'est pas disponible.
    Nouveauté 23
    Nom d'une variable de type Requête SQL.
    PHP Ce type de variable n'est pas disponible.
    Nom d'une variable de type Requête SQL.
    PHP Ce type de variable n'est pas disponible.
<Mode> : Constante optionnelle de type Entier
Option pour l'initialisation de la requête :
hAvecFiltre
(option combinable avec les autres constantes)
Si ce paramètre est spécifié :
  • le résultat de la requête correspond à une sélection d'enregistrements de type filtre si le moteur HFSQL le permet. Sinon, le résultat de la requête est une vue HFSQL
  • les opérations suivantes ne sont pas possibles : recherche sur le résultat de la requête, requête sur requête, vue sur requête, requête sur vue.
  • les rubriques de parcours spécifiées lors du parcours du résultat ne sont pas prises en compte.
  • la loupe n'est pas disponible sur les tables liées à une requête.
  • la fonction hNbEnr ne peut pas être utilisée sur les requêtes.
    Attention : si cette option est précisée, la constante hModifieFichier est automatiquement utilisée.
Si ce paramètre n'est pas spécifié (par défaut) :
  • le résultat de la requête correspond à une vue HFSQL
  • il est possible de réaliser les opérations suivantes sur les requêtes : recherche sur le résultat de la requête, requête sur requête, vue sur requête, requête sur vue.
  • les rubriques de parcours spécifiées lors du parcours du résultat sont prises en compte.
  • la loupe est disponible sur les tables liées à une requête.
  • la fonction hNbEnr peut être utilisée sur les requêtes.
AndroidWidget AndroidPHP Cette constante n'est pas disponible.
AndroidWidget Android Cette constante est disponible uniquement pour les bases de données HFSQL. Cette constante n'est pas disponible pour les bases de données SQLite.
PHP Cette constante n'est pas disponible.
Java Accès par JDBC : Cette constante n'est pas disponible.
hAvecTransactionLa requête est exécutée dans une transaction.
Une transaction est démarrée, les enregistrements sont bloqués en écriture pendant l'exécution de la requête, et débloqués à la fin de son exécution, que la requête échoue ou non.
Si la requête ne peut pas se terminer normalement (blocage d'enregistrements, coupure de courant, ...), la transaction est annulée et les fichiers de données sont remis dans l'état avant l'exécution de la requête.
Remarque : L'exécution de la requête pourra être fortement ralentie.
AndroidWidget AndroidiPhone/iPadWindows MobileJavaPHP Cette constante n'est pas disponible.
AndroidWidget Android Cette constante est disponible uniquement pour les bases de données HFSQL. Cette constante n'est pas disponible pour les bases de données SQLite.
iPhone/iPadWindows MobileJavaPHP Cette constante n'est pas disponible.
hModifieFichier
(option combinable avec les autres constantes)
Sur des fichiers de données HFSQL : Lors de la modification du résultat de la requête (fonctions HAjoute, HEcrit, HModifie, HRaye, HSupprime), ces modifications seront reportées dans les fichiers de données intervenant dans la requête.
Si cette option n'est pas précisée, seul le résultat de la requête est modifié.
Pour plus de détails sur la modification du résultat d'une requête, consultez Modifier le contenu d'une requête.
Sur des fichiers de données non HFSQL, la constante hModifieFichier est inutile : les fichiers de données intervenant dans la requête sont automatiquement modifiés lors de la modification du résultat de la requête.
AndroidWidget AndroidPHP Cette constante n'est pas disponible.
AndroidWidget Android Cette constante est disponible uniquement pour les bases de données HFSQL. Cette constante n'est pas disponible pour les bases de données SQLite.
PHP Cette constante n'est pas disponible.
Java Accès par JDBC : Cette constante n'est pas disponible.
hRequêteInterruptibleL'initialisation de la requête peut être interrompue avec la touche ECHAP.
AndroidWidget AndroidUniversal Windows 10 AppPHP Cette constante n'est pas disponible.
WEBDEV - Code ServeurProcédures stockées Cette constante est ignorée.
Java Accès par JDBC : Cette constante n'est pas disponible.
HFSQL Client/Serveur La touche ESC doit être utilisée sur le poste client.
hRequêteDéfaut
(valeur par défaut)
Initialisation de la requête sans interruption.
hRequêteSansCorrection
AndroidWidget AndroidJavaOLE DBAccè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>).
  • la fonction HFiltre ne peut pas être utilisée sur la requête manipulée.
  • il n'est pas possible d'annuler une condition en l'affectant à NULL.
  • il est conseillé de ne pas spécifier de rubrique de parcours dans les fonctions suivantes : HDernier, HLitDernier, HLitPremier, HPremier, HRechercheDernier, HRecherchePremier.
hRequêteSansCorrectionHF
HFSQL 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.
Versions 21 et supérieures
hSansSablier
Nouveauté 21
hSansSablier
hSansSablier
Lors de la lecture du résultat de la requête, cette lecture peut être bloquée et un sablier apparaît par défaut. Cette constante permet de ne pas afficher de sablier dans ce cas.
AndroidWidget AndroidPHP Cette constante n'est pas disponible.
hTemporisePour les requêtes UPDATE et DELETE s'appliquant sur beaucoup d'enregistrements et étant relativement longues, cette constante permet de laisser la main aux autres applications utilisant les fichiers de données.
Dans ce cas :
  • la requête s'exécute un peu plus lentement,
  • le serveur de fichiers n'est pas saturé,
  • les autres utilisateurs des fichiers de données peuvent continuer à y accéder sans rencontrer de blocage.
HFSQL Client/ServeurOLE DBAccès Natifs Cette constante est ignorée.
AndroidWidget AndroidPHP Cette constante n'est pas disponible.
Java Accès par JDBC : Cette constante n'est pas disponible.
hVérifieDoublonActive la gestion des doublons pendant l'exécution de la requête. Si une erreur de doublons est détectée, la requête n'est pas exécutée.
Cette constante force la constante hAvecTransaction. Une transaction est démarrée, les enregistrements sont bloqués en écriture pendant l'exécution de la requête et débloqués à la fin de son exécution, que la requête échoue ou non. Si l'application est arrêtée pendant l'exécution de la requête (coupure de courant par exemple), la transaction sera annulée à la prochaine utilisation des fichiers de données de la requête.
Remarque : L'exécution de la requête pourra être fortement ralentie.
HFSQL Client/Serveur Si la constante hVérifieDoublon n'est pas spécifiée, la gestion des doublons est débranchée. Or si l'utilisateur n'a pas les droits pour débrancher la gestion des doublons (fonction HModifieDroitBaseDeDonnées) et si une gestion des doublons doit être réalisée, une erreur de droit est affichée.
AndroidWidget AndroidPHP Cette constante n'est pas disponible.
AndroidWidget Android Cette constante est disponible uniquement pour les bases de données HFSQL. Cette constante n'est pas disponible pour les bases de données SQLite.
Windows MobilePHP Cette constante n'est pas disponible.
Java Accès par JDBC : Cette constante n'est pas disponible.
hVérifieIntégritéActive la gestion de l'intégrité pendant l'exécution de la requête. Si une erreur d'intégrité est détectée, la requête n'est pas exécutée.
Cette constante force la constante hAvecTransaction. Une transaction est démarrée, les enregistrements sont bloqués en écriture pendant l'exécution de la requête et débloqués à la fin de son exécution, que la requête échoue ou non. Si l'application est arrêtée pendant l'exécution de la requête (coupure de courant par exemple), la transaction sera annulée à la prochaine utilisation des fichiers de données de la requête.
Remarque : L'exécution de la requête pourra être fortement ralentie.
HFSQL Client/Serveur Si la constante hVérifieIntégrité n'est pas spécifiée, la gestion de l'intégrité est débranchée. Or si l'utilisateur n'a pas les droits pour débrancher la gestion de l'intégrité (fonction HModifieDroitBaseDeDonnées) et si une gestion de l'intégrité doit être réalisée, une erreur de droit est affichée.
AndroidWidget AndroidWindows MobilePHP Cette constante n'est pas disponible.
AndroidWidget Android Cette constante est disponible uniquement pour les bases de données HFSQL. Cette constante n'est pas disponible pour les bases de données SQLite.
Windows MobilePHP Cette constante n'est pas disponible.
Java Accès par JDBC : Cette constante n'est pas disponible.
PHP Ce paramètre peut correspondre uniquement à la constante hRequêteDéfaut. Si une autre constante est utilisée, une erreur est générée.
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.
<Paramètre 1> ... <Paramètre N> :
Valeurs des paramètres de la requête dans leur ordre d'initialisation (visible sous l'éditeur de requêtes). Chaque paramètre doit correspondre au type attendu. Les différents paramètres sont séparés par une virgule.
Remarques :
  • Le passage de paramètres dans la fonction HExécuteRequête est conservé par compatibilité. Il est conseillé d'utiliser le passage de paramètres avec la notation <NomRequête>.<NomParamètre> = <Valeur>.
  • Pour spécifier les paramètres de la requête, il est nécessaire de spécifier le paramètre <Mode>.
  • Il est possible de spécifier ou non la valeur de chaque paramètre.
  • Il est possible de spécifier une liste de valeurs ou une liste de paramètres.
Pour plus de détails, consultez le paragraphe Passages de paramètres.
Versions 23 et supérieures
Ce paramètre n'est pas disponible si <Nom de la requête> correspond à une variable de type Requête SQL.
Nouveauté 23
Ce paramètre n'est pas disponible si <Nom de la requête> correspond à une variable de type Requête SQL.
Ce paramètre n'est pas disponible si <Nom de la requête> correspond à une variable de type Requête SQL.

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

<Résultat> = HExécuteRequête(<Nom de la requête> [, <Connexion> [, <Mode> [, <Paramètre 1> [, ... [, <Paramètre N>]]]]])
<Résultat> : booléen
  • Vrai si l'initialisation de la requête a été effectuée,
  • 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 (avec ou sans guillemets)
Nom de la requête à exécuter :
  • Nom et chemin complet de la requête (fichier ".WDR") à initialiser.
    AndroidWidget AndroidJavaPHP 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.
  • Versions 23 et supérieures
    Nom d'une variable de type Requête SQL.
    PHP Ce type de variable n'est pas disponible.
    Nouveauté 23
    Nom d'une variable de type Requête SQL.
    PHP Ce type de variable n'est pas disponible.
    Nom d'une variable de type Requête SQL.
    PHP Ce type de variable n'est pas disponible.
<Connexion> : Chaîne de caractères (avec ou sans guillemets) 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 DBAccè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 accès 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ête, la nouvelle connexion sera utilisée.
<Mode> : Constante optionnelle de type Entier
Option pour l'initialisation de la requête :
hAvecFiltre
(option combinable avec les autres constantes)
Si ce paramètre est spécifié :
  • le résultat de la requête correspond à une sélection d'enregistrements de type filtre si le moteur HFSQL le permet. Sinon, le résultat de la requête est une vue HFSQL
  • les opérations suivantes ne sont pas possibles : recherche sur le résultat de la requête, requête sur requête, vue sur requête, requête sur vue.
  • les rubriques de parcours spécifiées lors du parcours du résultat ne sont pas prises en compte.
  • la loupe n'est pas disponible sur les tables liées à une requête.
  • la fonction hNbEnr ne peut pas être utilisée sur les requêtes.
    Attention : si cette option est précisée, la constante hModifieFichier est automatiquement utilisée.
Si ce paramètre n'est pas spécifié (par défaut) :
  • le résultat de la requête correspond à une vue HFSQL
  • il est possible de réaliser les opérations suivantes sur les requêtes : recherche sur le résultat de la requête, requête sur requête, vue sur requête, requête sur vue.
  • les rubriques de parcours spécifiées lors du parcours du résultat sont prises en compte.
  • la loupe est disponible sur les tables liées à une requête.
  • la fonction hNbEnr peut être utilisée sur les requêtes.
AndroidWidget AndroidPHP Cette constante n'est pas disponible.
AndroidWidget Android Cette constante est disponible uniquement pour les bases de données HFSQL. Cette constante n'est pas disponible pour les bases de données SQLite.
PHP Cette constante n'est pas disponible.
Java Accès par JDBC : Cette constante n'est pas disponible.
hAvecTransactionLa requête est exécutée dans une transaction.
Une transaction est démarrée, les enregistrements sont bloqués en écriture pendant l'exécution de la requête, et débloqués à la fin de son exécution, que la requête échoue ou non.
Si la requête ne peut pas se terminer normalement (blocage d'enregistrements, coupure de courant, ...), la transaction est annulée et les fichiers de données sont remis dans l'état avant l'exécution de la requête.
Remarque : L'exécution de la requête pourra être fortement ralentie.
AndroidWidget AndroidiPhone/iPadWindows MobileJavaPHP Cette constante n'est pas disponible.
AndroidWidget Android Cette constante est disponible uniquement pour les bases de données HFSQL. Cette constante n'est pas disponible pour les bases de données SQLite.
iPhone/iPadWindows MobileJavaPHP Cette constante n'est pas disponible.
hModifieFichier
(option combinable avec les autres constantes)
Sur des fichiers de données HFSQL : Lors de la modification du résultat de la requête (fonctions HAjoute, HEcrit, HModifie, HRaye, HSupprime), ces modifications seront reportées dans les fichiers de données intervenant dans la requête.
Si cette option n'est pas précisée, seul le résultat de la requête est modifié.
Pour plus de détails sur la modification du résultat d'une requête, consultez Modifier le contenu d'une requête.
Sur des fichiers de données non HFSQL, la constante hModifieFichier est inutile : les fichiers de données intervenant dans la requête sont automatiquement modifiés lors de la modification du résultat de la requête.
AndroidWidget AndroidPHP Cette constante n'est pas disponible.
AndroidWidget Android Cette constante est disponible uniquement pour les bases de données HFSQL. Cette constante n'est pas disponible pour les bases de données SQLite.
PHP Cette constante n'est pas disponible.
Java Accès par JDBC : Cette constante n'est pas disponible.
hRequêteInterruptibleL'initialisation de la requête peut être interrompue avec la touche ECHAP.
AndroidWidget AndroidUniversal Windows 10 AppPHP Cette constante n'est pas disponible.
WEBDEV - Code ServeurProcédures stockées Cette constante est ignorée.
Java Accès par JDBC : Cette constante n'est pas disponible.
HFSQL Client/Serveur La touche ESC doit être utilisée sur le poste client.
hRequêteDéfaut
(valeur par défaut)
Initialisation de la requête sans interruption.
hRequêteSansCorrection
AndroidWidget AndroidJavaOLE DBAccè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>).
  • la fonction HFiltre ne peut pas être utilisée sur la requête manipulée.
  • il n'est pas possible d'annuler une condition en l'affectant à NULL.
  • il est conseillé de ne pas spécifier de rubrique de parcours dans les fonctions suivantes : HDernier, HLitDernier, HLitPremier, HPremier, HRechercheDernier, HRecherchePremier.
hRequêteSansCorrectionHF
HFSQL 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.
Versions 21 et supérieures
hSansSablier
Nouveauté 21
hSansSablier
hSansSablier
Lors de la lecture du résultat de la requête, cette lecture peut être bloquée et un sablier apparaît par défaut. Cette constante permet de ne pas afficher de sablier dans ce cas.
AndroidWidget AndroidPHP Cette constante n'est pas disponible.
hTemporisePour les requêtes UPDATE et DELETE s'appliquant sur beaucoup d'enregistrements et étant relativement longues, cette constante permet de laisser la main aux autres applications utilisant les fichiers de données.
Dans ce cas :
  • la requête s'exécute un peu plus lentement,
  • le serveur de fichiers n'est pas saturé,
  • les autres utilisateurs des fichiers de données peuvent continuer à y accéder sans rencontrer de blocage.
HFSQL Client/ServeurOLE DBAccès Natifs Cette constante est ignorée.
AndroidWidget AndroidPHP Cette constante n'est pas disponible.
Java Accès par JDBC : Cette constante n'est pas disponible.
hVérifieDoublonActive la gestion des doublons pendant l'exécution de la requête. Si une erreur de doublons est détectée, la requête n'est pas exécutée.
Cette constante force la constante hAvecTransaction. Une transaction est démarrée, les enregistrements sont bloqués en écriture pendant l'exécution de la requête et débloqués à la fin de son exécution, que la requête échoue ou non. Si l'application est arrêtée pendant l'exécution de la requête (coupure de courant par exemple), la transaction sera annulée à la prochaine utilisation des fichiers de données de la requête.
Remarque : L'exécution de la requête pourra être fortement ralentie.
HFSQL Client/Serveur Si la constante hVérifieDoublon n'est pas spécifiée, la gestion des doublons est débranchée. Or si l'utilisateur n'a pas les droits pour débrancher la gestion des doublons (fonction HModifieDroitBaseDeDonnées) et si une gestion des doublons doit être réalisée, une erreur de droit est affichée.
AndroidWidget AndroidPHP Cette constante n'est pas disponible.
AndroidWidget Android Cette constante est disponible uniquement pour les bases de données HFSQL. Cette constante n'est pas disponible pour les bases de données SQLite.
Windows MobilePHP Cette constante n'est pas disponible.
Java Accès par JDBC : Cette constante n'est pas disponible.
hVérifieIntégritéActive la gestion de l'intégrité pendant l'exécution de la requête. Si une erreur d'intégrité est détectée, la requête n'est pas exécutée.
Cette constante force la constante hAvecTransaction. Une transaction est démarrée, les enregistrements sont bloqués en écriture pendant l'exécution de la requête et débloqués à la fin de son exécution, que la requête échoue ou non. Si l'application est arrêtée pendant l'exécution de la requête (coupure de courant par exemple), la transaction sera annulée à la prochaine utilisation des fichiers de données de la requête.
Remarque : L'exécution de la requête pourra être fortement ralentie.
HFSQL Client/Serveur Si la constante hVérifieIntégrité n'est pas spécifiée, la gestion de l'intégrité est débranchée. Or si l'utilisateur n'a pas les droits pour débrancher la gestion de l'intégrité (fonction HModifieDroitBaseDeDonnées) et si une gestion de l'intégrité doit être réalisée, une erreur de droit est affichée.
AndroidWidget AndroidWindows MobilePHP Cette constante n'est pas disponible.
AndroidWidget Android Cette constante est disponible uniquement pour les bases de données HFSQL. Cette constante n'est pas disponible pour les bases de données SQLite.
Windows MobilePHP Cette constante n'est pas disponible.
Java Accès par JDBC : Cette constante n'est pas disponible.
PHP Ce paramètre peut correspondre uniquement à la constante hRequêteDéfaut. Si une autre constante est utilisée, une erreur est générée.
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.
<Paramètre 1> ... <Paramètre N> :
Valeurs des paramètres de la requête dans leur ordre d'initialisation (visible sous l'éditeur de requêtes). Chaque paramètre doit correspondre au type attendu. Les différents paramètres sont séparés par une virgule.
Remarques :
  • Le passage de paramètres dans la fonction HExécuteRequête est conservé par compatibilité. Il est conseillé d'utiliser le passage de paramètres avec la notation <NomRequête>.<NomParamètre> = <Valeur>.
  • Pour spécifier les paramètres de la requête, il est nécessaire de spécifier le paramètre <Mode>.
  • Il est possible de spécifier ou non la valeur de chaque paramètre.
  • Il est possible de spécifier une liste de valeurs ou une liste de paramètres.
Pour plus de détails, consultez le paragraphe Passages de paramètres.
Versions 23 et supérieures
Ce paramètre n'est pas disponible si <Nom de la requête> correspond à une variable de type Requête SQL.
Nouveauté 23
Ce paramètre n'est pas disponible si <Nom de la requête> correspond à une variable de type Requête SQL.
Ce paramètre n'est pas disponible si <Nom de la requête> correspond à une variable de type Requête SQL.
Remarques

Lecture des données lors de l'initialisation

Selon la requête (tris, groupes, etc.), les données peuvent ou non être lues au moment de l'initialisation de la requête.
Remarque : La propriété ..ExécutionTerminée permet de savoir si le remplissage de la requête est terminé (et donc si les lectures peuvent être effectuées sans blocage).
WINDEVWEBDEV - Code ServeurEtats et RequêtesiPhone/iPadWindows MobileUniversal Windows 10 AppJavaAjaxCode Utilisateur (MCU)HFSQLHFSQL Client/ServeurHyper File 5.5OLE DBAccès Natifs

Ajout d'enregistrements et utilisation de la constante hModifieFichier

HFSQL Lors de l'ajout d'enregistrements dans un fichier de données via une requête, la requête prend en compte les enregistrements ajoutés dans le fichier de données quelle que soit la condition définie dans la requête. Le nombre d'enregistrement de cette requête est systématiquement modifié.
Accès Natifs Lors de l'ajout d'enregistrements dans un fichier de données via une requête, la requête prend en compte la condition définie dans la requête. Le nombre d'enregistrements de cette requête est modifié uniquement si les enregistrements ajoutés dans le fichier de données correspondent à cette condition.
WINDEVWEBDEV - Code ServeurEtats et RequêtesWindows MobileAjaxCode Utilisateur (MCU)OLE DBAccè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

Plusieurs méthodes peuvent être utilisées pour passer des paramètres à une requête : 1. Passage des paramètres avec la notation <NomRequête>.<NomParamètre> = <Valeur> (conseillée) 2. Passage des paramètres directement dans la fonction HExécuteRequête (conservée par compatibilité, compatible PHP)
Pour plus de détails sur les différentes façons de passer des paramètres à une requête, leurs avantages et leurs inconvénients, consultez Méthodes à utiliser pour passer des paramètres à une requête.
Détaillons ces deux méthodes :
  1. Passage des paramètres avec la notation <NomRequête>.<NomParamètre> = <Valeur> (conseillée)
    Pour passer des paramètres à une requête paramétrée avant de l'exécuter, il est également possible d'utiliser la syntaxe suivante :
    <Nom Requête>.<Nom Paramètre1> = xxx
    <Nom Requête>.<Nom Paramètre2> = xxx
    <Nom Requête>.<Nom Paramètre3> = xxx
    HExécuteRequête(<Nom Requête>)
    SI ErreurDétectée = Vrai ALORS ...

    Remarques :
    • Cette syntaxe simplifie le passage des paramètres. En effet, si les paramètres sont passés directement dans la fonction HExécuteRequête, il est nécessaire de respecter l'ordre des paramètres.
    • A chaque exécution de la requête paramétrée, la structure des paramètres de la requête est ré-initialisée.
    • PHP Cette méthode n'est pas disponible.
  2. Passage des paramètres directement dans la fonction HExécuteRequête (conservée par compatibilité)
    Dans ce cas, il est nécessaire de spécifier les valeurs des paramètres de la requête dans leur ordre d'initialisation (visible sous l'éditeur de requêtes). Chaque paramètre doit correspondre au type attendu. Les différents paramètres sont séparés par une virgule. Il est possible de spécifier ou non la valeur de chaque paramètre.
    Un paramètre peut être ignoré en utilisant la valeur Null. Dans ce cas, les conditions de sélection utilisant ce paramètre ne seront pas prises en compte.

    Il est possible de spécifier une liste de valeurs ou une liste de paramètres.
    Si la condition de sélection pour un des paramètres de la requête est "est dans la liste" ou "n'est pas dans la liste", il faut spécifier une liste de valeurs ou de paramètres.
    Pour spécifier une liste de valeurs ou une liste de paramètres, séparez les différentes valeurs ou paramètres par un point-virgule (';'), un retour-chariot ('RC') ou une tabulation ('TAB').
    Par exemple :
    HExécuteRequête(NomRequête, hRequêteDéfaut, "34000;34200;34400")
    ou
    HExécuteRequête(NomRequête, hRequêteDéfaut, "34000 "+ RC + "34200" + RC + "34400")
    ou
    HExécuteRequête(NomRequête, hRequêteDéfaut, "34000" + TAB + "34200" + TAB + "34400")

    Remarque : Si une des valeurs ou des paramètres contient un point-virgule, un retour-chariot ou une tabulation, il est nécessaire d'entourer cette valeur ou ce paramètre avec des quotes. Par exemple :
    HExécuteRequête(NomRequête, hRequêteDéfaut, "'A;A';'A;B';'A;C'")

    Remarque : Tous les paramètres de la requête ne doivent pas obligatoirement être précisés. Les conditions de la requête utilisant des paramètres non précisés seront ignorées.
    Exemple : Soit la requête "Clients_nom_prénom" dont le code SQL est le suivant :
    SELECT * FROM CLIENT WHERE NOM = {Param1} AND PRENOM = {Param2}
    • Les 2 paramètres sont donnés :
      HExécuteRequête(REQ_Clients_nom_prénom, hRequêteDéfaut, "Dupond", "Jean" )
      exécutera la requête
      SELECT * FROM CLIENT WHERE NOM = 'Dupond' AND PRENOM = 'Jean'
    • Seul le nom est donné :
      HExécuteRequête(REQ_Clients_nom_prénom, hRequêteDéfaut, "Dupond" )
      exécutera la requête
      SELECT * FROM CLIENT WHERE NOM = 'Dupond'
    • Seul le prénom est donné :
      sNom est un Variant = Null
      // Utilisation du variant obligatoire pour variable de type Null (non renseignée)

      HExécuteRequête(REQ_Clients_nom_prénom, hRequêteDéfaut, sNom, "Jean")

      OU

      HExécuteRequête(REQ_Clients_nom_prénom, hRequêteDéfaut, Null, "Jean")
      exécutera la requête
      SELECT * FROM CLIENT WHERE PRENOM = 'Jean'
AndroidWidget AndroidJava Tous les paramètres de la requête doivent être spécifiés (grâce à la fonction HExécuteRequête ou grâce à la notation <NomRequête>.<NomParamètre> = <Valeur>). Les paramètres optionnels ne sont pas gérés (il est impossible d'affecter la valeur NULL à un paramètre pour qu'il soit ignoré).
Java

HExécuteRequête et accès par JDBC

Si le nom physique d'un fichier de données manipulé dans la requête est différent de son nom logique, dans le code SQL, le nom des rubriques doit être préfixé par le nom physique du fichier de données et non par le nom logique. Il est également possible de ne pas préfixer le nom des rubriques.

Libération des ressources de la requête

Pour libérer les ressources d'une requête, utilisez :
Si cette opération n'est pas effectuée, la requête est toujours présente dans le contexte HFSQL en cours et elle est accessible depuis n'importe quel traitement.
Remarques :
  • Les ressources de la requête ne sont pas libérées automatiquement à la fermeture de la fenêtre qui a exécuté la requête (utilisation de la fonction HExécuteRequête).
  • Versions 23 et supérieures
    Les variables de type Requête SQL sont automatiquement libérées en fin de portée de la variable. Pour plus de détails, consultez Requêtes SQL en WLangage.
    Nouveauté 23
    Les variables de type Requête SQL sont automatiquement libérées en fin de portée de la variable. Pour plus de détails, consultez Requêtes SQL en WLangage.
    Les variables de type Requête SQL sont automatiquement libérées en fin de portée de la variable. Pour plus de détails, consultez Requêtes SQL en WLangage.
WINDEVWEBDEV - Code ServeurEtats et RequêtesiPhone/iPadWindows MobileAjaxCode Utilisateur (MCU)HFSQLHFSQL Client/ServeurHyper File 5.5

Optimisation des requêtes sur des fichiers de données HFSQL

  • Pour optimiser le temps d'exécution de la requête, utilisez la fonction HOptimise sur les différents fichiers de données intervenant dans la requête ou la fonction HOptimiseRequête.
  • Pour optimiser le temps de traitement des requêtes, utilisez la fonction HStatCalcule ou la fonction HRéindexe sur tous les fichiers de données intervenant dans la requête.
WINDEVWEBDEV - Code ServeurEtats et RequêtesWindows MobileAjaxCode Utilisateur (MCU)HFSQLHFSQL Client/ServeurHyper File 5.5OLE DBAccès Natifs

Exécution d'une requête et champ Table basé sur cette requête

Pour plus de détails, consultez Champ Table fichier et gestion des requêtes.
WINDEVWEBDEV - Code ServeurEtats et RequêtesiPhone/iPadWindows MobileAjaxCode Utilisateur (MCU)HFSQLHFSQL Client/ServeurHyper File 5.5OLE DBAccès Natifs

Exécution d'une requête et état basé sur cette requête

Lors de l'impression d'un état basé sur une requête, si la requête a déjà été exécutée, elle n'est pas ré-exécutée. Pour forcer la ré-exécution de la requête (ajout d'enregistrements par exemple), il suffit d'utiliser les fonctions HExécuteRequête ou iInitRequêteEtat.
WINDEVWEBDEV - Code ServeurEtats et RequêtesiPhone/iPadWindows MobileUniversal Windows 10 AppAjaxCode Utilisateur (MCU)HFSQLHFSQL Client/ServeurHyper File 5.5OLE DBAccès Natifs

Requêtes SQL (fonction HExécuteRequêteSQL ou exécution de requêtes SQL créées par l'éditeur de requêtes)

  • Lors de l'utilisation des instructions SQL DELETE, INSERT ou UPDATE dans des requêtes SQL, par défaut, aucun contrôle d'intégrité et aucun contrôle de doublons ne sont réalisés sur une base de données HFSQL.
    • Pour effectuer un contrôle automatique de l'intégrité, il suffit de préciser la constante hVérifieIntégrité. Cette constante permet d'activer la gestion de l'intégrité pendant l'exécution de la requête. Si une erreur d'intégrité est détectée, la requête n'est pas exécutée. En effet, une transaction est démarrée, les enregistrements sont bloqués en écriture pendant l'exécution de la requête et débloqués à la fin de son exécution, que la requête échoue ou non. Si l'application est arrêtée pendant l'exécution de la requête (coupure de courant par exemple), la transaction sera annulée à la prochaine utilisation des fichiers de données de la requête.
      HFSQL Client/Serveur Si la constante hVérifieIntégrité n'est pas spécifiée, la gestion de l'intégrité est débranchée. Or si l'utilisateur n'a pas les droits pour débrancher la gestion de l'intégrité (fonction HModifieDroitBaseDeDonnées) et si une gestion de l'intégrité doit être réalisée, une erreur de droit est affichée.
    • Pour effectuer un contrôle automatique des doublons, il suffit de préciser la constante hVérifieDoublons. Cette constante permet d'activer la gestion des doublons pendant l'exécution de la requête. Si une erreur de doublons est détectée, la requête n'est pas exécutée. En effet, une transaction est démarrée, les enregistrements sont bloqués en écriture pendant l'exécution de la requête et débloqués à la fin de son exécution, que la requête échoue ou non. Si l'application est arrêtée pendant l'exécution de la requête (coupure de courant par exemple), la transaction sera annulée à la prochaine utilisation des fichiers de données de la requête.
      Note : Si une erreur de doublons est détectée lors de l'exécution d'une requête de type UPDATE, la fonction HExécuteRequête renvoie Faux et le traitement continue. L'erreur correspondante peut être connue grâce à la fonction HErreurInfo.
      Remarque : L'assistance automatique par défaut n'est pas appelée pour les erreurs de doublons. Une simple erreur de doublons est générée. Si une assistance a été redéfinie à l'aide de la fonction HSurErreur, alors cette assistance personnalisée est appelée.
      HFSQL Client/Serveur Si la constante hVérifieDoublons n'est pas spécifiée, la gestion des doublons est débranchée. Or si l'utilisateur n'a pas les droits pour débrancher la gestion des doublons (fonction HModifieDroitBaseDeDonnées) et si une gestion de doublons doit être réalisée, une erreur de droit est affichée.
  • Les requêtes de type UPDATE, DELETE ou INSERT n'existent que pendant leur exécution. Il n'est pas possible d'utiliser une fonction WLangage sur ce type de requête après son exécution.
  • Les requêtes de type DELETE ne gèrent pas les suppressions en cascade.
  • Versions 18 et supérieures
    Lors de l'exécution d'une requête de type INSERT/UPDATE/DELETE sur des fichiers de données HFSQL, il est possible de connaître le nombre d'enregistrements ayant été ajoutés, modifiés ou supprimés grâce à la variable H.NbEnregRequêteModification.
    Nouveauté 18
    Lors de l'exécution d'une requête de type INSERT/UPDATE/DELETE sur des fichiers de données HFSQL, il est possible de connaître le nombre d'enregistrements ayant été ajoutés, modifiés ou supprimés grâce à la variable H.NbEnregRequêteModification.
    Lors de l'exécution d'une requête de type INSERT/UPDATE/DELETE sur des fichiers de données HFSQL, il est possible de connaître le nombre d'enregistrements ayant été ajoutés, modifiés ou supprimés grâce à la variable H.NbEnregRequêteModification.
Composantes
WINDEVWEBDEV - Code ServeurEtats et Requêtes wd230hf.dll
Windows Mobile wp230hf.dll
Java wd230java.jar
Linux wd230hf.so
Android wd230android.jar
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire