DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / Editeurs / Editeur de requêtes / Requête paramétrée
  • Présentation
  • Utiliser la fonction HExécuteRequête pour passer les paramètres à une requête
  • Syntaxe à utiliser
  • Utiliser la notation .
  • Syntaxe à utiliser
  • Ne pas spécifier tous les paramètres
  • Paramètres de la requête non précisés
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
Deux méthodes pour passer des paramètres à une requête
Présentation
Pour passer des paramètres à une requête paramétrée utilisée dans une fenêtre ou dans un champ (par exemple champ Liste, Combo ou Table), le WLangage offre deux possibilités :
Cette page d'aide présente le mode d'utilisation et les avantages de chacune de ces méthodes.
Remarque : Si la requête paramétrée est utilisée dans un état, le mode de passage des paramètres varie. Pour plus de détails, consultez Comment utiliser une requête paramétrée dans un état.
Utiliser la fonction HExécuteRequête pour passer les paramètres à une requête

Syntaxe à utiliser

Lors de l'exécution d'une requête avec la fonction HExécuteRequête, les derniers paramètres passés à la fonction correspondent aux paramètres de la requête.
La syntaxe utilisée est la suivante :
<Résultat> = HExécuteRequête(<Nom requête> [, <Connexion>] [, <Mode> [, <Paramètres> [, ...]]])

Attention : Dans ce cas :
  • Les valeurs des paramètres de la requête doivent être indiquées 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.
  • Pour spécifier les paramètres de la requête, il est nécessaire de spécifier le mode d'initialisation de la requête.
Utiliser la notation <Nom de la requête>.<Nom du paramètre>

Syntaxe à utiliser

Pour passer des paramètres à une requête, il est possible de préciser au moteur HFSQL tous les paramètres de la requête avant d'exécuter la requête. Cette méthode permet de préciser les différents paramètres dans n'importe quel ordre (intéressant pour les requêtes nécessitant de nombreux paramètres).
La syntaxe à utiliser est la suivante :
<Nom de la requête>.<Nom du paramètre 1> = <Valeur du paramètre 1>
<Nom de la requête>.<Nom du paramètre 2> = <Valeur du paramètre 2>
...
<Nom de la requête>.<Nom du paramètre N> = <Valeur du paramètre N>

<Résultat> = HExécuteRequête(<Nom de la requête>
[, <Connexion>] [, <Mode>])

Attention :
  • Le nom du paramètre doit être le nom spécifié lors de la création de la requête sous l'éditeur de requête. Ce nom doit être différent d'un nom de rubrique.
  • Il n'est pas possible d'utiliser d'opérateurs d'indirection ou la compilation dynamique (fonction Compile) avec cette syntaxe.
  • A chaque exécution de la requête avec la fonction HExécuteRequête, les paramètres sont ré-initialisés (remis à 0).
  • Si au moins un paramètre est spécifié dans la fonction HExécuteRequête, tous les paramètres spécifiés précédemment seront ignorés.
  • La valeur du paramètre peut correspondre à NULL.
  • Si un des paramètres n'est pas précisé, la condition correspondante ne sera pas prise en compte.
Ne pas spécifier tous les paramètres

Paramètres de la requête non précisés

Quelle que soit la façon de passer les paramètres à la requête, 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 "REQ_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é. Le nom doit cependant être spécifié et correspondre à NULL.
    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'
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
La valeur du paramètre peut correspondre à NULL.
Si un paramètre = Null, Alors il est ignoré, en SELECT mais aussi en UPDATE

Mais alors comment faire un SET Field = NULL ?
Comment passer NULL dans un paramètre ?

Car
UPDATE Fichier
SET Field = {param}
avec {param} = Null ne fait rien
Alexis
11 juin 2020

Dernière modification : 25/05/2022

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