PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

  • Lecture des données lors de l'initialisation
  • Texte de la requête SQL
  • Exécuter une requête SQL paramétrée
  • Injection SQL : Comment s'en prémunir ?
  • Jointures
  • Pourquoi utiliser la constante hRequêteSansCorrection ?
  • Condition sur une clé composée dans une requête SQL
  • Requêtes sur des fichiers de données HFSQL
  • Optimisation pour exécuter plusieurs fois une même requête (Accès natifs Oracle et SQL Server uniquement)
  • Spécifier et récupérer des valeurs lors de l'exécution d'une requête (cas des procédures stockées)
  • Requêtes SQL (fonction HExécuteRequêteSQL ou exécution de requêtes SQL créées par l'éditeur de requêtes)
  • Parcours des requêtes (fonction HLitPremier)
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
Initialise une requête écrite en langage SQL et déclare cette requête au moteur HFSQL. Cette requête peut correspondre :
  • au code SQL saisi directement dans la fonction HExécuteRequêteSQL.
  • 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 re-calculé.
Fonctionnalité spécifique à HFSQL : Les requêtes SQL exécutées sur des bases de données HFSQL Classic, Mobile ou Client/Serveur peuvent contenir des fonctions WLangage. Pour plus de détails, consultez Utiliser une fonction WLangage dans une requête SQL.
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 saisie dans la fonction HExécuteRequêteSQL, utilisez :
Remarque : une requête ne pourra pas être initialisée si :
  • le nom de la requête est déjà utilisée 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.
Versions 16 et supérieures
Java Cette fonction est désormais disponible pour les applications Java.
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 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.
Nouveauté 16
Java Cette fonction est désormais disponible pour les applications Java.
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 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.
Java Cette fonction est désormais disponible pour les applications Java.
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 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.
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.
ReqClient est une Source de Données
// Initialisation de la requête "Client"
HExécuteRequêteSQL(ReqClient, "SELECT NOM FROM CLIENT")
ReqTache est une Source de Données
// Initialisation de la requête "ReqTache"
// Cette requête utilise une fonction WLangage
// Cette requête sélectionne les tâches de plus de 5 jours
HExécuteRequêteSQL(ReqTache, ...
"SELECT Tâche.Libellé FROM Tâche " +...
"WHERE WL.DateDifférence(Tâche.DateDébut, Tâche.DateFin) > 5")
// Modification dynamique de la condition LIMIT d'une requête SQL

REQ est une Source de Données

sMaReq est une chaîne = [
SELECT * FROM
CODEPOSTAUX
%1
]

sMaReq = ChaîneConstruit(sMaReq, "LIMIT 1, 10")
SI PAS HExécuteRequêteSQL(REQ, hRequêteDéfaut, sMaReq) ALORS
Erreur(HErreurInfo())
SINON
Info("La requête contient " + HNbEnr(REQ) + " enregistrements.")
FIN
Syntaxe

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

<Résultat> = HExécuteRequêteSQL(<Nom de la requête> [, <Mode>] , <Texte de la requête en SQL>)
<Résultat> : Booléen
  • Vrai si l'initialisation de la requête SQL a été effectuée,
  • Faux dans le cas contraire. La fonction HErreurInfo 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) ou Source de données
  • Nom de la requête qui va être exécutée. Ce nom permet de manipuler par programmation le résultat de <Texte de la requête en SQL>. 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 de la variable de type Requête SQL contenant le code SQL de la requête. Dans ce cas, le paramètre <Texte de la requête en SQL> ne doit pas être précisé.
    PHP Ce type de variable n'est pas disponible.
    Nouveauté 23
    Nom de la variable de type Requête SQL contenant le code SQL de la requête. Dans ce cas, le paramètre <Texte de la requête en SQL> ne doit pas être précisé.
    PHP Ce type de variable n'est pas disponible.
    Nom de la variable de type Requête SQL contenant le code SQL de la requête. Dans ce cas, le paramètre <Texte de la requête en SQL> ne doit pas être précisé.
    PHP Ce type de variable n'est pas disponible.
<Mode> : Constante optionnelle de type Entier
Option pour l'initialisation de la requête :
hAvecFiltre
(constante 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, l'utilisation de la constante hModifieFichier est automatique.
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 disponibles 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 disponibles pour les bases de données SQLite.
iPhone/iPadWindows MobileJavaPHP Cette constante n'est pas disponible.
hModifieFichier
(constante 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 disponibles 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
OLE 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 suivante ne peut pas être utilisée sur la requête manipulée : HFiltre.
  • 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.
Universal Windows 10 App Cette constante n'est pas disponible.
hSansBind
Accès Natifs SQL Server, Oracle, Sybase : Permet d'exécuter une requête sans que le bind soit activé.
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.
hSQLUnicode
Windows Mobile Permet de spécifier que le texte de la requête doit être envoyé sous forme Unicode au serveur.
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 disponibles 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 disponibles 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.
Versions 16 et supérieures
Java Accès par JDBC : Ce paramètre peut prendre uniquement la valeur hRequêteDéfaut. Si une autre constante est utilisée, une erreur est générée.
AndroidWidget Android Ce paramètre peut prendre uniquement la valeur hRequêteDéfaut. Si une autre constante est utilisée, une erreur est générée.
Nouveauté 16
Java Accès par JDBC : Ce paramètre peut prendre uniquement la valeur hRequêteDéfaut. Si une autre constante est utilisée, une erreur est générée.
AndroidWidget Android Ce paramètre peut prendre uniquement la valeur hRequêteDéfaut. Si une autre constante est utilisée, une erreur est générée.
Java Accès par JDBC : Ce paramètre peut prendre uniquement la valeur hRequêteDéfaut. Si une autre constante est utilisée, une erreur est générée.
AndroidWidget Android Ce paramètre peut prendre uniquement la valeur hRequêteDéfaut. Si une autre constante est utilisée, une erreur est générée.
<Texte de la requête en SQL> : Chaîne de caractères (avec guillemets)
Texte de la requête SQL à exécuter. Ce texte peut correspondre à une chaîne de caractères au format ANSI ou au format Unicode.
Versions 16 et supérieures
AndroidWidget AndroidJava Il n'est pas possible d'exécuter des requêtes dont le code SQL contient des fonctions WLangage.
Nouveauté 16
AndroidWidget AndroidJava Il n'est pas possible d'exécuter des requêtes dont le code SQL contient des fonctions WLangage.
AndroidWidget AndroidJava Il n'est pas possible d'exécuter des requêtes dont le code SQL contient des fonctions WLangage.
PHP Ce paramètre peut prendre uniquement la valeur hRequêteDéfaut. Si une autre constante est utilisée, une erreur est générée.
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 SQL via une connexion Masquer les détails

<Résultat> = HExécuteRequêteSQL(<Nom de la requête> [, <Connexion> [, <Mode>]] , <Texte de la requête en SQL>)
<Résultat> : Booléen
  • Vrai si l'initialisation de la requête SQL a été effectuée,
  • Faux dans le cas contraire. La fonction HErreurInfo 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) ou source de données
  • Nom de la requête qui va être exécutée. Ce nom permet de manipuler par programmation le résultat de <Texte de la requête en SQL>. 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 de la variable de type Requête SQL contenant le code SQL de la requête. Dans ce cas, le paramètre <Texte de la requête en SQL> ne doit pas être précisé.
    PHP Ce type de variable n'est pas disponible.
    Nouveauté 23
    Nom de la variable de type Requête SQL contenant le code SQL de la requête. Dans ce cas, le paramètre <Texte de la requête en SQL> ne doit pas être précisé.
    PHP Ce type de variable n'est pas disponible.
    Nom de la variable de type Requête SQL contenant le code SQL de la requête. Dans ce cas, le paramètre <Texte de la requête en SQL> ne doit pas être précisé.
    PHP Ce type de variable n'est pas disponible.
<Connexion> : Chaîne de caractères optionnelle ou variable de type connexion
Nom de la connexion utilisée pour exécuter la requête. Cette connexion a été définie sous l'éditeur d'analyses ou par programmation avec la fonction HDécritConnexion ou HOuvreConnexion ou alors en spécifiant les propriétés de la variable de type connexion. Si ce paramètre ne correspond pas à une connexion existante, <Résultat> est à Faux.
<Mode> : Constante optionnelle de type Entier
Option pour l'initialisation de la requête :
hAvecFiltre
(constante 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, l'utilisation de la constante hModifieFichier est automatique.
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 disponibles 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 disponibles pour les bases de données SQLite.
iPhone/iPadWindows MobileJavaPHP Cette constante n'est pas disponible.
hModifieFichier
(constante 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 disponibles 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
OLE 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 suivante ne peut pas être utilisée sur la requête manipulée : HFiltre.
  • 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.
Universal Windows 10 App Cette constante n'est pas disponible.
hSansBind
Accès Natifs SQL Server, Oracle, Sybase : Permet d'exécuter une requête sans que le bind soit activé.
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.
hSQLUnicode
Windows Mobile Permet de spécifier que le texte de la requête doit être envoyé sous forme Unicode au serveur.
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 disponibles 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 disponibles 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.
Versions 16 et supérieures
Java Accès par JDBC : Ce paramètre peut prendre uniquement la valeur hRequêteDéfaut. Si une autre constante est utilisée, une erreur est générée.
AndroidWidget Android Ce paramètre peut prendre uniquement la valeur hRequêteDéfaut. Si une autre constante est utilisée, une erreur est générée.
Nouveauté 16
Java Accès par JDBC : Ce paramètre peut prendre uniquement la valeur hRequêteDéfaut. Si une autre constante est utilisée, une erreur est générée.
AndroidWidget Android Ce paramètre peut prendre uniquement la valeur hRequêteDéfaut. Si une autre constante est utilisée, une erreur est générée.
Java Accès par JDBC : Ce paramètre peut prendre uniquement la valeur hRequêteDéfaut. Si une autre constante est utilisée, une erreur est générée.
AndroidWidget Android Ce paramètre peut prendre uniquement la valeur hRequêteDéfaut. Si une autre constante est utilisée, une erreur est générée.
<Texte de la requête en SQL> : Chaîne de caractères (avec guillemets)
Texte de la requête SQL à exécuter. Ce texte peut correspondre à une chaîne de caractères au format ANSI ou au format Unicode.
Versions 16 et supérieures
AndroidWidget AndroidJava Il n'est pas possible d'exécuter des requêtes dont le code SQL contient des fonctions WLangage.
Nouveauté 16
AndroidWidget AndroidJava Il n'est pas possible d'exécuter des requêtes dont le code SQL contient des fonctions WLangage.
AndroidWidget AndroidJava Il n'est pas possible d'exécuter des requêtes dont le code SQL contient des fonctions WLangage.
PHP Ce paramètre peut prendre uniquement la valeur hRequêteDéfaut. Si une autre constante est utilisée, une erreur est générée.
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, ...), 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).
Pour accéder aux rubriques de la requête, il faut déclarer une variable de type Source de données (voir Exemple). La requête est alors libérée automatiquement lorsque la variable est détruite. Pour forcer la libération des ressources de cette requête, utilisez :

Texte de la requête SQL

Si un nom de fichier de données ou un nom de rubrique contient des espaces, il est nécessaire d'entourer ces noms par des crochets dans le texte de la requête. Par exemple :
SELECT [Mon Fichier1].MaRubrique, [Mon Fichier1].[Ma rubrique1], MonFichier2.[Ma clé1]
FROM [Mon Fichier1], MonFichier2
WHERE [Mon Fichier1].[Ma clé1] = MonFichier2.[Ma clé1]

Exécuter une requête SQL paramétrée

Une requête SQL peut contenir des paramètres. Pour exécuter ce type de requête SQL avec la fonction HExécuteRequêteSQL, il faut :
  1. Dans le texte de la requête SQL, définir les différents paramètres en utilisant la notation {Nom du paramètre}. Par exemple :
    "SELECT * FROM client WHERE nom={p_nom}"
  2. Définir une variable de type Source de données. Le nom de cette variable doit correspondre au paramètre <Nom de la requête> de la fonction HExécuteRequêteSQL.
    Exemple :
    MaRequête est une Source de Données
  3. Spécifier la valeur des paramètres, via la syntaxe suivante :
    <Variable Source de données>.<Nom Paramètre1> = xxx
    <Variable Source de données>.<Nom Paramètre2> = xxx
    <Variable Source de données>.<Nom Paramètre3> = xxx

    Exemple :
    MaRequête.p_nom = "Dupont"
  4. Exécuter la requête SQL avec la fonction HExécuteRequêteSQL. Exemple :
    HExécuteRequêteSQL(MaRequête, "SELECT * FROM client WHERE nom={p_nom}")
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.

Injection SQL : Comment s'en prémunir ?

L'injection SQL est une technique de piratage consistant à injecter du code SQL dans les paramètres des requêtes, forçant ainsi l'exécution de code SQL non désiré.
Pour éviter l'injection SQL lors de l'exécution de requêtes via la fonction HExécuteRequêteSQL, il est nécessaire d'utiliser des requêtes paramétrées et de ne pas concaténer des chaînes pour construire la requête.
Exemple :
// Construction de la requête par concaténation
// -> faille de sécurité
sdReq est une Source de Données
HExécuteRequêteSQL(sdReq, "SELECT * FROM client WHERE nom = '" + SAI_Nom + "'")
// Utilisation de paramètres dans la requête
// -> code sûr et sécurisé
sdReq est une Source de Données
sdReq.p_nom = SAI_Nom
HExécuteRequêteSQL(sdReq, "SELECT * FROM client WHERE nom={p_nom}")
L'utilisation de paramètres permet de ne pas interpréter le contenu comme étant du code SQL. Cette technique rend donc impossible l’injection de code SQL et élimine de nombreux risques de piratage.
Accès Natifs

Jointures

Les jointures du type (A join B on x=y) join C on y=z ... ne sont pas gérées automatiquement par les Accès Natifs : il faut utiliser dans ce cas la constante hRequêteSansCorrection pour gérer ce type de jointure.
Remarque : Ces jointures sont gérées par le moteur HFSQL.
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 :
  • réalisées via un Accès Natif,
  • réalisées sur OLEDB et sur ODBC via le provider OLE DB.
Pour que la requête ne soit pas interprétée, utilisez la constante hRequêteSansCorrection.
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ée par la base de données utilisée.
Par exemple, les dates sont au format 'AAAAMMJJ' sous WINDEV et WEBDEV 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.
Accès Natifs Cas particulier : Oracle et SQL Server : Si la requête à exécuter contient un script avec ":param" (Oracle) ou "@param" (SQL Server), il faut utiliser la combinaison de constantes hRequêteSansCorrection + hSansBind pour que la requête ne soit pas interprétée.

Condition sur une clé composée dans une requête SQL

Pour définir une condition sur une clé composée dans une requête SQL, il faut préciser les conditions de chacune des composantes de la clé.
Il ne faut pas tenter d'affecter directement la clé composée avec une valeur (en effet, les clés composées sont enregistrées sous forme de valeur binaire).
Exemple : La clé composée des rubriques NOM et PRENOM (rubrique NOMPRENOM) :
SELECT MonFichier.MaRubrique, MonFichier.MaRubrique1
FROM MonFichier
WHERE NomFichier.Nom = "Dupont" AND NomFichier.Prénom = "Florence"
WINDEVWEBDEV - Code ServeurEtats et RequêtesiPhone/iPadWindows MobileUniversal Windows 10 AppPHPAjaxCode Utilisateur (MCU)Langage ExterneHFSQLHFSQL Client/ServeurHyper File 5.5

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.
  • Lors de l'exécution d'une requête de type INSERT sur des fichiers de données HFSQL, il est possible de connaître l'identifiant automatique attribué au nouvel enregistrement grâce à la syntaxe <Nom Fichier>.<Nom Rubrique Identifiant automatique>.
  • Si les fichiers de données manipulés par la requête ne sont pas présents dans l'analyse, il est nécessaire de déclarer ces fichiers dynamiquement au préalable avec la fonction HDéclareExterne. Dans le cas contraire, une erreur du type Initialisation de la requête impossible. Fichier NOMFICHIER inconnu apparaîtra. Exemple :
    // Paramètres de la connexion
    cnxBase est une Connexion
    cnxBase..Provider = hAccèsHFClientServeur
    cnxBase..Serveur = "SERVEURHYPERFILESQL:4900"
    cnxBase..BaseDeDonnées = "Base"
    cnxBase..Utilisateur = "admin"
    cnxBase..MotDePasse = ""

    // Connexion à la base
    SI HOuvreConnexion(cnxBase) = Faux ALORS
    Erreur(HErreurInfo())
    RETOUR
    FIN

    // Déclaration dynamique du (ou des) fichier(s) utilisé(s) dans la requête
    SI HDéclareExterne("CLIENT.FIC", "CLIENT", cnxBase) = Faux ALORS
    Erreur(HErreurInfo())
    RETOUR
    FIN

    // Exécution de la requête
    sdRequeSQL est une Source de Données
    SI PAS HExécuteRequêteSQL(sdRequeSQL, cnxBase, hRequêteDéfaut,[
    SELECT *
    FROM CLIENT
    ]) ALORS
    Erreur("Problème d'exécution")
    SINON
    Info("ok")
    FIN

    // Annule la déclaration dynamique du fichier
    HAnnuleDéclaration("CLIENT")

    // Ferme la connexion à la base
    HFermeConnexion(cnxBase)
  • 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.
WINDEVWEBDEV - Code ServeurEtats et RequêtesWindows MobilePHPAjaxCode Utilisateur (MCU)Accès Natifs

Optimisation pour exécuter plusieurs fois une même requête (Accès natifs Oracle et SQL Server uniquement)

Pour optimiser l'exécution d'une requête plusieurs fois, vous pouvez :
  1. Déclarer une source de données. Cette source de données contiendra le résultat de la requête SQL.
  2. Déclarer les différents paramètres ou variables de la requête.
    Par défaut, les paramètres sont de type chaîne. Il est possible de préciser leur type en utilisant la propriété ..Type.
    Attention : Pour préciser le type d'une variable de la requête, il est également possible d'affecter cette variable avec une variable existante du type voulu.
  3. Préparer la requête avec la fonction HPrépareRequêteSQL.
  4. Indiquez la valeur du ou des différents paramètres à prendre en compte et exécuter la requête à l'aide de la fonction HExécuteRequêteSQL. Seul le nom de la source de données correspondant à la requête doit être spécifié.
Cette dernière étape doit être répétée autant de fois que nécessaire.
Exemple :
// Exécution d'une même requête sous Oracle
// Déclaration d'une source de données
// Cette source de données correspond à la requête.
Insert1 est une Source de Données
// Déclaration d'un des paramètres de la requête
// Le type de ce paramètre est un entier
Insert1.age = 0
i est un entier
// Préparation de la requête pour de multiples exécutions
HPrépareRequêteSQL(Insert1, MaConnexion, ...
hRequêteSansCorrection, ...
"INSERT INTO PERSONE VALUES (:nom, :prenom, :age )")
// Boucle d'exécution de la requête
// Seuls quelques paramètres sont modifiés
POUR i = 1 A 10
Insert1.nom = "Nom" + i
Insert1.prenom = "Prenom" + i
Insert1.age = i
HExécuteRequêteSQL(Insert1)
FIN
WINDEVWEBDEV - Code ServeurEtats et RequêtesWindows MobilePHPCode Utilisateur (MCU)Accès Natifs

Spécifier et récupérer des valeurs lors de l'exécution d'une requête (cas des procédures stockées)

Remarque : Cette note ne s'applique qu'aux accès natifs Oracle et SQL Server.
Pour spécifier et récupérer des valeurs lors de l'exécution d'une requête, il faut :
  1. Déclarer une source de données. Cette source de données contiendra le résultat de la requête SQL.
  2. Déclarer les différentes variables de la requête (variables d'entrées et variables de sorties).
    Par défaut, les variables sont de type chaîne. Il est possible de préciser leur type en utilisant la propriété ..Type.
    Attention : Pour préciser le type d'une variable de la requête, il est également possible d'affecter cette variable avec une variable existante du type voulu.
  3. Exécuter la requête à l'aide de la fonction HExécuteRequêteSQL.
// Exemple pour Oracle
// Déclaration de la source de données associée à la requête
MaProc est une Source de Données
// Déclaration des variables
MaProc.n = 3
MaProc.str = "Exemple"
// Exécution de la requête avec récupération du résultat
HExécuteRequêteSQL(MaProc, MaConnexion, hRequêteSansCorrection, ...
"begin :Res :=sp_cut(:n,:str);end;")
// Affichage du résultat
Info(MaProc.Res)
Remarques
  • La fonction HExécuteRequêteSQL doit être utilisée avec :
    • le nom de la connexion,
    • la constante hRequêteSansCorrection.
  • Les variables déclarées dans la requête doivent être identiques à celles utilisées dans le code de la procédure stockée. Dans le cas contraire, une erreur WLangage est affichée.
  • Dans l'appel à la procédure stockée, il est nécessaire d'utiliser la syntaxe spécifique à la base de données utilisée, y compris pour les paramètres.
    Ainsi, pour Oracle, les paramètres sont spécifiés avec la syntaxe :NomParam. Attention : Le caractère ":" doit être suivi d'au moins une lettre (la syntaxe :1 est interdite).
    Pour SQL Server, les paramètres sont spécifiés avec la notation @NomParam.
    Il est possible d'utiliser plusieurs fois le même paramètre. Dans ce cas, la variable correspondante sera ré-utilisée.
  • Pour exécuter une requête sans que le bind ne soit activé, utiliser la constante hNoBind dans la fonction HExécuteRequêteSQL.
WINDEVWEBDEV - Code ServeurEtats et RequêtesiPhone/iPadWindows MobileUniversal Windows 10 AppPHPAjaxCode 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.
WINDEVWEBDEV - Code ServeurEtats et RequêtesiPhone/iPadWindows MobileUniversal Windows 10 AppPHPAjaxCode Utilisateur (MCU)Langage ExterneHFSQLOLE DBAccès Natifs

Parcours des requêtes (fonction HLitPremier)

  • Par défaut, la fonction HLitPremier ré-exécute la requête pour rafraîchir le résultat de la requête. Il est conseillé d'utiliser la constante hSansRafraichir pour éviter la ré-exécution de la requête.
  • Parcours d'une requête exécutée avec l'option hRequêteSansCorrection :
    Pour parcourir les enregistrements dans l'ordre renvoyé par la base de données, il n'est pas nécessaire de préciser de rubrique de parcours. Exemple :
    HLitPremier("MaRequête", hSansRafraîchir)

    Si une rubrique de parcours est spécifiée, le résultat de la requête est intégralement récupéré et indexé. Le parcours est alors réalisé sur la rubrique spécifiée. Le tri initial de la requête (spécifié par ORDER BY) est ignoré. L'index créé (au format HFSQL) est sensible à la casse, sensible à la ponctuation, sensible aux accents et ascendant.
    Exemple :
    HLitPremier("MaRequête", "MaRubrique", hSansRafraîchir)

    Les recherches utilisent l'index créé sur le résultat de la requête.
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
Format des dates pour MySql
Conditions sur les dates type timestamp dans les requetes MySql : AAAAMMJJHHMNSS entre guillemets simples.
Ne pas utiliser le format AAAA-MM-JJ HH:MN:SS qui ne fonctionne pas.
roland
26 juin 2010