DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Gestion des bases de données / Fonctions SQL
  • Ligne en cours de la requête
  • Colonnes de la requête
  • Requête sans résultat
  • Utilisation de tabulations dans les rubriques
  • Fonctions SQLCol et SQLLitCol
  • Récupération de rubriques de type Float sur Oracle (via ODBC)
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 "SQLAvance/SQLLitCol". 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
i est un entier = 0
SQLExec("SELECT NOM, PRENOM, POSTE, PHOTO FROM CLIENT", "REQ1")
// Récupérer la requête ligne à ligne
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)
FIN
SQLFerme("REQ1")
Syntaxe
<Résultat> = SQLLitCol(<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 ou exécutée avec la fonction SQLExecWDR.
Java Les requêtes créées avec l'éditeur de requête doivent être spécifiées sous forme d'une chaîne de caractères avec guillemets.
<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). Si plusieurs colonnes doivent être récupérées, l'indice des colonnes doit être donné dans l'ordre croissant. Par exemple, il faut faire SQLCol("REQ1", 1) puis SQLCol("REQ1", 2).
Java Les colonnes peuvent être récupérées dans n'importe quel ordre.
Remarques

Ligne en cours de la requête

La ligne en cours est positionnée par la fonction SQLFetch.

Colonnes de la requête

  • Pour lire les colonnes de type mémo, utilisez la fonction SQLLitMémo. Pour lire les colonnes de type mémo texte, utilisez la fonction SQLLitMémoTexte.

  • Le nombre de colonnes du résultat de la requête est connu grâce à la variable SQL.NbCol (affectée par la fonction SQLInfoGene).
  • Si la colonne est de type numérique, la fonction SQLLitCol convertit le résultat en une chaîne de caractères. Il est toutefois possible en WLangage d'affecter le résultat retourné par la fonction SQLLitCol dans une variable de type numérique. Le WLangage effectue automatiquement la conversion.
  • Les colonnes doivent impérativement être récupérées par ordre de numéro croissant.
    Java Les colonnes peuvent être récupérées dans n'importe quel ordre.
  • La même colonne ne peut pas être récupérée plusieurs fois à la suite. En effet, la seconde fois, le résultat récupéré sera une chaîne vide.
  • SQLLitCol ne permet pas de récupérer des chaînes binaires.

Requête sans résultat

La fonction SQLLitCol 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 SQLLitCol.
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 = SQLLitCol("REQ1", 1)

Utilisation de tabulations dans les rubriques

Les fonctions SQL permettent d'insérer des tabulations dans les rubriques des fichiers.
Pour récupérer les valeurs des rubriques (avec les caractères TAB), il est conseillé d'utiliser un parcours du type SQLFetch/SQLLitCol.
Exemple : Fonction SQLLitCol 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 :
  • SQLLitCol(REQ, 1) : récupère John
  • SQLLitCol(REQ, 2) : récupère Smith
Pour le second enregistrement :
  • SQLLitCol(REQ,1 ) : récupère John + tab + Mac
  • SQLLitCol(REQ, 2) : récupère Doughnut
WINDEVWindowsJavaCode Utilisateur (MCU)HFSQL ClassicHFSQL Client/ServeurHyper File 5.5OLE DB

Fonctions SQLCol et SQLLitCol

Les fonctions SQLCol et SQLLitCol sont équivalentes lors d'un accès à des données via 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.
WINDEVWindowsJavaCode Utilisateur (MCU)ODBC

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")
Composante : wd300hf.dll
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 31/05/2024

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