DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Gestion des bases de données / Fonctions SQL
  • Fonctions SQLCol et SQLLitCol : différents types de parcours
  • Ligne en cours de la requête
  • Requête sans résultat
  • Utilisation de tabulations dans les rubriques
  • Récupération de rubriques de type Float sur Oracle (via ODBC)
  • Gestion des espaces à la fin des rubriques texte
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
Récupère le contenu de la colonne spécifiée dans le résultat de la requête, pour la ligne en cours.
Attention : Cette fonction doit être utilisée lors d'un parcours du résultat de la requête de type SQLPremier/SQLCol. Pour plus de détails sur les différents types de parcours du résultat d'une requête SQL, consultez Types de parcours SQL.
Exemple
ResExec = SQLExec("SELECT NOMCLI FROM FACT", "REQ1")
SI ResExec = Vrai ALORS
SQLPremier("REQ1")
// Transfert du nom dans LISTE_NOM
TANTQUE PAS SQL.EnDehors
ListeAjoute(LISTE_NOM, SQLCol("REQ1", 1))
SQLSuivant("REQ1")
FIN
SINON
// TraiteErreur
FIN
SQLFerme("REQ1")
Syntaxe
<Résultat> = SQLCol(<Nom de la requête> , <Numéro de la colonne>)
<Résultat> : Chaîne de caractères
Valeur de la colonne.
<Nom de la requête> : Chaîne de caractères
Nom de la requête :
  • créée et exécutée avec la fonction SQLExec,
  • exécutée avec la fonction SQLExecWDR.
<Numéro de la colonne> : Entier
Numéro de la colonne à récupérer. Cette colonne correspond à une colonne de la requête (et non pas à une colonne de la table). L'ordre des numéros de colonne à récupérer n'a aucune importance.
Remarques

Fonctions SQLCol et SQLLitCol : différents types de parcours

Les fonctions SQLCol et SQLLitCol sont équivalentes lors d'un accès OLE DB ou HFSQL. Il faut cependant respecter le type de parcours associé à chacune de ces fonctions :
  • Fonction SQLCol : parcours de type "SQLPremier/SQLCol".
  • Fonction SQLLitCol : parcours de type "SQLAvance/SQLLitCol".
Pour plus de détails sur ces deux types de parcours, consultez Types de parcours SQL.

Ligne en cours de la requête

Pour se positionner sur une ligne de la requête, utilisez une des fonctions suivantes : SQLPremier, SQLSuivant, SQLPrécédent, SQLDernier ou SQLPositionne.

Requête sans résultat

La fonction SQLCol ne doit pas être appelée si la requête n'a pas renvoyé de résultat : il faut tester la variable SQL.EnDehors après s'être positionné dans le résultat de la requête et avant d'appeler la fonction SQLCol.
Par exemple :
// Récupération de la valeur de la 1ère colonne du 1er enregistrement
Valeur est une chaîne
TexteRequête est une chaîne
TexteRequête = "SELECT NOMCLI, ADR1, ADR2, VILLE, CP FROM FACT"
SQLExec(TexteRequête, "REQ1")
Valeur = SQLCol("REQ1", 1)

Utilisation de tabulations dans les rubriques

Les fonctions SQL permettent d'insérer des tabulations dans les rubriques des fichiers. La gestion des tabulations dépend du mode d'accès utilisé.
1er cas : Exécution d'une requête en ODBC :
  • Lors de l'exécution d'une requête en ODBC, les tabulations ne sont pas récupérées par la fonction SQLCol. Pour récupérer les valeurs des rubriques (avec les caractères TAB), il est conseillé d'utiliser un parcours du type SQLAvance/SQLLitCol.
  • Lors de l'exécution d'une requête ODBC, les espaces situés à la fin de la valeur des rubriques sont retirés. Pour garder tous les espaces, il est conseillé d'utiliser un parcours du type SQLAvance/SQLLitCol.
Exemple : SQLAssocie et les tabulations dans les rubriques
Les rubriques des enregistrements à récupérer sont les suivantes :
Rubrique 1Rubrique 2
Enregistrement 1JohnSmith
Enregistrement 2John + tab + MacDoughnut
Pour le premier enregistrement :
  • SQLCol(Req1, 1) : récupère John
  • SQLCol(Req1, 2) : récupère Smith
Pour le second enregistrement :
  • SQLCol(REQ,1 ) : récupère John
  • SQLCol(REQ, 2) : récupère Mac, mais Mac ne correspond pas à la valeur de la seconde rubrique
  • SQLCol(REQ, 3) : récupère Doughnut, valeur de la seconde rubrique
2ème cas : Exécution d'une requête par OLEDB, HFSQL ou Connecteur Natif
Les tabulations présentes dans les rubriques résultat sont automatiquement récupérées par la fonction SQLCol.
WINDEVWEBDEV - Code ServeurEtats et RequêtesPHPAjaxODBC

Récupération de rubriques de type Float sur Oracle (via ODBC)

Par défaut, le séparateur décimal utilisé pour les rubriques de type Float sur Oracle est le point. Or le driver ODBC renvoie la valeur avec en utilisant la virgule comme séparateur décimal. Lors de l'affectation de la valeur dans un champ de type numérique, les décimales sont perdues.
Pour éviter ce problème, il suffit de configurer le séparateur décimal pour la connexion en cours :
// Connexion Ã  la base de données Oracle
SQLConnecte("MaBaseOracle", "User", "Passe", "", "ODBC") 
// Requête pour changer le séparateur décimal
SQLExec("ALTER SESSION SET NLS_NUMERIC_CHARACTERS ='. '", "ReqTemp")
WINDEVWEBDEV - Code ServeurEtats et RequêtesPHPAjaxODBC

Gestion des espaces à la fin des rubriques texte

La gestion des espaces à la fin des rubriques récupérées dépend du mode d'accès utilisé :
  • Connecteurs Natifs SQLServer, ORACLE, AS400, SyBase, et accès aux données HFSQL Client/Serveur ou HFSQL Classic : les espaces sont automatiquement retirés en fin de rubrique.
  • Connecteurs Natifs Access, MySQl, MariaDB, Informix, DB2, Progress, PostgreSQL, SQLite, ODBC ou OleDB : les espaces en fin de rubrique sont conservés.
Astuce : Pour ne pas conserver les espaces à droite dans tous les cas, il est possible de surcharger la fonction en déclarant une procédure globale :
PROCÉDURE SQLCol(source, indice)
RENVOYER SansEspace(WL.SQLCol(source, indice), sscDroite)
Composante : wd290hf.dll
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 25/05/2022

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