PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

  • Exécution de la requête
  • Récupération du résultat de la requête
  • Requête de type INSERT
  • Gestion des mémos texte
  • Gestion des mémos binaires
  • Requête SQL (fonction SQLExec ou requêtes créées par l'éditeur de requêtes)
  • Comparaison de la syntaxe avec HExécuteRequêteSQL
  • SQLExec et les threads
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
Nomme et exécute une requête SQL.
Attention : La fonction SQLExec ne lance pas le traitement de récupération du résultat en mémoire. La récupération du résultat est effectuée lors du premier appel à l'une des fonctions suivantes : SQLPremier, SQLTable ou SQLFetch.
Remarque : Pour manipuler un mémo binaire dans une requête, utilisez le mot-clé WDMemoBinaire dans le texte de votre requête (pour plus de détails, consultez les remarques). Remarque : A partir de la version 19, HFSQL est le nouveau nom de HyperFileSQL.
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.
WINDEVCode Utilisateur (MCU)HFSQLHFSQL Client/ServeurHyper File 5.5OLE DBODBCConnecteurs Natifs (Accès Natifs)
// Exécuter la requête et récupérer le résultat ligne à ligne
i est un entier = 0
SQLExec("SELECT NOM, PRENOM, POSTE, PHOTO FROM CLIENT", "REQ1")
TANTQUE SQLAvance("REQ1") = 0  // Il y a encore une ligne à lire
i++
// Récupérer les données
NOM[i] = SQLLitCol("REQ1", 1)
PRENOM[i] = SQLLitCol("REQ1", 2)
POSTE[i] = SQLLitCol("REQ1", 3)
{"IMAGE"+i} = SQLLitMémo("REQ1", 4)
FIN
SQLFerme("REQ1")
Syntaxe

Exécuter une requête SQL Masquer les détails

<Résultat> = SQLExec(<Texte de la requête en SQL> , <Nom de la requête>)
<Résultat> : Booléen
  • Vrai si la requête a été exécutée,
  • Faux dans le cas contraire. Si la requête n'a pas été exécutée, le message d'erreur peut être connu grâce à la variable SQL.MesErreur, après l'exécution de la fonction SQLInfoGene.
<Texte de la requête en SQL> : Chaîne de caractères (entre guillemets)
Code SQL de la requête à exécuter.
<Nom de la requête> : Chaîne de caractères (entre guillemets)
Nom associé au texte de la requête. Correspond :
  • soit au nom logique de la requête.
  • soit au nom et au chemin complet de la requête (fichier ".WDR").
Java Le nom de la requête correspond uniquement au nom logique de la requête.
Remarques

Exécution de la requête

Les informations concernant l'exécution de la requête peuvent être connues grâce à la fonction SQLInfoGene. La variable SQL.NbCol contient le nombre de colonnes du résultat de la requête.
Après son exécution et son traitement, la requête doit être libérée grâce à la fonction SQLFerme.

Récupération du résultat de la requête

Le résultat de la requête peut être :
  • Transféré dans une table ou une liste (fonction SQLTable).
  • Transféré dans des champs ou des variables (fonction SQLAssocie).
  • Récupéré ligne par ligne (fonction SQLFetch).
WINDEVCode Utilisateur (MCU)HFSQLHFSQL Client/Serveur

Requête de type INSERT

Lors de l'exécution d'une requête de type INSERT, la variable SQL.IdAuto contient l'identifiant automatique ajouté lors du précédent INSERT.
WINDEVCode Utilisateur (MCU)HFSQLHFSQL Client/ServeurHyper File 5.5OLE DBODBCConnecteurs Natifs (Accès Natifs)

Gestion des mémos texte

Dans le paramètre <Texte de la requête>, un mémo texte s'utilise comme une variable texte. Par exemple :
// Requête avec condition sur un mémo texte dont la valeur est "Bon client"
TexteRequête = "SELECT NOMCLI FROM CLIENT WHERE MEMOCLIENT = 'Bon client'"
SQLExec(TexteRequête, "REQ1")
WINDEVJavaCode Utilisateur (MCU)ODBCConnecteurs Natifs (Accès Natifs)

Gestion des mémos binaires

Pour écrire un mémo binaire dans une table (avec un ordre SQL UPDATE ou INSERT), il faut utiliser la syntaxe suivante dans le texte de la requête :
{WDMemoBinaire('<NomFichier>' [,'Fichier']}
où :
  • Fichier (valeur par défaut) indique que le mémo est un mémo binaire (issu d'un fichier).
  • WDMemoBinaire est un mot réservé.
  • <NomFichier> est le nom physique d'un fichier.
{WDMemoBinaire('<NomFichier>' [,'FichierTexte']}
où :
  • FichierTexte indique que le mémo est un mémo texte (issu d'un fichier).
  • WDMemoBinaire est un mot réservé.
  • <NomFichier> est le nom physique d'un fichier.
Par exemple :
// Insertion du fichier C:\PHOTO\DUPONT.BMP dans un mémo binaire
TexteRequête = "INSERT INTO CLIENT VALUES ('DUPONT', 'Jean'," + ...
"{WDMemoBinaire('C:\PHOTO\DUPONT.BMP')})"
SQLExec(TexteRequête, "REQ1")
// Insertion du fichier C:\DOC\LETTRE.TXT dans un mémo texte
TexteRequête = "INSERT INTO CLIENT VALUES ('DUPUIS', 'Christophe'," + ...
"{WDMemoBinaire('C:\DOC\LETTRE.TXT', 'FichierTexte')})"
SQLExec(TexteRequête, "REQ1")
Remarque : L'insertion de mémos binaires sur un fichier HFSQL avec les fonctions SQL n'est pas possible et provoque une erreur. Le message d'erreur est le suivant : "Initialisation de la requête impossible. Caractère {WDMemBinaire( inattendu".
WINDEVCode Utilisateur (MCU)HFSQLHFSQL Client/ServeurHyper File 5.5

Requête SQL (fonction SQLExec ou requêtes créées par l'éditeur de requêtes)

Lors de l'utilisation des instructions SQL DELETE, INSERT ou UPDATE, aucun contrôle d'intégrité et aucun contrôle de doublons ne sont réalisés sur une base de données HFSQL. Cette fonctionnalité n'est pas disponible dans cette version.
Solution : Utilisez les fonctions HFSQL (HSupprime, HAjoute ou HModifie) sur vos fichiers de données. Le contrôle de l'intégrité et le contrôle des doublons seront automatiquement réalisés.
Remarque : Les fonctions HExécuteRequête et HExécuteRequêteSQL permettent de vérifier l'intégrité et les doublons sur une base de données HFSQL.
WINDEVJavaCode Utilisateur (MCU)HFSQLHFSQL Client/ServeurHyper File 5.5OLE DBODBCConnecteurs Natifs (Accès Natifs)

Comparaison de la syntaxe avec HExécuteRequêteSQL

La fonction HExécuteRequêteSQL permet également d'exécuter une requête SQL. Les paramètres de ces deux fonctions sont identiques mais leur ordre est inversé : en effet, la fonction HExécuteRequêteSQL précise en premier le nom de la requête, puis le texte de la requête (utilisant ainsi la même norme que toutes les fonctions HFSQL).
La syntaxe de la fonction SQLExec est conservée pour compatibilité.

SQLExec et les threads

Lors de l'exécution de la fonction SQLExec dans un thread secondaire, la connexion utilisée doit être effectuée dans le même thread : la connexion ne peut pas être effectuée dans le thread principal (projet ou fenêtre). La connexion réalisée via la fonction SQLConnecte n'est pas partagée dans les autres threads.
Composante : wd240hf.dll
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Erreur dans la syntaxe
Il y a une erreur dans la syntaxe, il manque une parenthèse dans les explications mais elles y sont dans l'exemple

"{WDMemoBinaire('<NomFichier>' [,'Fichier']}"
Philippe SB
18 juil. 2018